Command |
PAGE |
|
|
Description |
Create a Page or Group of entities.
Pages contain entities to be shown on the display plus functions that
will run as a
background task only on that page. Entities are listed so that they
are layered from back to front. Create the style and declare the page
before using the SHOW(PageName); command.
|
|
|
Syntax/Parameters |
PAGE(Name,Style)
{
..,//Page Contents
} |
|
|
Style |
The style defines the page size, position and background.
STYLE(stPage,Page) //create a style name and define as type
Page
{
update=all; //define page refresh method with ;; options: 'all' or
'changed'
sizeX=480; //specify width of page 1 to 3* LCD width
sizeY=272; //specify height of page 1 to 3* LCD height
posX=0; //specify the absolute X position of page
on screen. -4 * LCD width to 4 * LCD width
posY=0; //specify the absolute Y position of page
on screen. -4 * LCD height to 4 * LCD height
back=black; //specify background colour of page as hex \\000000 to
\\FFFFFF or colour name
image=pageimg; //specify background image for the page using the entity
name used in the LIB command to store the image .
} |
|
|
Options |
Page Refreshing v47.00
A new mode has been added
for pages which allows for either:
- all entities to be redrawn on a page when a double semicolon (;;)
refresh is encountered (default),
- only the entities that have
been modified since last refresh to be redrawn when a double semicolon (;;)
is encountered.
A
SHOW(page);
command will always redraw all the entities on a page.
STYLE(name,PAGE) {
update=all; }
// default: refreshes all entities on a
;;
STYLE(name,PAGE) {
update=changed; }
// refreshes only changed entities on a
;;
Page Merging - v37.00
LOAD(Page1,Page2,Page3,…); will copy all entities from Page2 into Page1, then Page3 into Page 1, then Page4 into Page 1.
Pop-Up Pages - v49.03
Page style parameter "type=popUp;" or "type=p;" added to define a page as a pop-up.
Default is "type=normal;" or "type=n;" for non-pop-up page.
This allows pages the same size as the screen to be defined as a pop-up.
Pages smaller than the screen size will still always be declared as pop-ups; the "type" parameter is ignored in this case.
Support for Pages Larger Than Screen Size - v49.43
* Added functionality to support pages defined greater than page
size. The posX and posY in the page style can be used to scroll the
page around.
STYLE(stPg,PAGE){sizeX=960;}
LOAD(stPg.posX,-480);; // Show right half of page
* Modified page style so that only sizeX or sizeY needs to be defined
(the other size defaults to the screen size). Previously both sizeX
and sizeY needed to be defined to override the default page size.
Order Page Layers PAGE(name){ent1;ent2;...} - v49.46
* Implemented Page re-ordering functionality.
* Use the PAGE(name) command with no style specified.
* The parameters are:
entName; // Specify the entity on the page
entName,action; // Specify the entity plus the action to perform.
* The format and parameters are:
PAGE(pgName)
{
ent0,u; // up - move entity one place forward
ent1,d; // down - move entity one place backward
ent2,f; // first - move entity to the first position (the front)
ent3,l; // last - move entity to the last position (the back)
ent4,b; // below - move entity behind previous entity in list (ent3)
ent5,a; // above - move entity in front of previous entity in list
(ent4)
}
The second 'action' parameter is optional, and defaults to 'b' - below
with the first one in the list defaulting to 'f', the top.
PAGE(pgName)
{
ent0; // 'f'
ent1; // 'b'
ent2; // 'b'
ent3; // 'b'
}
In the above, ent0 will appear at the top with ent1 behind ent0, ent2
behind ent1, and ent3 behind ent2. Any other entities on the page
will then be shown behind these with their order unchanged.
PAGE(){} reordering parameters now use '=' separator - v49.47
For consistency with STYLE() and SETUP(), the PAGE(){} reordering
parameters now support '=' between the parameter name and
parameter type.
PAGE(name)
{
name=f;
name,f;
}Screen
Capture LOAD( SDHC, PAGE ); - v49.51
* Added TFT screen capture to Bitmap file on SD Card.
* Use LOAD(SDHC,PAGE);
* Files are stored in the "SDHC/page/" directory. If it does not exist
then it is created.
* Files are stored as "SDHC/page/pagename_num.bmp" where pagename is the
name of the page being displayed on the screen and num is an
incrementing number. eg if the page "pgTest" is being displayed then the
file will be "SDHC/page/pgTest_1.bmp". A second capture would create
"SDHC/page/pgTest_2.bmp".
* The stored bitmap takes into account the rotation of the screen.
* If there is enough free memory then a buffer is created and the
display memory is copied instantly to the buffer and this is saved to SD
card as a bitmap. This prevents screen updates modifying the required
screen capture. If there is not enough free memory then the actual
display memory is used and copied to SD card as a bitmap.
* Note, due to the large file sizes involved, writing the bitmap to the
SD card will take typically 5-7 secs on 3.5", 9-11 secs on 4.3", 23-26
secs 5.7" and 28-32 secs on 7" displays.
Using update=changed
To gain the faster refreshing, a few rules apply.
1/ Only the screen area where the changed entity is located is redrawn.
2/ The entity is redrawn on top of any existing pixels being displayed
in that area.
3/ Entities with transparent backgrounds will show all previous
rendering at that location in the transparent area.
4/ Hiding an entity will not produce any visible difference until a full
page refresh is performed.
To support the
“update=changed;” method.
1/ Do not use images with transparent backgrounds
2/ Specify the “back” colour in the style for text.
3/ To hide an entity, a “masking” image will need to be placed over the
entity.
4/ To refresh only the entities on a page that have been modified, use
the double semi-colon “;;” refresh method after the last update object,
e.g. IMG(imgt1,myimg );;.
5/ To refresh the whole page, use the SHOW( page ); method. |
|
|
Example |
PAGE(MainPage,stPage)
{
POSN( 200, 208 ); KEY( StopKey, StopEvent,
95, 95, TOUCH ); //call function StopEvent
POSN( 76, 252 ); KEY( SaveKey, SaveEvent, 62, 24, TOUCH );
//call function SaveEvent
POSN( +80, +0 ); KEY( CalibKey, CalibEvent, 62, 24, TOUCH );
/call function CalibEvent
POSN( +80, +0 ); KEY( ClockKey, [Show(Clock);], 62, 24, TOUCH );
//inline code to show clock
} |
|
|
Update Information |
Version |
Title |
Date |
Details |
00.14.00 |
Pop-Up Pages |
06 Oct 15 |
|
Fixed problem of background filling whole screen for pop-up pages.
|
|
49.58 |
PAGE |
07 Sep 15 |
|
* Reduced RAM consumption when a page has a fixed colour background
|
|
49.58 |
PAGE REFRESH |
07 Sep 15 |
|
* Page is no longer redrawn if same page is refreshed and page is still in the process of being drawn
|
|
00.01.00 |
Faster alpha blending of entities |
13 Feb 15 |
|
Improvements have been made to alpha-blending 32-bit entities onto the screen.
Results on a 480x272 module: * Test using box with border width 8px, width 480px, height 80px Screen Rotated 0: was 40.0-40.2ms; now 26.4-26.6ms Screen Rotated 180: was 40.0-41.8ms; now 26.4-27.2ms * Test using box with border width 8px, width 272px, height 150px Screen Rotated 90: was 46.8-47.0ms; now 30.8-31.0ms Screen Rotated 270: was 46.8-47.0ms; now 30.8-31.0ms * Test using "rotating coin" within the confines of the screen Screen Rotated 0: was 7.4-12.0ms; now 6.4-7.4ms Screen Rotated 180: was 7.4-12.0ms; now 6.4-7.4ms Screen Rotated 90: was 7.4-12.2ms; now 6.4-7.8ms Screen Rotated 270: was 7.4-12.2ms; now 6.4-7.8ms * Test using "rotating coin" partially outside of the screen area Screen Rotated 0: was 7.2-11.6ms; now 6.2-7.2ms Screen Rotated 180: was 7.2-11.6ms; now 6.2-7.2ms Screen Rotated 90: was 12.6-17.4ms; now 6.4-7.8ms Screen Rotated 270: was 7.2-11.8ms; now 6.4-7.8ms
|
|
00.01.00 |
Page background corrupted when screen rotated |
13 Feb 15 |
|
---
|
|
00.01.00 |
Faster page background rendering (using Pixel Pipeline) |
13 Feb 15 |
|
Enable hardware pixel pipeline to speed up page refresh.
|
|
49.52 |
Built-In Styles - Parameters Are Optional |
25 Feb 14 |
|
Modified "built-in" styles to make parameters optional. Simply miss out the parameter between the underscores.
TEXT(txt4,"",DST___128__CC); // Create Text with only maxLen and curRel changed from defaults PAGE(pg3,DSP__libBg){...} // Create Page with only image changed from defaults; DRAW(dr4,40,40,DSD_B__RED__BR); // Create Draw, type = box; only specifiying some parameters KEY(key2,func,100,100,DSK_C____TL); // Create Key, action = change; curRel = TL
|
|
49.51 |
SHOW() and HIDE() Groups of Entities |
18 Feb 14 |
|
Added array of pointer support to SHOW() and HIDE() commands. This allows for groups of entities to be shown and hidden on a page by passing the single name for the array of pointers.
VAR(group>"",PTR,3); LOAD(group.0>"img1"); LOAD(group.1>"text1"); LOAD(group.2>"shape1");
HIDE(group);; // Hide img1, text1, shape1 SHOW(group);; // Show img1, text1, shape1
Test code:
STYLE(stPage,PAGE){} STYLE(stCirc1,DRAW){type=circle;col=white;width=1;back=red;} STYLE(stCirc2,DRAW){type=circle;col=white;width=1;back=green;} STYLE(stCirc3,DRAW){type=circle;col=white;width=1;back=blue;} STYLE(stCirc4,DRAW){type=circle;col=white;width=1;back=yellow;} STYLE(stText,TEXT){ maxRows=4; ySpace=4; } STYLE(stBox,DRAW){type=box;col=lime;width=1;}
VAR(x,49,S32); VAR(y,49,S32);
PAGE(pgTest,stPage) { LOAD(x,49); LOAD(y,49); DRAW(circle1,80,stCirc1,x,y); CALC(x,DISPX,50,"-"); LOAD(y,50); DRAW(circle2,60,stCirc2,x,y); LOAD(x,90); CALC(y,DISPY,90,"-"); DRAW(circle3,150,stCirc3,x,y); CALC(x,DISPX,70,"-"); CALC(y,DISPY,70,"-"); DRAW(circle4,100,stCirc4,x,y);
CALC(x,DISPX,2,1,"/-"); CALC(y,DISPY,2,1,"/-"); DRAW(box1,DISPX,DISPY,stBox,x,y); TEXT(text1,"",stText,x,y); KEY(key1,fncKey1,DISPX,DISPY,TOUCH,x,y); } LOAD(text1, "Vers: ",VERS_IAPP,"\\0d\\0a", "Width: ",DISPX,"px\\0d\\0a", "Height: ",DISPY,"px\\0d\\0a", "Rotate: ",DISPR,"deg" ); SHOW(pgTest);
VAR(toggle,0,U8); VAR(group>"",PTR,4); LOAD(group.0>"circle1"); LOAD(group.1>"circle2"); LOAD(group.2>"circle3"); LOAD(group.3>"circle4");
FUNC(fncKey1) { //IF(toggle==0?[LOAD(toggle,1);HIDE(circle1,circle2,circle3,circle4);;]:[LOAD(toggle,0);SHOW(circle1,circle2,circle3,circle4);;]); IF(toggle==0?[LOAD(toggle,1);HIDE(group);;]:[LOAD(toggle,0);SHOW(group);;]); }
|
|
49.51 |
Built-In TEXT, PAGE, DRAW, and IMAGE Styles |
10 Feb 14 |
|
A larger range of "default" styles has been added.
The built-in styles are prefixed by four characters as follows: * Text Styles are prefixed by "DST_" * Page Styles are prefixed by "DSP_" * Draw Styles are prefixed by "DSD_" * Image Styles are prefixed by "DSI_"
The styles are not created at start up. The style is only created the first time it is referenced from the users' project.
The style are created from the parameters within the style name itself, ie the colour black is taken from the actual name DSP_BLACK, so DSP_PINK would create a colour pink. These colours are from the colour table on the website.
Here are the rules/examples for each
Add a default TEXT style DST_ DST_col DST_col_fnt DST_col_fnt_len DST_col_fnt_len_row DST_col_fnt_len_row_cur Where col = 'col' name or 3-digit hex or 6-digit hex (see "Colours" below) fnt = 'font' 8, 16, 32 for Ascii8, Ascii16, Ascii32 or font name (see "Fonts" below) len = 'maxLen' row = 'maxRows' cur = 'curRel' Examples TEXT(txt1,"Hello",DST_BLACK_16); // Create Text, colour = black; font = built-in Ascii16; TEXT(txt2,"",DST_F30_fnt32_8_4); // Create Text, colour = \\FF3300, font = fnt32; maxLen = 8; maxRows = 4 TEXT(txt3,"",DST_RED_F32_8_4_TL); // Create Text, colour = \\FF3300, font = F32; maxLen = 12; maxRows = 4; curRel = TL
Add a default PAGE style DSP_ DSP_col DSP_col_img Where col = 'col' name or 3-digit hex or 6-digit hex (see "Colours" below) img = 'image' image name Examples PAGE(pg1,DSP_BLACK){…} // Create Page, back = black; PAGE(pg2,DSP_AB0056_libBg){…} // Create Page, back = \\AB0056, image = libBg;
Add a default DRAW style DSD_ DSD_typ DSD_typ_wid DSD_typ_wid_col DSD_typ_wid_col_fil DSD_typ_wid_col_fil_cur Where typ = 'type' of shape (best to use the single letter here) wid = 'width' of border col = 'col' colour of border (see "Colours" below) fil = 'back' colour of fill (see "Colours" below) cur = 'curRel' Examples DRAW(dr1,100,20,DSD_BOX); // Create Draw, type = box; DRAW(dr2,120,DSD_C_2_RED); // Create Draw, type = circle; width = 2; border colour = red; DRAW(dr3,60,40,DSD_B_1_RED_FD0_TL,20,40); // Create Draw, type = box; width = 1; border = red; back = \\FFDD00; curRel = TL;
Add a default IMAGE style DSI_ DSI_cur Where cur = 'curRel' Examples IMG(img1,libImg1,DSI_TL); // Create Image, curRel = TL;
The only limitations to this method is that the style name needs to fit within the 18 character entity name limit.
Colours Where the styles take a colour for a parameter, then the value can be represented in one of three ways. * The name of the colour can be specified as in the colour chart on the website, eg BLACK, BLUE, GOLD etc * A 6 digit hexadecimal number can be used, eg 123ABC which converts to \\123ABC * A 3 digit hexadecimal number can be used, eg FD0 which converts to \\FFDD00
Fonts Where the style takes a font for a parameter, then one of two options are assumed. * If the value is either 8, 16, or 32 then the built-in fonts Ascii8, Ascii16 or Ascii32 are used * Otherwise the value is assumed to be the name of a font loaded by the LIB command, eg fnt64 from LIB(fnt64,"SDHC/name.fnt");
Examples from testing:
PAGE(p1,DSP_){} STYLE(DSP_,PAGE){}
PAGE(p2,DSP_BLACK){} STYLE(DSP_BLACK,PAGE){back=BLACK;}
PAGE(p3,DSP_FD0){} STYLE(DSP_FD0,PAGE){back=\\FFDD00;}
PAGE(p4,DSP_ABC123){} STYLE(DSP_ABC123,PAGE){back=\\ABC123;}
LIB(Im1,"SDHC/page/pgMain_1.bmp"); PAGE(p5,DSP_000_Im1){} STYLE(DSP_000_Im1,PAGE){back=\\000000;image=Im1;}
PAGE(p6,DSP_blue_Im1){} STYLE(DSP_blue_Im1,PAGE){back=blue;image=Im1;}
IMG(i1,Im1,DSI_); STYLE(DSI_,IMAGE){}
TEXT(t1,"",DST_); STYLE(DST_,TEXT){}
TEXT(t2,"",DST_BLACK); STYLE(DST_BLACK,TEXT){col=BLACK;}
TEXT(t3,"",DST_blue_32); STYLE(DST_blue_32,TEXT){col=blue;font=Ascii32;}
LIB(Fnt16,"SDHC/asc_16b.fnt"); TEXT(t4,"Hello",DST_red_Fnt16); STYLE(DST_red_Fnt16,TEXT){col=red;font=Fnt16;}
TEXT(t5,"Hi",DST_fd0_Fnt16,4,5); STYLE(DST_fd0_Fnt16,TEXT){col=\\ffdd00;font=Fnt16;}
DRAW(d1,100,DSD_); STYLE(DSD_,DRAW){}
DRAW(d2,200,DSD_C); STYLE(DSD_C,DRAW){type=C;}
DRAW(d3,100,50,DSD_B); STYLE(DSD_B,DRAW){type=B;}
DRAW(d4,30,40,DSD_B_2); STYLE(DSD_B_2,DRAW){type=B;width=2;}
DRAW(d5,120,DSD_C_1_red); STYLE(DSD_C_1_red,DRAW){type=C;width=1;col=red;}
DRAW(d6,30,40,DSD_B_2_Red_Blue); STYLE(DSD_B_2_Red_Blue,DRAW){type=B;width=2;col=Red;back=Blue;}
DRAW(d7,10,30,0,140,DSD_E_20_FD0_FFF,30,30); STYLE(DSD_E_20_FD0_FFF,DRAW){type=E;width=20;col=\\FFDD00;back=\\FFFFFF;}
|
|
49.51 |
Screen Capture LOAD( SDHC, PAGE ); |
06 Feb 14 |
|
* Added TFT screen capture to Bitmap file on SD Card. * Use LOAD(SDHC,PAGE); * Files are stored in the "SDHC/page/" directory. If it does not exist then it is created. * Files are stored as "SDHC/page/pagename_num.bmp" where pagename is the name of the page being displayed on the screen and num is an incrementing number. eg if the page "pgTest" is being displayed then the file will be "SDHC/page/pgTest_1.bmp". A second capture would create "SDHC/page/pgTest_2.bmp". * The stored bitmap takes into account the rotation of the screen. * If there is enough free memory then a buffer is created and the display memory is copied instantly to the buffer and this is saved to SD card as a bitmap. This prevents screen updates modifying the required screen capture. If there is not enough free memory then the actual display memory is used and copied to SD card as a bitmap. * Note, due to the large file sizes involved, writing the bitmap to the SD card will take typically 5-7 secs on 3.5", 9-11 secs on 4.3", 23-26 secs 5.7" and 28-32 secs on 7" displays.
|
|
49.47 |
PAGE(){} reordering parameters now use '=' separator |
01 Nov 13 |
|
For consistency with STYLE() and SETUP(), the PAGE(){} reordering parameters now support '=' between the parameter name and parameter type.
PAGE(name) { name=f; name,f; }
|
|
49.46 |
Order Page Layers PAGE(name){ent1;ent2;...} |
23 Oct 13 |
|
* Implemented Page re-ordering functionality. * Use the PAGE(name) command with no style specified. * The parameters are: entName; // Specify the entity on the page entName,action; // Specify the entity plus the action to perform. * The format and parameters are: PAGE(pgName) { ent0,u; // up - move entity one place forward ent1,d; // down - move entity one place backward ent2,f; // first - move entity to the first position (the front) ent3,l; // last - move entity to the last position (the back) ent4,b; // below - move entity behind previous entity in list (ent3) ent5,a; // above - move entity in front of previous entity in list (ent4) }
The second 'action' parameter is optional, and defaults to 'b' - below with the first one in the list defaulting to 'f', the top.
PAGE(pgName) { ent0; // 'f' ent1; // 'b' ent2; // 'b' ent3; // 'b' }
In the above, ent0 will appear at the top with ent1 behind ent0, ent2 behind ent1, and ent3 behind ent2. Any other entities on the page will then be shown behind these with their order unchanged.
|
|
49.43 |
Support for Pages Larger Than Screen Size |
12 Sep 13 |
|
* Added functionality to support pages defined greater than page size. The posX and posY in the page style can be used to scroll the page around. STYLE(stPg,PAGE){sizeX=960;} LOAD(stPg.posX,-480);; // Show right half of page * Modified page style so that only sizeX or sizeY needs to be defined (the other size defaults to the screen size). Previously both sizeX and sizeY needed to be defined to override the default page size.
|
|
49.42 |
Page Memory Savings |
06 Sep 13 |
|
* When a page just consists of a background colour or an image the size of the page then memory the size of the page is no longer allocated. * If the page background contains an image less than the page size, then memory will be allocated, the area filled with the background colour and the image copied into the centre as it currently does.
This means that the following memory can be saved, if just a background colour is specified: 3.5" – 307,200 bytes per page 4.3" – 522,240 bytes per page 5.7" – 1,228,800 bytes per page 7.0" – 1,536,000 bytes per page
|
|
49.37 |
POSN in DRAW, IMG, TEXT and KEY Commands |
10 Jun 13 |
|
* Added initial positioning to commands: a) DRAW(name,width,style,x,y); DRAW(name,width,height,style,x,y); DRAW(name,width,height,start,arc,style,x,y); b) IMG(name,src,style,x,y); c) TEXT(name,text,style,x,y); d) KEY(name,func,width,height,style,x,y); KEY(name,downFunc,upFunc,width,height,style,x,y); KEY(name,downFunc,upFunc,repFunc,width,height,style,x,y);
|
|
49.34 |
Parser - Fixed problem with passing page creation parameters between functions. |
23 Feb 13 |
|
Parser * Fixed problem with passing page creation parameters between functions which caused entities to not be displayed.
|
|
49.32 |
Internal Message Items - Increased nesting depth/loops/functions from 24 to 28. |
14 Feb 13 |
|
* Increased nesting depth/loops/functions from 24 to 28. * Current number of used msg items can be read in S32 Variable SYSINTMSG.
|
|
49.14 |
Page Backgrounds - Fixed problem rendering page background images not equal to screen size. |
27 Jul 12 |
|
* Fixed problem rendering page background images not equal to screen size.
|
|
49.14 |
Opacity - Corrected problem with assigning initial opacity value to text, images, draw, pages. |
27 Jul 12 |
|
* Corrected problem with assigning initial opacity value to text, images, draw, pages.
|
|
49.08 |
Not Function Error - Fixed error which was due to a pointer error when changing/refreshing a page without page loop |
11 Jul 12 |
|
Fixed "Not Function" Error which was due to a pointer error when changing/refreshing a page without page loop. This problem could cause other unexplained errors. This bug was present in the code from before V00.47.24.
|
|
49.03 |
Pop-Up Pages - Page style parameter ''type=popUp;'' or ''type=p;'' added to define a page as a pop-up. |
01 Jun 12 |
|
Page style parameter "type=popUp;" or "type=p;" added to define a page as a pop-up. Default is "type=normal;" or "type=n;" for non-pop-up page. * This allows pages the same size as the screen to be defined as a pop-up. * Pages smaller than the screen size will still always be declared as pop-ups; the "type" parameter is ignored in this case.
|
|
49.03 |
LOOP() - ''Array Error - Subscript Out Of Range'' message |
01 Jun 12 |
|
"Array Error - Subscript Out Of Range" message At the start of each pass through a loop, a check is performed to see if a touch screen key is being pressed and, if it is, then the associated touch key function is called. Caution must be observed with the touch key function to not modify variables that are being used within the loop otherwise undesired results can occur which can be difficult to spot or result in an error message.* Example 1 - Variables VAR( varX, 0, U8 ); // We have a simple function... FUNC( fnTest1 ) { LOAD( varX, 0 ); LOOP( lpTest1, 10 ) { // [Touch Keys are effectively tested here] LOAD( RS2, varX ); CALC( varX, varX, 1, "+" ); } }
// In a page we have... KEY( kyTest1, [ LOAD( varX, 0 ); ], 100, 100, TOUCH ); // Normally we would get 0123456789 sent out of the RS2 port each time fnTest1 is run // If however the key kyTest1 is pressed when the loop is being run then the output may be changed to 0123012345!
* Example 2 - Arrays VAR( varArr, 0, U8, 5 ); VAR( varY, 0, U8 ); // We have another simple function... FUNC( fnTest2 ) { LOAD( varY, 0 ); LOOP( lpTest2, 5 ) { // [Touch Keys are effectively tested here] LOAD( RS2, varArr.varY ); CALC( varY, varY, 1, "+" ); } }
// In a page we have... KEY( kyTest2, [ LOAD( varY, 0 ); ], 100, 100, TOUCH ); KEY( kyTest3, [ LOAD( varY, 3 ); ], 100, 100, TOUCH );
// Normally we would get the contents of varArr.0 varArr.1 varArr.2 varArr.3 varArr.4 sent out of the RS2 port each time fnTest2 is run // If however the key kyTest2 is pressed when the loop is being run then the output may be changed to varArr.0 varArr.1 varArr.0 varArr.1 varArr.2! // Or, an error when kyTest3 is pressed giving varArr.0 varArr.1 varArr.3 varArr.4 ** Array Error - Subscript Out Of Range ** (ie varArr.5 doesn't exist!)
* Good coding practice > Make sure variables used in a loop are not modified from a touch key function (unless this is a desired action) > If a variable does need to be changed then set a 'flag' in the key function and test the flag in the page loop and make the change there instead.
|
|
49.00 |
Pages Redraw - Modified behaviour of pages with update=changed. |
22 Mar 12 |
|
Modified behaviour of pages with update=changed so that longer redraw time is removed for first refresh
|
|
47.24 |
Loops - Loop duration of ''FOREVER'' now accepted for all loops (not just page loop). |
31 Oct 11 |
|
Loop duration of "FOREVER" now accepted for all loops (not just page loop) * Touch screen events are processed every loop.
|
|
47.24 |
Exit() - end loops and functions - Exit command added to exit loops or functions |
31 Oct 11 |
|
Exit command added to exit loops or functions > exit(); // exit current loop/function > exit(name); // exit nested loops/functions up to and including loop/function with name * Examples: > loop(lp1,FOREVER){ calc(x,y,z,"+"); if(x=5?[exit(lp1);]); } // exit loop when x=5 > loop(lp2,FOREVER){ calc(x,y,z,"+"); if(x=5?[exit(lp2);]); } // exit loop when x=5 (as above) > func(fn1) { if(x=5?[exit(fn1);]); ...... } // exits function when x=5 without running rest of code > func(fn2) { loop(lp3,100){ load(rs2,"*"); if(quit=1?[exit(fn2);;]); // sends 100 *'s through RS2 unless quit is set to 1, then loop and the function are exited (A screen refresh occurs before the exit)
* Note, if the name provided in the exit(name); command does not exist in the current function/loop nesting, then all loops and functions are exited up to the top level. It is not possible to exit the page loop in this way.
|
|
47.00 |
Page Refreshing - A new mode has been added for pages. |
09 Jul 11 |
|
A new mode has been added for pages which allows for either All entities to be redrawn on a page when a double semicolon (;;) refresh is encountered (default), or Only the entities that have been modified since last refresh to be redrawn when a double semicolon (;;) is encountered. A SHOW(page); command will always redraw all the entities on a page. STYLE(name,PAGE) { update=all; } // default: refreshes all entities on a ;; STYLE(name,PAGE) { update=changed; } // refreshes only changed entities on a ;;
|
|
45.00 |
Update Page - Unused page removed from system to save page worth of memory. |
10 Jun 11 |
|
Unused page removed from system to save page worth of memory.
|
|
45.00 |
Pointers - Fixed a potential pointer issue in the main page loop. |
10 Jun 11 |
|
Fixed a potential pointer issue in the main page loop.
|
|
45.00 |
Loops - Added capability for nested loops and loops in functions. |
10 Jun 11 |
|
Added capability for nested loops and loops in functions Loop Example 1 var(ii,0,U8); var(jj,0,U8); var(kk,0,U8); func(fn1) { load(ii,0); loop(lp0,10) { load(jj,0) loop(lp1,10) { load(kk,0); loop(lp2,10) { load(rs2,ii,",",jj,",",kk,"\\0d\\0a"); calc(kk,kk,1,"+"); } calc(jj,jj,1,"+"); } calc(ii,ii,1,"+"); } load(rs2,"\\0d\\0a"); }
Outputs: 0,0,0\\0d\\0a0,0,1\\0d\\0a0,0,2\\0d\\0a...9,9,9\\0d\\0a\\0d\\0a
Loop Example 2
key(k0,[loop(klp,10){load(rs2,"*");}load(rs2,"\\0d\\0a");],480,136,TOUCH);
Outputs on key press: **********\\0d\\0a
|
|
42.00 |
Page Errors - The background fill routine now correctly fills all size pages. |
09 Mar 11 |
|
The background fill routine now correctly fills all size pages. Display and render buffers now guaranteed to align with DMA burst length (misalignment causes occasional pixel errors).
|
|
39.00 |
Interrupts - Serial interrupts INT() can now be declared either globally or locally to a page. |
21 Jan 11 |
|
Serial interrupts INT() can now be declared either globally (outside of a PAGE(){}) or locally to a page (inside a PAGE(){}). If an interrupt is declared within a page then it will only be called when the page is being shown. If an interrupt is declared outside of a page then it will be called no matter which page is being shown. There is a special case when the same interrupt source is declared both globally and within a page. In this case, the page interrupt takes precedence and the global interrupt is not called.
|
|
37.00 |
Page Rotation - Page rotation removed. Use screen rotation instead. |
13 Dec 10 |
|
Page rotation removed. Use screen rotation instead in SETUP(SYSTEM){rotate=180;}
|
|
37.00 |
Page Merging - LOAD(Page1,Page2,Page3,…);. |
13 Dec 10 |
|
LOAD(Page1,Page2,Page3,…); will copy all entities from Page2 into Page1, then Page3 into Page 1, then Page4 into Page 1
|
|
27.00 |
Smaller Pages / Pop Ups - Added popup pages. |
10 Sep 10 |
|
Added popup pages - ie smaller than 480 * 272. When smaller page is displayed SHOW(SmallPage); it is overlayed onto the existing page which is then ‘frozen’. Use SHOW(PREV_PAGE); to return.
|
|
25.00 |
POSN Command - Command now supports moving entities on the page. |
03 Sep 10 |
|
Command now supports moving entities on the page If Name is not a Page, the entity Name on the current page is moved to position x,y. If Name is a Page, the cursor is set to position x,y
POSN(x,y,Name); moves entity to x,y
|
|
21.00 |
FUNC LOOP - Allow single line FUNC(){} and LOOP(){} |
30 Jul 10 |
|
Allow single line FUNC(){} and LOOP(){} e.g. FUNC(Help) { SHOW (HelpPage); }
|
|
21.00 |
STYLE - Fixed error with default style initialization. |
30 Jul 10 |
|
Fixed error with default style initialization. Style parameter names for POSN, PAGE, TEXT, DRAW, IMAGE, KEY set up
|
|
|
|