//--------------------------------------------------------------------- // // Reach SLCD5 NEW Demo 2010 // 12-02-2010 // //--------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////// // POWERUP MACROS (optional touch cal, then goto MENU SCREEN) /////////////////////////////////////////////////////////////////////// #define power_on_loopback_demo // touch off // disable touch until we're ready // // start with optional touch calibration xbbs 255 // set max brightness, but don't change EEPROM setting bvs 255 // set max beep volume, but don't change EEPROM setting m clear f 24B set p0 `(`Xm`-20)` `(`Yc`-60)` set s0 "Touch screen to Calibrate" ta CB t "`s0`" 20 20 `p0` WW xs 128 0 0 `Xm` `Ym` // make whole screen a touch spot xm 128 do_touch_cal // attach the touch calibration macro // touch on // // do 5 second countdown at center of screen and goto MENU SCREEN // if countdown expires: set p0 `Xc` `Yc` set i0 5 m countdown_and_goto menu_screen #end #define do_touch_cal tc touch off // // goto MENU SCREEN after touch cal completes: m goto_macro menu_screen #end /////////////////////////////////////////////////////////////////////// // MENU SCREEN MACROS /////////////////////////////////////////////////////////////////////// #define menu_screen // touch off // disable touch until we're ready // m clear xi 4 0 0 // // Add "Features Demo" and "Macro Examples" hotspot-buttons f 24B // calc 2/3 Ymax Coord: set i2 `(`Ym`+1)` set i2 `(`i2`*2)` set i2 `(`i2`/3)` // get p0 and p1 for box centered in right half at 2/3 Ymax and // store in p2 and p3: m center_box_in_box 280 60 `Xc` `i2` `Xm` `Ym` set p2 `p0` set p3 `p1` // get p0 and p1 for box centered in left half at 2/3 Ymax m center_box_in_box 280 60 0 `i2` `Xc` `Ym` // draw both boxes in light gray: r `p0` `p1` 1 CCCCCC r `p2` `p3` 1 CCCCCC // label them in full blue: S 0000FF CCCCCC ta CC t "Feature Demos" `p0` `p1` N t "Macro Examples" `p2` `p3` N // draw black borders around them: S 000000 FFFFFF m draw_box_border `p0` `p1` m draw_box_border `p2` `p3` // create invisible hotspots behind them: xs 128 `p0` `p1` xs 129 `p2` `p3` // attach macros to them: xm 128 start_features xm 129 start_examples // touch on // enable touch // #end #define start_features set i9 1 m get_next_feature_demo:demo_`i9` m goto_macro `s9` #end #define start_examples set i9 1 m get_next_example:example_`i9` m goto_macro `s9` #end /////////////////////////////////////////////////////////////////////// // FEATURE DEMOS MACROS /////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------------- // Get the name of the next Features Demo macro to run // -- defines a virtual list of demo macros using var i9 and labels // -- var i9 is the number of the demo in this virtual list (1 = first) // -- sets var s9 to the macro's name // -- after the last demo has been executed, the next call will cause // the :default label to execute, which behaves the same as if the // call was made with the :demo_1 label //--------------------------------------------------------------------- #define get_next_feature_demo // // common section, executed on each call: set i9 `(`i9`+1)` // increment for next call // :demo_1 set s9 "hi_res_graphics_demo" // :demo_2 set s9 "prop_fonts_demo" // :demo_3 set s9 "mono_fonts_demo" // :demo_4 set s9 "external_fonts_demo" // :demo_5 set s9 "text_in_box_demo" // :demo_6 set s9 "data_visualize_demo" // :demo_7 set s9 "stripchart_demo" // :demo_8 set s9 "chart_data_break_demo" // :demo_9 set s9 "color_bars_demo" // :demo_10 set s9 "two_meter_demo" // :demo_11 set s9 "meter_with_band_demo" // :demo_12 set s9 "slider_control_demo" // :demo_13 set s9 "sliding_compass_demo" // :demo_14 set s9 "state_save_restore_demo" // :demo_15 set s9 "animation_demo" // :demo_16 set s9 "relative_touch_demo" // :demo_17 set s9 "portrait_demo" // :demo_18 set s9 "fast_drawing_demo" // :demo_19 set s9 "panel_alignment_demo" // :demo_20 set s9 "more_info_screen" // not really a demo, per se // :default // go back to demo 1 set i9 2 // same as for :demo_1 set s9 "hi_res_graphics_demo" // same as for :demo_1 #end //--------------------------------------------------------------------- // HIGH RESOLUTION GRAPHICS DEMO MACROS //--------------------------------------------------------------------- #define hi_res_graphics_demo // touch off // disable touch until we're ready // m clear xi 5 0 0 S F00 000 f 32B ta CT sc `Xc` 10 t "High Resolution Graphics\nDemo\n" T // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button_tr `s9` m home_button_tr menu_screen // touch on // enable touch // #end //--------------------------------------------------------------------- // PROPORTIONAL FONTS DEMO MACROS //--------------------------------------------------------------------- #define prop_fonts_demo // touch off // disable touch until we're ready // m clear m show_title "Built-In Proportional\nFonts Demo" set i8 `(`Ys`+20)` set i7 `(`H2`+20)` // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop on displaying fonts until user presses a button m center_box_on_screen 620 200 set p0 `p0.x` `i8` set p1 `p1.x` `(`Ym`-`i7`)` m draw_box_border `p0` `p1` m loop_prop_fonts #end #define loop_prop_fonts r `p0` `p1` 1 CCC S 000 CCC m show_font 8s m show_font 8Bs m show_font 8 m show_font 8B m show_font 10s m show_font 10Bs m show_font 10 m show_font 10B m show_font 12 m show_font 12B m show_font 14 m show_font 14B m show_font 16 m show_font 16B m show_font 20 m show_font 20B m show_font 24 m show_font 24B m show_font 32 m show_font 32B m show_font 48 m show_font 64 w 1500 :repeat #end //--------------------------------------------------------------------- // Shared with MONOSPACED FONTS DEMO //--------------------------------------------------------------------- #define show_font // set font, determine height: f `0` ta LT t "" 0 0 N set i0 `Ys` t "\n" N set i0 `(`Ys`-`i0`)` // scroll up: wvr `p1.y` k `p0` `p1` `i0`u // show font alias name and sample text: ta CB t "`0`: AaBbCc" `Xc` `p1.y` N w 500 #end //--------------------------------------------------------------------- // MONOSPACED FONTS DEMO MACROS //--------------------------------------------------------------------- #define mono_fonts_demo // touch off // disable touch until we're ready // m clear m show_title "Built-In Fixed Width\nFonts Demo" set i8 `(`Ys`+20)` set i7 `(`H2`+20)` // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop on displaying fonts until user presses a button m center_box_on_screen 620 200 set p0 `p0.x` `i8` set p1 `p1.x` `(`Ym`-`i7`)` m draw_box_border `p0` `p1` m loop_mono_fonts #end #define loop_mono_fonts r `p0` `p1` 1 CCC S 000 CCC m show_font m8 m show_font m8B m show_font m10 m show_font m10B m show_font m12 m show_font m12B m show_font m14 m show_font m14B m show_font m16 m show_font m16B m show_font m20 m show_font m20B m show_font m24 m show_font m24B m show_font m32 m show_font m32B m show_font m48 m show_font m64 w 1500 :repeat #end //--------------------------------------------------------------------- // EXTERNAL FONTS DEMO MACROS //--------------------------------------------------------------------- #define external_fonts_demo // touch off // // display area is 585 pixels wide; calc horz offset to center it: set i8 `(`Xm`-585)` set i8 `(`i8`/2)` // m clear m show_title "External Fonts Demo" ta LC sc `i8` `Ys` f 24B t "\n\n\nUTF8 Encoded UNICODE: " utf8 on // enable UTF8 test f CH48 // select downloaded font t "\xe4\xb8\x9c \xe4\xb8\x9a" utf8 off sc `i8` `Ys` f 24B t "\n\nSeven Segment 48pt: " f SEG48 t "123456" sc `i8` `Ys` f 24B t "\n\nCentury Bold 48pt: " f CEN48 t "Century" // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // #end //--------------------------------------------------------------------- // TEXT IN A BOX DEMO MACROS //--------------------------------------------------------------------- #define text_in_box_demo // touch off // disable touch until we're ready // m clear m show_title "Text In a Box Demo" // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // define corners of bounding box (340x340): m center_box_on_screen 340 340 // show the bounding box using a red, filled rectangle: r `p0.x` `p0.y` `p1.x` `p1.y` 1 F00 // draw a black border around bounding box: S 000 F00 m draw_box_border `p0` `p1` // "p#" is same as "p#.x p#.y" // set foreground (text) to white and background to red: S FFF F00 // set font and alignment f R18B // Rotatable 18pt Bold (external font) ta CT // show a message centered along each edge of the box: t "Text can be aligned," `p0.x` `p0.y` `p1.x` `p1.y` w 250 t "rotated, or wrapped" `p0.x` `p0.y` `p1.x` `p1.y` CW w 250 t "within a bounding" `p0.x` `p0.y` `p1.x` `p1.y` I w 250 t "rectangle (like this)." `p0.x` `p0.y` `p1.x` `p1.y` CCW w 250 // and show a message centered in a smaller bounding box: m make_box_smaller `p0.x` `p0.y` `p1.x` `p1.y` r `p0.x` `p0.y` `p1.x` `p1.y` 1 FFF S 000 FFF m draw_box_border `p0.x` `p0.y` `p1.x` `p1.y` S F00 FFF // red foreground (text), white background ta CC t "It can also be word wrapped and centered." `p0.x` `p0.y` `p1.x` `p1.y` WW S 000 FFF // black foreground (text), white background #end #define make_box_smaller set p0 `(`0`+80)` `(`1`+80)` set p1 `(`2`-80)` `(`3`-80)` #end //--------------------------------------------------------------------- // DATA VISUALIZATION DEMO MACROS //--------------------------------------------------------------------- #define data_visualize_demo // touch off // disable touch until we're ready // m clear m show_title "Data Visualization Demo" // 5 levelbars set i0 `(`Xc`-234)` m levelbar_init 0 `i0` 80 set i0 `(`i0`+106)` m levelbar_init 1 `i0` 80 set i0 `(`i0`+106)` m levelbar_init 2 `i0` 80 set i0 `(`i0`+106)` m levelbar_init 3 `i0` 80 set i0 `(`i0`+106)` m levelbar_init 4 `i0` 80 // 1 long chart (500 pixels long, centered horizontally) set i0 `(`Xm`-500)` set i0 `(`i0`/2)` set i1 `(`i0`+499)` cd 0 `i0` 280 `i1` 380 1 3 1 100 008 2 F00 2 0F0 2 FFF // put a black border around it: S 000 FFF m draw_box_border `i0` 280 `i1` 380 // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop on updating values until user presses button: m update_vis_data #end #define levelbar_init // define a vertical level bar of index `0` at X Y location `1` `2` ld `0` `1` `2` `(`1`+40)` `(`2`+160)` 0 0 1 888 100 F00 65 FF0 50 0F0 // put a black border around it: S 000 FFF m draw_box_border `1` `2` `(`1`+40)` `(`2`+160)` // set its initial value: lv `0` 0 #end #define update_vis_data // 1 w 100 lv 0 `R10:50` lv 1 `R20:60` lv 2 `R20:60` lv 3 `R20:60` lv 4 `R10:50` cv 0 `R10:20` `R40:60` `R80:100` // 2 w 100 lv 0 `R10:50` lv 1 `R40:80` lv 2 `R40:90` lv 3 `R20:80` lv 4 `R10:50` cv 0 `R10:30` `R30:50` `R60:90` // 3 w 100 lv 0 `R20:70` lv 1 `R40:60` lv 2 `R60:100` lv 3 `R20:60` lv 4 `R20:50` cv 0 `R20:40` `R40:60` `R60:80` // 4 w 100 lv 0 `R20:50` lv 1 `R20:60` lv 2 `R60:80` lv 3 `R20:60` lv 4 `R20:50` cv 0 `R20:30` `R30:60` `R70:80` // 5 w 100 lv 0 `R30:50` lv 1 `R20:100` lv 2 `R40:100` lv 3 `R20:100` lv 4 `R30:50` cv 0 `R10:30` `R50:80` `R70:100` // 6 w 100 lv 0 `R40:80` lv 1 `R20:100` lv 2 `R40:100` lv 3 `R20:100` lv 4 `R40:80` cv 0 `R10:30` `R60:90` `R60:100` // 7 w 100 lv 0 `R20:50` lv 1 `R30:60` lv 2 `R60:80` lv 3 `R30:60` lv 4 `R20:50` cv 0 `R10:30` `R30:70` `R60:100` :repeat #end /////////////////////////////////////////////////////////////////////// // STRIP CHART MACROS /////////////////////////////////////////////////////////////////////// #define stripchart_demo // touch off // disable touch until we're ready // m clear m show_title "Strip Chart Demo" // // define a strip chart with 8 pens, each with a pen width between 1 and 3: // -- index is 1 // -- chart will be (500 pixels wide) x (280 pixels high) // -- type is STRIP starting at RIGHT EDGE (3) // -- data width is 5 pixels // -- min/max data values are 0/160 // -- chart background color is a dark blue (RGB of 048) // -- pen colors and widths: // -- orange (F80) 2 // -- red (F00) 3 // -- green (0F0) 1 // -- blue (00F) 1 // -- purple (F0F) 2 // -- yellow (FF0) 1 // -- cyan (0FF) 2 // -- white (FFF) 2 m center_box_on_screen 500 280 cd 1 `p0.x` `p0.y` `p1.x` `p1.y` 3 5 0 160 048 2 F80 3 F00 1 0F0 1 00F 2 F0F 1 FF0 2 0FF 2 FFF // put a black border around it: S 000 FFF m draw_box_border `p0` `p1` // `p#` expands to "p#.x p#.y" // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop on updating values until user presses button: m update_strip_chart #end #define update_strip_chart cv 1 `R00:20` `R20:40` `R40:60` `R60:80` `R80:100` `R100:120` `R120:140` `R140:160` w 100 :repeat #end /////////////////////////////////////////////////////////////////////// // CHART PEN MISSING DATA MACROS /////////////////////////////////////////////////////////////////////// #define chart_data_break_demo // touch off // disable touch until we're ready // m clear m show_title "Chart Data Break Demo" // // define a strip chart with 3 pens: // -- index is 1 // -- chart will be (500 pixels wide) x (280 pixels high) // -- type is OSC (1) // -- data width is 5 pixels // -- min/max data values are 0/160 // -- chart background color is a dark blue (RGB of 048) // -- pen colors and widths: // -- red (F00) 1 // -- green (0F0) 3 // -- yellow (FF0) 1 m center_box_on_screen 500 280 cd 1 `p0.x` `p0.y` `p1.x` `p1.y` 1 5 0 160 048 2 F00 2 0F0 2 FF0 // put a black border around it: S 000 FFF m draw_box_border `p0` `p1` // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop on updating values until user presses button: set i0 0 m update_data_break #end #define update_data_break m update_pen:lbl_`i0` :repeat #end #define update_pen set i0 `(`i0`+1)` :lbl_60 set i0 0 cv 1 - - - w 25 cv 1 - - - w 25 cv 1 - - - w 25 cv 1 - - - w 25 cv 1 - - - w 25 cv 1 - - - w 25 cv 1 - - - w 25 cv 1 - - - w 25 :default cv 1 `R10:50` `R55:95` `R100:155` w 25 #end //--------------------------------------------------------------------- // COLOR GRADIENTS DEMO MACROS //--------------------------------------------------------------------- #define color_bars_demo // touch off // disable touch until we're ready // m clear m drawGradients // slow, but do it 1st so we can write over it m show_title "Color Gradients Demo" // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define drawGradients // center color bars horizontally: o `(`Xc`-256)` 0 // draw them r 0 0 2 159 1 000000 r 0 160 2 319 1 000000 r 0 320 2 479 1 000000 r 2 0 4 159 1 010000 r 2 160 4 319 1 000100 r 2 320 4 479 1 000001 r 4 0 6 159 1 020000 r 4 160 6 319 1 000200 r 4 320 6 479 1 000002 r 6 0 8 159 1 030000 r 6 160 8 319 1 000300 r 6 320 8 479 1 000003 r 8 0 10 159 1 040000 r 8 160 10 319 1 000400 r 8 320 10 479 1 000004 r 10 0 12 159 1 050000 r 10 160 12 319 1 000500 r 10 320 12 479 1 000005 r 12 0 14 159 1 060000 r 12 160 14 319 1 000600 r 12 320 14 479 1 000006 r 14 0 16 159 1 070000 r 14 160 16 319 1 000700 r 14 320 16 479 1 000007 r 16 0 18 159 1 080000 r 16 160 18 319 1 000800 r 16 320 18 479 1 000008 r 18 0 20 159 1 090000 r 18 160 20 319 1 000900 r 18 320 20 479 1 000009 r 20 0 22 159 1 0a0000 r 20 160 22 319 1 000a00 r 20 320 22 479 1 00000a r 22 0 24 159 1 0b0000 r 22 160 24 319 1 000b00 r 22 320 24 479 1 00000b r 24 0 26 159 1 0c0000 r 24 160 26 319 1 000c00 r 24 320 26 479 1 00000c r 26 0 28 159 1 0d0000 r 26 160 28 319 1 000d00 r 26 320 28 479 1 00000d r 28 0 30 159 1 0e0000 r 28 160 30 319 1 000e00 r 28 320 30 479 1 00000e r 30 0 32 159 1 0f0000 r 30 160 32 319 1 000f00 r 30 320 32 479 1 00000f r 32 0 34 159 1 100000 r 32 160 34 319 1 001000 r 32 320 34 479 1 000010 r 34 0 36 159 1 110000 r 34 160 36 319 1 001100 r 34 320 36 479 1 000011 r 36 0 38 159 1 120000 r 36 160 38 319 1 001200 r 36 320 38 479 1 000012 r 38 0 40 159 1 130000 r 38 160 40 319 1 001300 r 38 320 40 479 1 000013 r 40 0 42 159 1 140000 r 40 160 42 319 1 001400 r 40 320 42 479 1 000014 r 42 0 44 159 1 150000 r 42 160 44 319 1 001500 r 42 320 44 479 1 000015 r 44 0 46 159 1 160000 r 44 160 46 319 1 001600 r 44 320 46 479 1 000016 r 46 0 48 159 1 170000 r 46 160 48 319 1 001700 r 46 320 48 479 1 000017 r 48 0 50 159 1 180000 r 48 160 50 319 1 001800 r 48 320 50 479 1 000018 r 50 0 52 159 1 190000 r 50 160 52 319 1 001900 r 50 320 52 479 1 000019 r 52 0 54 159 1 1a0000 r 52 160 54 319 1 001a00 r 52 320 54 479 1 00001a r 54 0 56 159 1 1b0000 r 54 160 56 319 1 001b00 r 54 320 56 479 1 00001b r 56 0 58 159 1 1c0000 r 56 160 58 319 1 001c00 r 56 320 58 479 1 00001c r 58 0 60 159 1 1d0000 r 58 160 60 319 1 001d00 r 58 320 60 479 1 00001d r 60 0 62 159 1 1e0000 r 60 160 62 319 1 001e00 r 60 320 62 479 1 00001e r 62 0 64 159 1 1f0000 r 62 160 64 319 1 001f00 r 62 320 64 479 1 00001f r 64 0 66 159 1 200000 r 64 160 66 319 1 002000 r 64 320 66 479 1 000020 r 66 0 68 159 1 210000 r 66 160 68 319 1 002100 r 66 320 68 479 1 000021 r 68 0 70 159 1 220000 r 68 160 70 319 1 002200 r 68 320 70 479 1 000022 r 70 0 72 159 1 230000 r 70 160 72 319 1 002300 r 70 320 72 479 1 000023 r 72 0 74 159 1 240000 r 72 160 74 319 1 002400 r 72 320 74 479 1 000024 r 74 0 76 159 1 250000 r 74 160 76 319 1 002500 r 74 320 76 479 1 000025 r 76 0 78 159 1 260000 r 76 160 78 319 1 002600 r 76 320 78 479 1 000026 r 78 0 80 159 1 270000 r 78 160 80 319 1 002700 r 78 320 80 479 1 000027 r 80 0 82 159 1 280000 r 80 160 82 319 1 002800 r 80 320 82 479 1 000028 r 82 0 84 159 1 290000 r 82 160 84 319 1 002900 r 82 320 84 479 1 000029 r 84 0 86 159 1 2a0000 r 84 160 86 319 1 002a00 r 84 320 86 479 1 00002a r 86 0 88 159 1 2b0000 r 86 160 88 319 1 002b00 r 86 320 88 479 1 00002b r 88 0 90 159 1 2c0000 r 88 160 90 319 1 002c00 r 88 320 90 479 1 00002c r 90 0 92 159 1 2d0000 r 90 160 92 319 1 002d00 r 90 320 92 479 1 00002d r 92 0 94 159 1 2e0000 r 92 160 94 319 1 002e00 r 92 320 94 479 1 00002e r 94 0 96 159 1 2f0000 r 94 160 96 319 1 002f00 r 94 320 96 479 1 00002f r 96 0 98 159 1 300000 r 96 160 98 319 1 003000 r 96 320 98 479 1 000030 r 98 0 100 159 1 310000 r 98 160 100 319 1 003100 r 98 320 100 479 1 000031 r 100 0 102 159 1 320000 r 100 160 102 319 1 003200 r 100 320 102 479 1 000032 r 102 0 104 159 1 330000 r 102 160 104 319 1 003300 r 102 320 104 479 1 000033 r 104 0 106 159 1 340000 r 104 160 106 319 1 003400 r 104 320 106 479 1 000034 r 106 0 108 159 1 350000 r 106 160 108 319 1 003500 r 106 320 108 479 1 000035 r 108 0 110 159 1 360000 r 108 160 110 319 1 003600 r 108 320 110 479 1 000036 r 110 0 112 159 1 370000 r 110 160 112 319 1 003700 r 110 320 112 479 1 000037 r 112 0 114 159 1 380000 r 112 160 114 319 1 003800 r 112 320 114 479 1 000038 r 114 0 116 159 1 390000 r 114 160 116 319 1 003900 r 114 320 116 479 1 000039 r 116 0 118 159 1 3a0000 r 116 160 118 319 1 003a00 r 116 320 118 479 1 00003a r 118 0 120 159 1 3b0000 r 118 160 120 319 1 003b00 r 118 320 120 479 1 00003b r 120 0 122 159 1 3c0000 r 120 160 122 319 1 003c00 r 120 320 122 479 1 00003c r 122 0 124 159 1 3d0000 r 122 160 124 319 1 003d00 r 122 320 124 479 1 00003d r 124 0 126 159 1 3e0000 r 124 160 126 319 1 003e00 r 124 320 126 479 1 00003e r 126 0 128 159 1 3f0000 r 126 160 128 319 1 003f00 r 126 320 128 479 1 00003f r 128 0 130 159 1 400000 r 128 160 130 319 1 004000 r 128 320 130 479 1 000040 r 130 0 132 159 1 410000 r 130 160 132 319 1 004100 r 130 320 132 479 1 000041 r 132 0 134 159 1 420000 r 132 160 134 319 1 004200 r 132 320 134 479 1 000042 r 134 0 136 159 1 430000 r 134 160 136 319 1 004300 r 134 320 136 479 1 000043 r 136 0 138 159 1 440000 r 136 160 138 319 1 004400 r 136 320 138 479 1 000044 r 138 0 140 159 1 450000 r 138 160 140 319 1 004500 r 138 320 140 479 1 000045 r 140 0 142 159 1 460000 r 140 160 142 319 1 004600 r 140 320 142 479 1 000046 r 142 0 144 159 1 470000 r 142 160 144 319 1 004700 r 142 320 144 479 1 000047 r 144 0 146 159 1 480000 r 144 160 146 319 1 004800 r 144 320 146 479 1 000048 r 146 0 148 159 1 490000 r 146 160 148 319 1 004900 r 146 320 148 479 1 000049 r 148 0 150 159 1 4a0000 r 148 160 150 319 1 004a00 r 148 320 150 479 1 00004a r 150 0 152 159 1 4b0000 r 150 160 152 319 1 004b00 r 150 320 152 479 1 00004b r 152 0 154 159 1 4c0000 r 152 160 154 319 1 004c00 r 152 320 154 479 1 00004c r 154 0 156 159 1 4d0000 r 154 160 156 319 1 004d00 r 154 320 156 479 1 00004d r 156 0 158 159 1 4e0000 r 156 160 158 319 1 004e00 r 156 320 158 479 1 00004e r 158 0 160 159 1 4f0000 r 158 160 160 319 1 004f00 r 158 320 160 479 1 00004f r 160 0 162 159 1 500000 r 160 160 162 319 1 005000 r 160 320 162 479 1 000050 r 162 0 164 159 1 510000 r 162 160 164 319 1 005100 r 162 320 164 479 1 000051 r 164 0 166 159 1 520000 r 164 160 166 319 1 005200 r 164 320 166 479 1 000052 r 166 0 168 159 1 530000 r 166 160 168 319 1 005300 r 166 320 168 479 1 000053 r 168 0 170 159 1 540000 r 168 160 170 319 1 005400 r 168 320 170 479 1 000054 r 170 0 172 159 1 550000 r 170 160 172 319 1 005500 r 170 320 172 479 1 000055 r 172 0 174 159 1 560000 r 172 160 174 319 1 005600 r 172 320 174 479 1 000056 r 174 0 176 159 1 570000 r 174 160 176 319 1 005700 r 174 320 176 479 1 000057 r 176 0 178 159 1 580000 r 176 160 178 319 1 005800 r 176 320 178 479 1 000058 r 178 0 180 159 1 590000 r 178 160 180 319 1 005900 r 178 320 180 479 1 000059 r 180 0 182 159 1 5a0000 r 180 160 182 319 1 005a00 r 180 320 182 479 1 00005a r 182 0 184 159 1 5b0000 r 182 160 184 319 1 005b00 r 182 320 184 479 1 00005b r 184 0 186 159 1 5c0000 r 184 160 186 319 1 005c00 r 184 320 186 479 1 00005c r 186 0 188 159 1 5d0000 r 186 160 188 319 1 005d00 r 186 320 188 479 1 00005d r 188 0 190 159 1 5e0000 r 188 160 190 319 1 005e00 r 188 320 190 479 1 00005e r 190 0 192 159 1 5f0000 r 190 160 192 319 1 005f00 r 190 320 192 479 1 00005f r 192 0 194 159 1 600000 r 192 160 194 319 1 006000 r 192 320 194 479 1 000060 r 194 0 196 159 1 610000 r 194 160 196 319 1 006100 r 194 320 196 479 1 000061 r 196 0 198 159 1 620000 r 196 160 198 319 1 006200 r 196 320 198 479 1 000062 r 198 0 200 159 1 630000 r 198 160 200 319 1 006300 r 198 320 200 479 1 000063 r 200 0 202 159 1 640000 r 200 160 202 319 1 006400 r 200 320 202 479 1 000064 r 202 0 204 159 1 650000 r 202 160 204 319 1 006500 r 202 320 204 479 1 000065 r 204 0 206 159 1 660000 r 204 160 206 319 1 006600 r 204 320 206 479 1 000066 r 206 0 208 159 1 670000 r 206 160 208 319 1 006700 r 206 320 208 479 1 000067 r 208 0 210 159 1 680000 r 208 160 210 319 1 006800 r 208 320 210 479 1 000068 r 210 0 212 159 1 690000 r 210 160 212 319 1 006900 r 210 320 212 479 1 000069 r 212 0 214 159 1 6a0000 r 212 160 214 319 1 006a00 r 212 320 214 479 1 00006a r 214 0 216 159 1 6b0000 r 214 160 216 319 1 006b00 r 214 320 216 479 1 00006b r 216 0 218 159 1 6c0000 r 216 160 218 319 1 006c00 r 216 320 218 479 1 00006c r 218 0 220 159 1 6d0000 r 218 160 220 319 1 006d00 r 218 320 220 479 1 00006d r 220 0 222 159 1 6e0000 r 220 160 222 319 1 006e00 r 220 320 222 479 1 00006e r 222 0 224 159 1 6f0000 r 222 160 224 319 1 006f00 r 222 320 224 479 1 00006f r 224 0 226 159 1 700000 r 224 160 226 319 1 007000 r 224 320 226 479 1 000070 r 226 0 228 159 1 710000 r 226 160 228 319 1 007100 r 226 320 228 479 1 000071 r 228 0 230 159 1 720000 r 228 160 230 319 1 007200 r 228 320 230 479 1 000072 r 230 0 232 159 1 730000 r 230 160 232 319 1 007300 r 230 320 232 479 1 000073 r 232 0 234 159 1 740000 r 232 160 234 319 1 007400 r 232 320 234 479 1 000074 r 234 0 236 159 1 750000 r 234 160 236 319 1 007500 r 234 320 236 479 1 000075 r 236 0 238 159 1 760000 r 236 160 238 319 1 007600 r 236 320 238 479 1 000076 r 238 0 240 159 1 770000 r 238 160 240 319 1 007700 r 238 320 240 479 1 000077 r 240 0 242 159 1 780000 r 240 160 242 319 1 007800 r 240 320 242 479 1 000078 r 242 0 244 159 1 790000 r 242 160 244 319 1 007900 r 242 320 244 479 1 000079 r 244 0 246 159 1 7a0000 r 244 160 246 319 1 007a00 r 244 320 246 479 1 00007a r 246 0 248 159 1 7b0000 r 246 160 248 319 1 007b00 r 246 320 248 479 1 00007b r 248 0 250 159 1 7c0000 r 248 160 250 319 1 007c00 r 248 320 250 479 1 00007c r 250 0 252 159 1 7d0000 r 250 160 252 319 1 007d00 r 250 320 252 479 1 00007d r 252 0 254 159 1 7e0000 r 252 160 254 319 1 007e00 r 252 320 254 479 1 00007e r 254 0 256 159 1 7f0000 r 254 160 256 319 1 007f00 r 254 320 256 479 1 00007f r 256 0 258 159 1 800000 r 256 160 258 319 1 008000 r 256 320 258 479 1 000080 r 258 0 260 159 1 810000 r 258 160 260 319 1 008100 r 258 320 260 479 1 000081 r 260 0 262 159 1 820000 r 260 160 262 319 1 008200 r 260 320 262 479 1 000082 r 262 0 264 159 1 830000 r 262 160 264 319 1 008300 r 262 320 264 479 1 000083 r 264 0 266 159 1 840000 r 264 160 266 319 1 008400 r 264 320 266 479 1 000084 r 266 0 268 159 1 850000 r 266 160 268 319 1 008500 r 266 320 268 479 1 000085 r 268 0 270 159 1 860000 r 268 160 270 319 1 008600 r 268 320 270 479 1 000086 r 270 0 272 159 1 870000 r 270 160 272 319 1 008700 r 270 320 272 479 1 000087 r 272 0 274 159 1 880000 r 272 160 274 319 1 008800 r 272 320 274 479 1 000088 r 274 0 276 159 1 890000 r 274 160 276 319 1 008900 r 274 320 276 479 1 000089 r 276 0 278 159 1 8a0000 r 276 160 278 319 1 008a00 r 276 320 278 479 1 00008a r 278 0 280 159 1 8b0000 r 278 160 280 319 1 008b00 r 278 320 280 479 1 00008b r 280 0 282 159 1 8c0000 r 280 160 282 319 1 008c00 r 280 320 282 479 1 00008c r 282 0 284 159 1 8d0000 r 282 160 284 319 1 008d00 r 282 320 284 479 1 00008d r 284 0 286 159 1 8e0000 r 284 160 286 319 1 008e00 r 284 320 286 479 1 00008e r 286 0 288 159 1 8f0000 r 286 160 288 319 1 008f00 r 286 320 288 479 1 00008f r 288 0 290 159 1 900000 r 288 160 290 319 1 009000 r 288 320 290 479 1 000090 r 290 0 292 159 1 910000 r 290 160 292 319 1 009100 r 290 320 292 479 1 000091 r 292 0 294 159 1 920000 r 292 160 294 319 1 009200 r 292 320 294 479 1 000092 r 294 0 296 159 1 930000 r 294 160 296 319 1 009300 r 294 320 296 479 1 000093 r 296 0 298 159 1 940000 r 296 160 298 319 1 009400 r 296 320 298 479 1 000094 r 298 0 300 159 1 950000 r 298 160 300 319 1 009500 r 298 320 300 479 1 000095 r 300 0 302 159 1 960000 r 300 160 302 319 1 009600 r 300 320 302 479 1 000096 r 302 0 304 159 1 970000 r 302 160 304 319 1 009700 r 302 320 304 479 1 000097 r 304 0 306 159 1 980000 r 304 160 306 319 1 009800 r 304 320 306 479 1 000098 r 306 0 308 159 1 990000 r 306 160 308 319 1 009900 r 306 320 308 479 1 000099 r 308 0 310 159 1 9a0000 r 308 160 310 319 1 009a00 r 308 320 310 479 1 00009a r 310 0 312 159 1 9b0000 r 310 160 312 319 1 009b00 r 310 320 312 479 1 00009b r 312 0 314 159 1 9c0000 r 312 160 314 319 1 009c00 r 312 320 314 479 1 00009c r 314 0 316 159 1 9d0000 r 314 160 316 319 1 009d00 r 314 320 316 479 1 00009d r 316 0 318 159 1 9e0000 r 316 160 318 319 1 009e00 r 316 320 318 479 1 00009e r 318 0 320 159 1 9f0000 r 318 160 320 319 1 009f00 r 318 320 320 479 1 00009f r 320 0 322 159 1 a00000 r 320 160 322 319 1 00a000 r 320 320 322 479 1 0000a0 r 322 0 324 159 1 a10000 r 322 160 324 319 1 00a100 r 322 320 324 479 1 0000a1 r 324 0 326 159 1 a20000 r 324 160 326 319 1 00a200 r 324 320 326 479 1 0000a2 r 326 0 328 159 1 a30000 r 326 160 328 319 1 00a300 r 326 320 328 479 1 0000a3 r 328 0 330 159 1 a40000 r 328 160 330 319 1 00a400 r 328 320 330 479 1 0000a4 r 330 0 332 159 1 a50000 r 330 160 332 319 1 00a500 r 330 320 332 479 1 0000a5 r 332 0 334 159 1 a60000 r 332 160 334 319 1 00a600 r 332 320 334 479 1 0000a6 r 334 0 336 159 1 a70000 r 334 160 336 319 1 00a700 r 334 320 336 479 1 0000a7 r 336 0 338 159 1 a80000 r 336 160 338 319 1 00a800 r 336 320 338 479 1 0000a8 r 338 0 340 159 1 a90000 r 338 160 340 319 1 00a900 r 338 320 340 479 1 0000a9 r 340 0 342 159 1 aa0000 r 340 160 342 319 1 00aa00 r 340 320 342 479 1 0000aa r 342 0 344 159 1 ab0000 r 342 160 344 319 1 00ab00 r 342 320 344 479 1 0000ab r 344 0 346 159 1 ac0000 r 344 160 346 319 1 00ac00 r 344 320 346 479 1 0000ac r 346 0 348 159 1 ad0000 r 346 160 348 319 1 00ad00 r 346 320 348 479 1 0000ad r 348 0 350 159 1 ae0000 r 348 160 350 319 1 00ae00 r 348 320 350 479 1 0000ae r 350 0 352 159 1 af0000 r 350 160 352 319 1 00af00 r 350 320 352 479 1 0000af r 352 0 354 159 1 b00000 r 352 160 354 319 1 00b000 r 352 320 354 479 1 0000b0 r 354 0 356 159 1 b10000 r 354 160 356 319 1 00b100 r 354 320 356 479 1 0000b1 r 356 0 358 159 1 b20000 r 356 160 358 319 1 00b200 r 356 320 358 479 1 0000b2 r 358 0 360 159 1 b30000 r 358 160 360 319 1 00b300 r 358 320 360 479 1 0000b3 r 360 0 362 159 1 b40000 r 360 160 362 319 1 00b400 r 360 320 362 479 1 0000b4 r 362 0 364 159 1 b50000 r 362 160 364 319 1 00b500 r 362 320 364 479 1 0000b5 r 364 0 366 159 1 b60000 r 364 160 366 319 1 00b600 r 364 320 366 479 1 0000b6 r 366 0 368 159 1 b70000 r 366 160 368 319 1 00b700 r 366 320 368 479 1 0000b7 r 368 0 370 159 1 b80000 r 368 160 370 319 1 00b800 r 368 320 370 479 1 0000b8 r 370 0 372 159 1 b90000 r 370 160 372 319 1 00b900 r 370 320 372 479 1 0000b9 r 372 0 374 159 1 ba0000 r 372 160 374 319 1 00ba00 r 372 320 374 479 1 0000ba r 374 0 376 159 1 bb0000 r 374 160 376 319 1 00bb00 r 374 320 376 479 1 0000bb r 376 0 378 159 1 bc0000 r 376 160 378 319 1 00bc00 r 376 320 378 479 1 0000bc r 378 0 380 159 1 bd0000 r 378 160 380 319 1 00bd00 r 378 320 380 479 1 0000bd r 380 0 382 159 1 be0000 r 380 160 382 319 1 00be00 r 380 320 382 479 1 0000be r 382 0 384 159 1 bf0000 r 382 160 384 319 1 00bf00 r 382 320 384 479 1 0000bf r 384 0 386 159 1 c00000 r 384 160 386 319 1 00c000 r 384 320 386 479 1 0000c0 r 386 0 388 159 1 c10000 r 386 160 388 319 1 00c100 r 386 320 388 479 1 0000c1 r 388 0 390 159 1 c20000 r 388 160 390 319 1 00c200 r 388 320 390 479 1 0000c2 r 390 0 392 159 1 c30000 r 390 160 392 319 1 00c300 r 390 320 392 479 1 0000c3 r 392 0 394 159 1 c40000 r 392 160 394 319 1 00c400 r 392 320 394 479 1 0000c4 r 394 0 396 159 1 c50000 r 394 160 396 319 1 00c500 r 394 320 396 479 1 0000c5 r 396 0 398 159 1 c60000 r 396 160 398 319 1 00c600 r 396 320 398 479 1 0000c6 r 398 0 400 159 1 c70000 r 398 160 400 319 1 00c700 r 398 320 400 479 1 0000c7 r 400 0 402 159 1 c80000 r 400 160 402 319 1 00c800 r 400 320 402 479 1 0000c8 r 402 0 404 159 1 c90000 r 402 160 404 319 1 00c900 r 402 320 404 479 1 0000c9 r 404 0 406 159 1 ca0000 r 404 160 406 319 1 00ca00 r 404 320 406 479 1 0000ca r 406 0 408 159 1 cb0000 r 406 160 408 319 1 00cb00 r 406 320 408 479 1 0000cb r 408 0 410 159 1 cc0000 r 408 160 410 319 1 00cc00 r 408 320 410 479 1 0000cc r 410 0 412 159 1 cd0000 r 410 160 412 319 1 00cd00 r 410 320 412 479 1 0000cd r 412 0 414 159 1 ce0000 r 412 160 414 319 1 00ce00 r 412 320 414 479 1 0000ce r 414 0 416 159 1 cf0000 r 414 160 416 319 1 00cf00 r 414 320 416 479 1 0000cf r 416 0 418 159 1 d00000 r 416 160 418 319 1 00d000 r 416 320 418 479 1 0000d0 r 418 0 420 159 1 d10000 r 418 160 420 319 1 00d100 r 418 320 420 479 1 0000d1 r 420 0 422 159 1 d20000 r 420 160 422 319 1 00d200 r 420 320 422 479 1 0000d2 r 422 0 424 159 1 d30000 r 422 160 424 319 1 00d300 r 422 320 424 479 1 0000d3 r 424 0 426 159 1 d40000 r 424 160 426 319 1 00d400 r 424 320 426 479 1 0000d4 r 426 0 428 159 1 d50000 r 426 160 428 319 1 00d500 r 426 320 428 479 1 0000d5 r 428 0 430 159 1 d60000 r 428 160 430 319 1 00d600 r 428 320 430 479 1 0000d6 r 430 0 432 159 1 d70000 r 430 160 432 319 1 00d700 r 430 320 432 479 1 0000d7 r 432 0 434 159 1 d80000 r 432 160 434 319 1 00d800 r 432 320 434 479 1 0000d8 r 434 0 436 159 1 d90000 r 434 160 436 319 1 00d900 r 434 320 436 479 1 0000d9 r 436 0 438 159 1 da0000 r 436 160 438 319 1 00da00 r 436 320 438 479 1 0000da r 438 0 440 159 1 db0000 r 438 160 440 319 1 00db00 r 438 320 440 479 1 0000db r 440 0 442 159 1 dc0000 r 440 160 442 319 1 00dc00 r 440 320 442 479 1 0000dc r 442 0 444 159 1 dd0000 r 442 160 444 319 1 00dd00 r 442 320 444 479 1 0000dd r 444 0 446 159 1 de0000 r 444 160 446 319 1 00de00 r 444 320 446 479 1 0000de r 446 0 448 159 1 df0000 r 446 160 448 319 1 00df00 r 446 320 448 479 1 0000df r 448 0 450 159 1 e00000 r 448 160 450 319 1 00e000 r 448 320 450 479 1 0000e0 r 450 0 452 159 1 e10000 r 450 160 452 319 1 00e100 r 450 320 452 479 1 0000e1 r 452 0 454 159 1 e20000 r 452 160 454 319 1 00e200 r 452 320 454 479 1 0000e2 r 454 0 456 159 1 e30000 r 454 160 456 319 1 00e300 r 454 320 456 479 1 0000e3 r 456 0 458 159 1 e40000 r 456 160 458 319 1 00e400 r 456 320 458 479 1 0000e4 r 458 0 460 159 1 e50000 r 458 160 460 319 1 00e500 r 458 320 460 479 1 0000e5 r 460 0 462 159 1 e60000 r 460 160 462 319 1 00e600 r 460 320 462 479 1 0000e6 r 462 0 464 159 1 e70000 r 462 160 464 319 1 00e700 r 462 320 464 479 1 0000e7 r 464 0 466 159 1 e80000 r 464 160 466 319 1 00e800 r 464 320 466 479 1 0000e8 r 466 0 468 159 1 e90000 r 466 160 468 319 1 00e900 r 466 320 468 479 1 0000e9 r 468 0 470 159 1 ea0000 r 468 160 470 319 1 00ea00 r 468 320 470 479 1 0000ea r 470 0 472 159 1 eb0000 r 470 160 472 319 1 00eb00 r 470 320 472 479 1 0000eb r 472 0 474 159 1 ec0000 r 472 160 474 319 1 00ec00 r 472 320 474 479 1 0000ec r 474 0 476 159 1 ed0000 r 474 160 476 319 1 00ed00 r 474 320 476 479 1 0000ed r 476 0 478 159 1 ee0000 r 476 160 478 319 1 00ee00 r 476 320 478 479 1 0000ee r 478 0 480 159 1 ef0000 r 478 160 480 319 1 00ef00 r 478 320 480 479 1 0000ef r 480 0 482 159 1 f00000 r 480 160 482 319 1 00f000 r 480 320 482 479 1 0000f0 r 482 0 484 159 1 f10000 r 482 160 484 319 1 00f100 r 482 320 484 479 1 0000f1 r 484 0 486 159 1 f20000 r 484 160 486 319 1 00f200 r 484 320 486 479 1 0000f2 r 486 0 488 159 1 f30000 r 486 160 488 319 1 00f300 r 486 320 488 479 1 0000f3 r 488 0 490 159 1 f40000 r 488 160 490 319 1 00f400 r 488 320 490 479 1 0000f4 r 490 0 492 159 1 f50000 r 490 160 492 319 1 00f500 r 490 320 492 479 1 0000f5 r 492 0 494 159 1 f60000 r 492 160 494 319 1 00f600 r 492 320 494 479 1 0000f6 r 494 0 496 159 1 f70000 r 494 160 496 319 1 00f700 r 494 320 496 479 1 0000f7 r 496 0 498 159 1 f80000 r 496 160 498 319 1 00f800 r 496 320 498 479 1 0000f8 r 498 0 500 159 1 f90000 r 498 160 500 319 1 00f900 r 498 320 500 479 1 0000f9 r 500 0 502 159 1 fa0000 r 500 160 502 319 1 00fa00 r 500 320 502 479 1 0000fa r 502 0 504 159 1 fb0000 r 502 160 504 319 1 00fb00 r 502 320 504 479 1 0000fb r 504 0 506 159 1 fc0000 r 504 160 506 319 1 00fc00 r 504 320 506 479 1 0000fc r 506 0 508 159 1 fd0000 r 506 160 508 319 1 00fd00 r 506 320 508 479 1 0000fd r 508 0 510 159 1 fe0000 r 508 160 510 319 1 00fe00 r 508 320 510 479 1 0000fe r 510 0 512 159 1 ff0000 r 510 160 512 319 1 00ff00 r 510 320 512 479 1 0000ff // restore origin: o 0 0 #end //--------------------------------------------------------------------- // TWO METER DEMO MACROS //--------------------------------------------------------------------- #define two_meter_demo // touch off // disable touch until we're ready // m clearWhiteOnBlack m show_title "Two Meters Demo" m create_meters // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button_tr `s9` m home_button_tr menu_screen // touch on // enable touch // // loop on updating values until user presses button: m move_meters #end #define create_meters m center_box_on_screen `(`W15`+`W16`)` `H15` set i0 `(`p1.x`-`W16`)` set i0 `(`i0`+1)` set i1 `(`p1.y`-`H16`)` set i1 `(`i1`+1)` S FF0000 FFFFFF // red needle // md .. needle polygon points ... // SPEED md 0 15 `p0.x` `p0.y` 1 10 150 10 58 234 159 157 5 15 -5 15 0 150 // RPM md 1 16 `i0` `i1` 1 0 35 0 58 225 114 114 5 10 -5 10 0 100 #end #define move_meters m move_meter_slow 0 10 // m move_meter_slow 1 1 m move_meter_slow 1 3 m move_meter_slow 1 5 // m move_meter_slow 0 11 m move_meter_slow 0 12 // m move_meter_slow 1 4 // m move_meter_slow 0 13 m move_meter_slow 0 14 m move_meter_slow 0 15 m move_meter_slow 0 16 m move_meter_slow 0 17 m move_meter_slow 0 18 m move_meter_slow 0 19 m move_meter_slow 0 20 // m move_meter_slow 1 7 m move_meter_slow 1 9 m move_meter_slow 1 11 m move_meter_slow 1 15 // m move_meter_slow 0 21 m move_meter_slow 0 22 // m move_meter_slow 1 14 m move_meter_slow 1 10 // m move_meter_slow 0 23 m move_meter_slow 0 24 m move_meter_slow 0 25 m move_meter_slow 0 26 m move_meter_slow 0 27 m move_meter_slow 0 28 m move_meter_slow 0 29 m move_meter_slow 0 30 m move_meter_slow 0 31 m move_meter_slow 0 32 m move_meter_slow 0 33 m move_meter_slow 0 34 m move_meter_slow 0 35 m move_meter_slow 0 36 m move_meter_slow 0 37 m move_meter_slow 0 38 m move_meter_slow 0 39 m move_meter_slow 0 40 m move_meter_slow 0 41 m move_meter_slow 0 42 m move_meter_slow 0 43 m move_meter_slow 0 44 m move_meter_slow 0 45 m move_meter_slow 0 46 m move_meter_slow 0 47 m move_meter_slow 0 48 m move_meter_slow 0 49 m move_meter_slow 0 50 m move_meter_slow 0 51 m move_meter_slow 0 52 m move_meter_slow 0 53 m move_meter_slow 0 54 m move_meter_slow 0 55 m move_meter_slow 0 56 m move_meter_slow 0 57 m move_meter_slow 0 58 m move_meter_slow 0 59 m move_meter_slow 0 60 m move_meter_slow 0 59 m move_meter_slow 0 58 m move_meter_slow 0 57 m move_meter_slow 0 56 m move_meter_slow 0 55 m move_meter_slow 0 54 m move_meter_slow 0 53 m move_meter_slow 0 52 m move_meter_slow 0 51 m move_meter_slow 0 50 m move_meter_slow 0 45 m move_meter_slow 0 44 m move_meter_slow 0 43 m move_meter_slow 0 40 m move_meter_slow 0 35 m move_meter_slow 0 33 m move_meter_slow 0 30 m move_meter_slow 0 25 m move_meter_slow 0 22 m move_meter_slow 0 20 m move_meter_slow 0 19 m move_meter_slow 0 15 m move_meter_slow 0 12 m move_meter_slow 0 10 // :repeat #end #define move_meter_slow mv `0` `1` w 50 #end //--------------------------------------------------------------------- // METER WITH BAND DEMO MACROS //--------------------------------------------------------------------- #define meter_with_band_demo // touch off // m clear m show_title "Meter With Band Demo" // // define the meter, centered on screen, with red indicator: m center_box_on_screen `W18` `H18` // foreground color used for indicator (red) S f00 fff // // mdb // // mdb 0 18 `p0.x` `p0.y` 1 0 8000 0 60 300 0 3000 105 5 0f0 ccc 120 115 -5 0 0 85 5 0 // restore to black text on white background S 000 FFF // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // // loop on updating values until user presses a button: m loop_on_sweeps #end #define loop_on_sweeps // // accelerate 0-3200 rpm with GREEN band 0-3400 set i0 0 set i1 3200 set i2 20 set s0 0f0 // start with bigger steps, we're not under load m show_rpm 0 m show_rpm 100 m show_rpm 200 m show_rpm 300 m show_rpm 400 m show_rpm 500 m show_rpm 600 m show_rpm 700 m show_rpm 800 m show_rpm 900 m show_rpm 1000 m show_rpm 1100 m show_rpm 1200 m show_rpm 1300 m show_rpm 1400 m show_rpm 1500 m show_rpm 1600 m show_rpm 1700 m show_rpm 1800 m show_rpm 1900 m show_rpm 2000 // smaller steps, we're under load: m show_rpm 2050 m show_rpm 2100 m show_rpm 2150 m show_rpm 2200 m show_rpm 2250 m show_rpm 2300 m show_rpm 2350 m show_rpm 2400 m show_rpm 2450 m show_rpm 2500 m show_rpm 2550 m show_rpm 2600 m show_rpm 2650 m show_rpm 2700 m show_rpm 2750 m show_rpm 2800 m show_rpm 2850 m show_rpm 2900 m show_rpm 2950 m show_rpm 3000 m show_rpm 3050 m show_rpm 3100 m show_rpm 3150 m show_rpm 3200 // // decelerate to 2450 // set i2 100 m show_rpm 2850 m show_rpm 2450 // // accelerate 2400-3400 rpm with GREEN band 2200-3400 set i0 2200 set i1 3400 set i2 20 set s0 0f0 m show_rpm 2400 m show_rpm 2450 m show_rpm 2500 m show_rpm 2550 m show_rpm 2600 m show_rpm 2650 m show_rpm 2700 m show_rpm 2750 m show_rpm 2800 m show_rpm 2850 m show_rpm 2900 m show_rpm 2950 m show_rpm 3000 m show_rpm 3050 m show_rpm 3100 m show_rpm 3150 m show_rpm 3200 m show_rpm 3250 m show_rpm 3300 m show_rpm 3350 m show_rpm 3400 // // accelerate 3450-3800 rpm with YELLOW band 3400-3800 set i0 3400 set i1 3800 set s0 ff0 m show_rpm 3450 m show_rpm 3500 m show_rpm 3550 m show_rpm 3600 m show_rpm 3650 m show_rpm 3700 m show_rpm 3750 m show_rpm 3800 // // accelerate 3850-4200 rpm with RED band 3800-8000 set i0 3800 set i1 8000 set s0 f00 m show_rpm 3850 m show_rpm 3900 m show_rpm 3950 m show_rpm 4000 m show_rpm 4050 m show_rpm 4100 m show_rpm 4150 m show_rpm 4200 // // decelerate to 2450 set i2 100 m show_rpm 3850 set i0 3400 set i1 3800 set s0 ff0 m show_rpm 3450 set i0 2200 set i1 3400 set s0 0f0 m show_rpm 2850 m show_rpm 2450 // // pause 1/2 second, then repeat: w 500 :repeat #end #define show_rpm // arg 0 ... rpm // i0 ...... band min // i1 ...... band max // i2 ...... pause in milliseconds // s0 ...... band color // // mvb // mvb 0 `0` `i0` `i1` 105 5 `s0` f00 w `i2` #end //--------------------------------------------------------------------- // SLIDER CONTROL DEMO MACROS //--------------------------------------------------------------------- #define slider_control_demo // touch off // disable touch until we're ready // m clear m show_title "Slider Control Demo" // m center_box_on_screen 500 290 m draw_box_border `p0` `p1` // display left slider sl 128 19 `(`p0.x`+65)` `(`p0.y`+115)` 20 0 0 1 1 50 0 sv 128 23 m slider128_update // display its value // when slider is touched, update the displayed value xm 128 slider128_update // display right slider and text sl 129 21 `(`p0.x`+205)` `(`p0.y`+50)` 22 5 0 1 1 255 10 f 20 t "Move\nto\nchange\npanel\nbacklight" `(`p0.x`+330)` `(`p0.y`+50)` // set to max sv 129 255 // implement setting m slider129_update // when slider is touched, use it to change brightness xm 129 slider129_update // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define slider128_update f 24 ta CT // text align align center top set i0 `(`W19`/2)` set i0 `(`i0`+65)` t " `L128` " `(`p0.x`+`i0`)` `(`p0.y`+50)` #end #define slider129_update xbbs `L129` #end //--------------------------------------------------------------------- // SLIDING COMPASS DEMO MACROS //--------------------------------------------------------------------- #define sliding_compass_demo // touch off // disable touch until we're ready // m clear m show_title "Sliding Compass Demo" // // center the compass "window" m center_box_on_screen 300 `H23` // display compass window with offset of 0: m compass_slide_offset 0 75 // compass pointer indicator (Red Triangle) set i0 `(`p0.y`-1)` set i1 `(`i0`-55)` tr `Xc` `i0` `(`Xc`-20)` `i1` `(`Xc`+20)` `i1` F00 // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop until user presses a button: m compass_slide_action #end #define compass_slide_action //move the compass around m compass_slide_offset 5 75 m compass_slide_offset 7 75 m compass_slide_offset 9 75 m compass_slide_offset 11 75 m compass_slide_offset 13 75 m compass_slide_offset 15 75 m compass_slide_offset 17 75 m compass_slide_offset 19 75 m compass_slide_offset 21 75 m compass_slide_offset 23 75 m compass_slide_offset 25 75 m compass_slide_offset 27 75 m compass_slide_offset 29 75 m compass_slide_offset 31 75 m compass_slide_offset 33 75 m compass_slide_offset 35 75 m compass_slide_offset 37 75 m compass_slide_offset 39 75 m compass_slide_offset 41 75 m compass_slide_offset 43 75 m compass_slide_offset 45 75 m compass_slide_offset 44 75 m compass_slide_offset 45 75 m compass_slide_offset 46 75 m compass_slide_offset 47 75 m compass_slide_offset 48 75 m compass_slide_offset 49 75 m compass_slide_offset 50 75 m compass_slide_offset 51 100 m compass_slide_offset 50 75 m compass_slide_offset 49 75 m compass_slide_offset 48 75 m compass_slide_offset 47 75 m compass_slide_offset 45 75 m compass_slide_offset 43 75 m compass_slide_offset 41 75 m compass_slide_offset 39 75 m compass_slide_offset 37 75 m compass_slide_offset 35 75 m compass_slide_offset 33 75 m compass_slide_offset 31 75 m compass_slide_offset 29 75 m compass_slide_offset 27 75 m compass_slide_offset 25 75 m compass_slide_offset 23 75 m compass_slide_offset 21 75 m compass_slide_offset 19 75 m compass_slide_offset 17 75 m compass_slide_offset 15 75 m compass_slide_offset 13 75 m compass_slide_offset 11 75 m compass_slide_offset 9 75 m compass_slide_offset 7 75 m compass_slide_offset 5 75 m compass_slide_offset 3 75 m compass_slide_offset 2 75 m compass_slide_offset 1 75 m compass_slide_offset 0 75 :repeat #end #define compass_slide_offset xio 23 `p0.x` `p0.y` 1 300 `0` w `1` #end //--------------------------------------------------------------------- // STATE SAVE RESTORE DEMO MACROS //--------------------------------------------------------------------- #define state_save_restore_demo // touch off // disable touch until we're ready // m clear m show_title "Drawing State\nSave/Restore Demo" // f 24B t "\n\n" set p0 `Xc` `Ys` // // Map Next Demo and Home buttons: set i8 `i9` // store i9 before it gets incremented m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // f 24B sc `p0` // expands to same as "`p0.x` `p0.y`" ta CT t "Normal State\n" w 1000 m red_state w 1000 ta CT t "Normal Again" // wait 3 seconds and then start over: w 3000 set i9 `i8` // restore i9 :repeat #end #define red_state ss S FFF F00 ta CT t "\n\n White on Red State \n" sr #end /////////////////////////////////////////////////////////////////////// // ANIMATION DEMO MACROS /////////////////////////////////////////////////////////////////////// #define animation_demo // touch off // // bitmap index of "off LED" and its width and height: set i8 25 set i7 `W25` set i6 `H25` // m clear m show_title "Animation Demo" // // setup Scroll and Rotate // -- display area is 384 pixels wide; calc horz offset to center it: // (t? "2-Axis Scroll and Rotate " yields 384 with font f 24B) set i0 `(`Xm`-384)` set i0 `(`i0`/2)` ta LT f 24B t "\n\n" sc `i0` `Ys` t "2-Axis " set p0 `Xs` `Ys` S 00ff00 ffffff t "Scroll" set p1 `Xs` `(`Ys`+38)` S 000000 ffffff t " and " set p2 `Xs` `Ys` S 00ff00 ffffff t "Rotate " set p3 `Xs` `(`Ys`+38)` m defRotate m defScroll // // Setup Flashing Text S 0000ff ffffff t "\n\n" ta CT sc `Xc` `Ys` tf 0 500 "Flashing Text" tfd 0 1 // // Setup Animated LEDS sc 0 `Ys` t "\n\n" set i0 `(`i7`/2)` set i0 `(`Xc`-`i0`)` // X of center LED set i1 `(`i7`+10)` // offset set i2 `(`i1`*2)` // offset * 2 // store locations of LEDS: set p1 `(`i0`-`i2`)` `Ys` // X,Y of LED 1 set p2 `(`i0`-`i1`)` `Ys` // X,Y of LED 2 set p3 `i0` `Ys` // X,Y of LED 3 set p4 `(`i0`+`i1`)` `Ys` // X,Y of LED 4 set p5 `(`i0`+`i2`)` `Ys` // X,Y of LED 5 // draw LEDS off: xi `i8` `p1` xi `i8` `p2` xi `i8` `p3` xi `i8` `p4` xi `i8` `p5` m defLedAnim // m startAnimations // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define defRotate ani 4 k `p2` `p3` 1 L ani 4 y 25 #end #define defScroll k `p0.x` `(`p0.y`-30)` `p1.x` `(`p1.y`+30)` 20 u ani 1 k `p0.x` `(`p0.y`-30)` `p1.x` `(`p1.y`+30)` 1 d ani 1 y 25 ani 2 k `p0.x` `(`p0.y`-30)` `p1.x` `(`p1.y`+30)` 1 u ani 2 y 25 ani 3 anie 1 ani 3 y 1000 ani 3 anid 1 0 ani 3 anie 2 ani 3 y 1000 ani 3 anid 2 0 #end #define defLedAnim set i0 `(`p1.y`+`i6`)` // LED 2 off, 1 ON: ani 5 wvr `i0` ani 5 xi `i8` `p2` ani 5 xi `(`i8`+1)` `p1` ani 5 y 50 // LED 1 off, 2 ON: ani 5 wvr `i0` ani 5 xi `i8` `p1` ani 5 xi `(`i8`+1)` `p2` ani 5 y 50 // LED 2 off, 3 ON: ani 5 wvr `i0` ani 5 xi `i8` `p2` ani 5 xi `(`i8`+1)` `p3` ani 5 y 50 // LED 3 off, 4 ON: ani 5 wvr `i0` ani 5 xi `i8` `p3` ani 5 xi `(`i8`+1)` `p4` ani 5 y 50 // LED 4 off, 5 ON: ani 5 wvr `i0` ani 5 xi `i8` `p4` ani 5 xi `(`i8`+1)` `p5` ani 5 y 50 // LED 5 off, 4 ON: ani 5 wvr `i0` ani 5 xi `i8` `p5` ani 5 xi `(`i8`+1)` `p4` ani 5 y 50 // LED 4 off, 3 ON: ani 5 wvr `i0` ani 5 xi `i8` `p4` ani 5 xi `(`i8`+1)` `p3` ani 5 y 50 // LED 3 off, 2 ON: ani 5 wvr `i0` ani 5 xi `i8` `p3` ani 5 xi `(`i8`+1)` `p2` ani 5 y 50 #end #define startAnimations anie 4 anie 3 tfe 0 anie 5 anis #end //--------------------------------------------------------------------- // RELATIVE TOUCH DEMO MACROS //--------------------------------------------------------------------- #define relative_touch_demo // set i8 24 // bitmap index of map set p3 `W24` `H24` // Width and Height of map set p2 `(`p3.x`-1)` `(`p3.y`-1)` // x,y relative Bottom Right Corner of map // touch off // m clear m show_title "Relative Touch Demo" // define corners of bounding box based on width and height of map: m center_box_on_screen `p3` // show the map image: xi `i8` `p0.x` `p0.y` // draw a red border around the image // and label the corners in red: S F00 FFF m draw_box_border `p0` `p1` // "p#" is same as "p#.x p#.y" m label_corners `p0` `p1` `p2` // restore colors s 0 1 // setup the special hotspot: m setup_xxy `p0` `p1` // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define label_corners f 10 sc `0` `(`1`-4)` ta CB t "0,0" sc `2` `(`1`-4)` ta CB t "`4`,0" sc `0` `(`3`+4)` ta CT t "0,`4`" sc `2` `(`3`+4)` ta CT t "`4`,`5`" #end #define show_xxy sc `Xc` `(`0`+16)` ta CT t " Touched: `%3 Xr`,`%-3 Yr` " #end #define setup_xxy xxy 128 `0` `1` `2` `3` xa 128 p show_xxy `3` f 16B sc `Xc` `(`3`+16)` ta CT t " Touch the map " #end /////////////////////////////////////////////////////////////////////// // PORTRAIT DEMO MACROS /////////////////////////////////////////////////////////////////////// #define portrait_demo // set i8 27 // portrait next button unpressed // 28 protrait next button pressed // 29 portrait map // 30 portrait logo // set p9 `W27` `H27` // next button Width and Height set p8 `W29` `H29` // map's Width and Height set p7 `W30` `H30` // logo's // touch off // m clear m p_show_title "Portrait Demo" // define corners of bounding box, rotated: m center_box_on_screen `p8` // show the map image: xi `(`i8`+2)` `p0.x` `p0.y` // draw a red border around the image S F00 FFF m draw_box_border `p0` `p1` // "p#" is same as "p#.x p#.y" S 000 FFF // show the Reach Logo: m p_show_logo // setup the special hotspot: xs 128 `(`p0.x`+132)` `(`p0.y`+87)` `(`p0.x`+171)` `(`p0.y`+113)` xmq 128 p_show_address // prompt touching the special hotspot: set p2 `(`p1.x`+10)` `p0.y` set p3 `(`p2.x`+98)` `p1.y` f R18B ta CT t "Touch Location A" `p2` `p3` CCW // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m p_next_button `s9` m p_home_button menu_screen // touch on // enable touch // #end #define p_show_logo set i0 `(`p7.x`+2)` // width + 2, so we don't overwrite the border set i1 `(`p7.y`/2)` // so we can center the logo xi `(`i8`+3)` `(`p0.x`-`i0`)` `(`Yc`-`i1`)` #end #define p_show_address xc 128 f R18B ta CT set s0 "Reach Technology, Inc.\nwww.ReachTech.com" t "`s0`" `p2` `p3` CCW #end //--------------------------------------------------------------------- // FAST DRAWING DEMO MACROS //--------------------------------------------------------------------- #define fast_drawing_demo // touch off // disable touch until we're ready // m clear m show_title "Fast Drawing Demo" // setup a box to draw in: m center_box_on_screen 500 290 m draw_box_border `p0` `p1` // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // set origin and loop on random draws until user presses a button: o `p0` m rand_draw #end #define rand_draw p `R1:5` m rand_color tr `R2:498` `R2:288` `R2:498` `R2:288` `R2:498` `R2:288` m rand_color c `R42:458` `R42:248` `R10:40` :repeat #end #define rand_color s `R0:16` 1 #end //--------------------------------------------------------------------- // PANEL PATTERN DEMO MACROS //--------------------------------------------------------------------- #define panel_alignment_demo // touch off // disable touch until we're ready // m clear m show_title "Panel Alignment Demo" // f 20B sc `Xc` `(`Yc`-20)` ta CC t "Make sure that lines meet\nat panel corners." set i0 `(`H2`/2)` set i0 `(`i0`+10)` sc `Xc` `(`Ym`-`i0`)` ta CC t "Resolution: `(`Xm`+1)` x `(`Ym`+1)`" // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // // draw pattern last, on top of everything else: p1 l 0 0 `Xm` `Ym` l `Xm` 0 0 `Ym` l 0 `Yc` `Xc` 0 l `Xc` 0 `Xm` `Yc` l `Xm` `Yc` `Xc` `Ym` l `Xc` `Ym` 0 `Yc` // touch on // enable touch // #end //--------------------------------------------------------------------- // MORE INFO SCREEN MACROS //--------------------------------------------------------------------- #define more_info_screen // touch off // disable touch until we're ready // m clear o 0 `(`Yc`-40)` set s0 "For more information, visit\nwww.reachtech.com\n" set s0 "`s0`or call (503) 675-6464" m show_title "`s0`" o 0 0 // // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop on bouncing logo until user presses a button: m center_box_on_screen `W9` `H9` o `p0.x` 80 xi 9 0 0 m logo_bounce #end #define logo_bounce // to the right and up xi 9 1 -2 xi 9 2 -4 xi 9 3 -6 xi 9 4 -8 xi 9 5 -10 xi 9 6 -12 xi 9 7 -14 xi 9 8 -16 xi 9 9 -18 xi 9 10 -20 xi 9 11 -22 xi 9 12 -24 xi 9 13 -26 xi 9 14 -28 xi 9 15 -30 xi 9 16 -32 xi 9 17 -34 xi 9 18 -36 xi 9 19 -38 xi 9 20 -40 xi 9 21 -42 xi 9 22 -44 xi 9 23 -46 xi 9 24 -48 xi 9 25 -50 xi 9 26 -52 xi 9 27 -54 xi 9 28 -56 xi 9 29 -58 xi 9 30 -60 xi 9 31 -62 xi 9 32 -64 // to the left and down xi 9 31 -62 xi 9 30 -60 xi 9 29 -58 xi 9 28 -56 xi 9 27 -54 xi 9 26 -52 xi 9 25 -50 xi 9 24 -48 xi 9 23 -46 xi 9 22 -44 xi 9 21 -42 xi 9 20 -40 xi 9 19 -38 xi 9 18 -36 xi 9 17 -34 xi 9 16 -32 xi 9 15 -30 xi 9 14 -28 xi 9 13 -26 xi 9 12 -24 xi 9 11 -22 xi 9 10 -20 xi 9 9 -18 xi 9 8 -16 xi 9 7 -14 xi 9 6 -12 xi 9 5 -10 xi 9 4 -8 xi 9 3 -6 xi 9 2 -4 xi 9 1 -2 xi 9 0 0 // to the left and up xi 9 -1 -2 xi 9 -2 -4 xi 9 -3 -6 xi 9 -4 -8 xi 9 -5 -10 xi 9 -6 -12 xi 9 -7 -14 xi 9 -8 -16 xi 9 -9 -18 xi 9 -10 -20 xi 9 -11 -22 xi 9 -12 -24 xi 9 -13 -26 xi 9 -14 -28 xi 9 -15 -30 xi 9 -16 -32 xi 9 -17 -34 xi 9 -18 -36 xi 9 -19 -38 xi 9 -20 -40 xi 9 -21 -42 xi 9 -22 -44 xi 9 -23 -46 xi 9 -24 -48 xi 9 -25 -50 xi 9 -26 -52 xi 9 -27 -54 xi 9 -28 -56 xi 9 -29 -58 xi 9 -30 -60 xi 9 -31 -62 xi 9 -32 -64 // to the right and down xi 9 -31 -62 xi 9 -30 -60 xi 9 -29 -58 xi 9 -28 -56 xi 9 -27 -54 xi 9 -26 -52 xi 9 -25 -50 xi 9 -24 -48 xi 9 -23 -46 xi 9 -22 -44 xi 9 -21 -42 xi 9 -20 -40 xi 9 -19 -38 xi 9 -18 -36 xi 9 -17 -34 xi 9 -16 -32 xi 9 -15 -30 xi 9 -14 -28 xi 9 -13 -26 xi 9 -12 -24 xi 9 -11 -22 xi 9 -10 -20 xi 9 -9 -18 xi 9 -8 -16 xi 9 -7 -14 xi 9 -6 -12 xi 9 -5 -10 xi 9 -4 -8 xi 9 -3 -6 xi 9 -2 -4 xi 9 -1 -2 xi 9 0 0 :repeat #end // TEMPLATE FOR ADDING NEW DEMOS // //--------------------------------------------------------------------- // XXXX DEMO MACROS //--------------------------------------------------------------------- #define xxxx_demo // touch off // disable touch until we're ready // m clear m show_title "XXXX Demo (i9:`(`i9`-1)`)" // Map Next Demo and Home buttons: m get_next_feature_demo:demo_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end /////////////////////////////////////////////////////////////////////// // MACRO PROGRAMMING EXAMPLES MACROS /////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------------- // Get the name of the next Example macro to run // -- defines a virtual list of Example macros using var i9 and labels // -- var i9 is the number of the example in this virtual list (1 = first) // -- sets var s9 to the macro's name // -- after the last example has been executed, the next call will cause // the :default label to execute, which behaves the same as if the // call was made with the :example_1 label //--------------------------------------------------------------------- #define get_next_example // // common section, executed on each call: set i9 `(`i9`+1)` // increment for next call // :example_1 set s9 "macro_parms_example" // :example_2 set s9 "macro_labels_example" // :example_3 set s9 "dynamic_labels_example" // :example_4 set s9 "inc_dec_ctl_example" // :example_5 set s9 "keypad_example" // :default // go back to example 1 set i9 2 // same as for :example_1 set s9 "macro_parms_example" // same as for :example_1 #end //--------------------------------------------------------------------- // MACRO PARAMETERS EXAMPLE MACROS //--------------------------------------------------------------------- #define macro_parms_example // touch off // disable touch until we're ready // m clear m show_title "Macro Parameters Example" f 20B ta CT t "\n\nMacros can use up to 10 parameters:" `Xc` `Ys` N m display_parms Reach products allow you to always touch every single customer. // // Map Next Example and Home buttons: m get_next_example:example_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define display_parms f 16 set s0 "#1:`0` #2:`1` #3:`2` #4:`3` #5:`4`" set s1 "#6:`5` #7:`6` #8:`7` #9:`8` #10:`9`" t "\n\n" ta CT t "`s0`" `Xc` `Ys` t "\n" ta CT t "`s1`" `Xc` `Ys` f 20B ta CT t "\n\nParameters combined with text command:" `Xc` `Ys` f 16 t "\n\n" ta CT sc `Xc` `Ys` tf 0 500 "`0` `1` `2` `3` `4` `5`" t "\n" ta CT sc `Xc` `Ys` tf 1 500 "`6` `7` `8` `9`" anis #end //--------------------------------------------------------------------- // MACRO LABELS EXAMPLE MACROS //--------------------------------------------------------------------- #define macro_labels_example // touch off // disable touch until we're ready // m clear m show_title "Macro Labels Example" f 20B ta CT t "\n\nMacros can contain control \":labels\"!" `Xc` `Ys` // set i0 to center bitmap 13 horizontally set i0 `(`W13`/2)` set i0 `(`Xc`-`i0`)` // set top of button 30 below bottom of font set i1 `(`Ys`+26)` // bottom of font = top of font + height of font set i1 `(`i1`+30)` f 16B bdc 0 `i0` `i1` 2 "0" "1" 13 14 // set top of next line 30 below bottom of button (and store in i8): set i8 `(`i1`+`H13`)` set i8 `(`i8`+30)` ta CT t " Button 0 state is: 0 " `Xc` `i8` // attach a macro with pre-defined labels for stateful button: xm 0 execute_labels:s0_1 execute_labels:s0_0 // // Map Next Example and Home buttons: m get_next_example:example_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define execute_labels f 16B ta CT t "Common code in macro \"execute_labels\" executed." `Xc` `(`i8`+30)` ta CT :s0_1 t " Button 0 state is: 1 " `Xc` `i8` ta CT t " Macro label \":s0_1\" executed. " `Xc` `(`i8`+60)` :s0_0 t " Button 0 state is: 0 " `Xc` `i8` N ta CT t " Macro label \":s0_0\" executed. " `Xc` `(`i8`+60)` #end //--------------------------------------------------------------------- // DYNAMIC LABELS EXAMPLE MACROS //--------------------------------------------------------------------- #define dynamic_labels_example // touch off // disable touch until we're ready // m clear m show_title "Dynamic Labels Example" m center_box_on_screen 200 200 // put a black border around it: S 000 FFF m draw_box_border `p0` `p1` // // Map Next Example and Home buttons: m get_next_example:example_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // // loop on cycling thru the colors until user presses a button: m cycle_squares #end #define color_sqr // common section: wait until refresh is past lowest part of square: wvr `p1.y` // :lbl_red r `p0` `p1` 1 F00 // :lbl_yellow r `p0` `p1` 1 FF0 // :lbl_green r `p0` `p1` 1 0F0 // :lbl_blue r `p0` `p1` 1 00F #end #define show_cycle f 16B sc `Xc` `(`p1.y`+20)` ta CT t " set s0 `0` \nm color_sqr:lbl_``s0``" #end #define do_cycle set s0 `0` m color_sqr:lbl_`s0` w 750 #end #define cycle_squares m show_cycle red m do_cycle red m show_cycle yellow m do_cycle yellow m show_cycle green m do_cycle green m show_cycle blue m do_cycle blue :repeat #end //--------------------------------------------------------------------- // NUMERIC "INC/DEC" CONTROL EXAMPLE MACROS //--------------------------------------------------------------------- #define inc_dec_ctl_example // set i8 31 // bitmap index of upArrowRelease; must // be followed by upArrowPress, then // dnArrowRelease, and dnArrowPress // touch off // disable touch until we're ready // m clear m show_title "Inc/Dec Number Example" f 20B ta CT t "\nCreate custom controls with bitmaps\n" ta CT t "and macros:" // draw control border, 1 pixel wide lines, centered on screen: // -- arrow bitmaps are 32x32 // -- num display region is 32x32 // -- arrow bitmaps and num display region are 5 pixels apart vertically from // each other and from the border; they are also 5 pixels horizontally from // the border // -- height of border: 5+32+5+32+5+32+5 = 116 // -- width of border: 5+32+5 = 42 p 1 m center_box_on_screen 42 116 r `p0` `p1` // define up arrow button: bdc 1 `(`p0.x`+5)` `(`p0.y`+5)` 30 "" `i8` `(`i8`+1)` xm 1 inc_num // define down arrow button: // -- from top border to top of bitmap is 5+32+5+32+5 = 79 bdc 2 `(`p0.x`+5)` `(`p0.y`+79)` 30 "" `(`i8`+2)` `(`i8`+3)` xm 2 dec_num // init number and show it: set i7 -1 m inc_num // // Map Next Example and Home buttons: m get_next_example:example_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define inc_num xd 1 xd 2 set i7 `(`i7`+1)` m limit_num:val_`i7` m show_num xe 1 xe 2 #end #define dec_num xd 1 xd 2 set i7 `(`i7`-1)` m limit_num:val_`i7` m show_num xe 1 xe 2 #end #define limit_num // don't go below 0: :val_-1 set i7 0 // don't go above 9: :val_10 set i7 9 // otherwise, don't change i7 :default w 0 #end #define show_num f 24B sc `Xc` `Yc` ta CC t "`i7`" #end //--------------------------------------------------------------------- // KEYPAD EXAMPLE MACROS //--------------------------------------------------------------------- #define keypad_example // set i8 12 // input box bitmap set p8 `W12` `H12` // box width and height set i7 10 // key bitmap, unpressed (`i7`+1 is pressed) set p7 `W10` `H10` // key width and height set p6 10 5 // border offset, input box to key offset // touch off // disable touch until we're ready // m clear m show_title "Keypad Example" // // draw keypad background and border: // -- width = (2*p6.x)+(3*p7.x) set i4 `(`p6.x`*2)` set i2 `(3*`p7.x`)` set i2 `(`i4`+`i2`)` // -- height = (2*p6.x)+p6.y+p8.y+(4*p7.y) set i3 `(4*`p7.y`)` set i3 `(`i3`+`p8.y`)` set i3 `(`i3`+`p6.y`)` set i3 `(`i3`+`i4`)` m center_box_on_screen `i2` `i3` r `p0` `p1` 1 008 m draw_box_border `p0` `p1` // // place the input box // -- p2.x = Xc-(p8.x/2) set i0 `(`p8.x`/2)` set i0 `(`Xc`-`i0`)` // -- p2.y = p0.y+p6.x set i1 `(`p0.y`+`p6.x`)` set p2 `i0` `i1` xi `i8` `p2` // // determine BRC of input box: // -- p3.x = p2.x+p8.x-1 set i0 `(`p2.x`+`p8.x`)` set i0 `(`i0`-1)` // -- p3.y = p2.y+p8.y-1 set i1 `(`p2.y`+`p8.y`)` set i1 `(`i1`-1)` set p3 `i0` `i1` // // clear M string: mpop -1 // // place the keys: // -- i2 = p0.x+p6.x set i2 `(`p0.x`+`p6.x`)` // -- i4 = p0.y+p6.x+p8.y+p6.y set i4 `(`p0.y`+`p6.x`)` set i4 `(`i4`+`p8.y`)` set i4 `(`i4`+`p6.y`)` // -- row 1: 1 2 3 set i3 `i2` m make_key 1 `i3` `i4` "1" set i3 `(`i3`+`p7.x`)` m make_key 2 `i3` `i4` "2" set i3 `(`i3`+`p7.x`)` m make_key 3 `i3` `i4` "3" // -- row 2: 4 5 6 set i4 `(`i4`+`p7.y`)` set i3 `i2` m make_key 4 `i3` `i4` "4" set i3 `(`i3`+`p7.x`)` m make_key 5 `i3` `i4` "5" set i3 `(`i3`+`p7.x`)` m make_key 6 `i3` `i4` "6" // -- row 3: 7 8 9 set i4 `(`i4`+`p7.y`)` set i3 `i2` m make_key 7 `i3` `i4` "7" set i3 `(`i3`+`p7.x`)` m make_key 8 `i3` `i4` "8" set i3 `(`i3`+`p7.x`)` m make_key 9 `i3` `i4` "9" // -- row 4: 0 < set i4 `(`i4`+`p7.y`)` set i3 `i2` set i3 `(`i3`+`p7.x`)` m make_key 0 `i3` `i4` "0" set i3 `(`i3`+`p7.x`)` m make_key 10 `i3` `i4` "<-" // // attach the keys xa 0 p show_keypress "0" xa 1 p show_keypress "1" xa 2 p show_keypress "2" xa 3 p show_keypress "3" xa 4 p show_keypress "4" xa 5 p show_keypress "5" xa 6 p show_keypress "6" xa 7 p show_keypress "7" xa 8 p show_keypress "8" xa 9 p show_keypress "9" xa 10 p do_backspace // // Map Next Example and Home buttons: m get_next_example:example_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end #define make_key f 20B bdc `0` `1` `2` 1 "`3`" `i7` `(`i7`+1)` #end #define show_keypress f 20B mpush "`0`" 9 // limit to 9 digits xi `i8` `p2` ta CC t "`M`" `p2` `p3` T #end #define do_backspace f 20B mpop 1 xi `i8` `p2` ta CC t "`M`" `p2` `p3` T #end // TEMPLATE FOR ADDING NEW EXAMPLES // //--------------------------------------------------------------------- // XXXX EXAMPLE MACROS //--------------------------------------------------------------------- #define xxxx_example // touch off // disable touch until we're ready // m clear m show_title "XXXX Example (i9:`(`i9`-1)`)" // Map Next Example and Home buttons: m get_next_example:example_`i9` m next_button `s9` m home_button menu_screen // touch on // enable touch // #end //--------------------------------------------------------------------- // // Reach SLCD5 Common Macros for NEW DEMO 2010 // 11-30-2010 // //--------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////// // COMMON MACROS /////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------------- // Clear the display (black text, white background), restore origin, // set full bright //--------------------------------------------------------------------- #define clear s 0 1 z o 0 0 xbbs 255 // special xbb cmd, does NOT update EEPROM #end //--------------------------------------------------------------------- // Clear the display (white text, black background), restore origin, // set full bright //--------------------------------------------------------------------- #define clearWhiteOnBlack s 1 0 z o 0 0 xbbs 255 // special xbb cmd, does NOT update EEPROM #end //--------------------------------------------------------------------- // Show title //--------------------------------------------------------------------- #define show_title f 32B ta CT sc `Xc` 10 t "`0`\n" #end //--------------------------------------------------------------------- // Show title (PORTRAIT VERSION -- landscape rotated 90 deg CCW) //--------------------------------------------------------------------- #define p_show_title f R32B ta CT t "`0`" 8 0 88 `Ym` CCW #end //--------------------------------------------------------------------- // Display the "next" button in the lower right corner and attach the // given macro // -- arg 0 is name/index of macro // -- the button's index is always 126 // -- the button's bitmaps are always #2 and #3 // -- uses Xmax and Ymax variables and simple math to place the button // 10 pixels in from the right and bottom edges // -- uses i0 i1 //--------------------------------------------------------------------- #define next_button // s 0 1 f 16B set i0 `(`W2`+10)` // width of bitmap2 + 10 set i1 `(`H2`+10)` // height of bitmap2 + 10 bdc 126 `(`Xm`-`i0`)` `(`Ym`-`i1`)` 1 "Next" 2 3 xm 126 `0` #end //--------------------------------------------------------------------- // Transparent version of "next" button, using bitmap 6 with mask color // set to black and anti-aliased appropriately // -- uses i0 i1 //--------------------------------------------------------------------- #define next_button_tr S FF0000 FFFFFF f 16B set i0 `(`W6`+10)` // width of bitmap6 + 10 set i1 `(`H6`+10)` // height of bitmap6 + 10 bdc 126 `(`Xm`-`i0`)` `(`Ym`-`i1`)` 1 "Next" 6 6 xm 126 `0` s 0 1 #end //--------------------------------------------------------------------- // Display the "next" button in the upper right corner and attach the // given macro (PORTRAIT VERSION -- landscape rotated 90 deg CCW) // -- arg 0 is name/index of macro //--------------------------------------------------------------------- #define p_next_button set i0 10 // offset, 10 in from the edges set i1 `(`p9.x`+`i0`)` // width plus offset set i2 `(`p9.y`+`i0`)` // height plus offset bdc 1 `(`Xm`-`i1`)` `i0` 1 "" `i8` `(`i8`+1)` f R18B ta CC t "Next" `(`Xm`-`i1`)` `i0` `(`Xm`-`i0`)` `i2` CCW xm 1 `0` #end //--------------------------------------------------------------------- // Display the "Home" button in the lower left corner and attach the // given macro // -- arg 0 is name/index of macro // -- the button's index is always 125 // -- the button's bitmaps are always #2 and #3 // -- uses Ymax variable and simple math to place the button // 10 pixels in from the left and bottom edges // -- uses i1 //--------------------------------------------------------------------- #define home_button // s 0 1 f 16B set i1 `(`H2`+10)` // height of bitmap2 + 10 bdc 125 10 `(`Ym`-`i1`)` 1 "Home" 2 3 xm 125 `0` #end //--------------------------------------------------------------------- // Transparent version of "home" button, using bitmap 6 with mask color // set to black and anti-aliased appropriately // -- uses i1 //--------------------------------------------------------------------- #define home_button_tr S FF0000 FFFFFF f 16B set i1 `(`H6`+10)` // height of bitmap6 + 10 bdc 125 10 `(`Ym`-`i1`)` 1 "Home" 6 6 xm 125 `0` s 0 1 #end //--------------------------------------------------------------------- // Display the "home" button in the lower right corner and attach the // given macro (PORTRAIT VERSION -- landscape rotated 90 deg CCW) // -- arg 0 is name/index of macro //--------------------------------------------------------------------- #define p_home_button set i0 10 // offset, 10 in from the edges set i1 `(`p9.x`+`i0`)` // width plus offset set i2 `(`p9.y`+`i0`)` // height plus offset bdc 2 `(`Xm`-`i1`)` `(`Ym`-`i2`)` 1 "" `i8` `(`i8`+1)` f R18B ta CC t "Home" `(`Xm`-`i1`)` `(`Ym`-`i2`)` `(`Xm`-`i0`)` `(`Ym`-`i0`)` CCW xm 2 `0` #end //--------------------------------------------------------------------- // Center a box of given width and height on the display screen // -- arg 0 1 ....... width and height of box // -- sets p0 p1 .... TLC and BRC of box, centered on screen //--------------------------------------------------------------------- #define center_box_on_screen m center_box_in_box `0` `1` 0 0 `Xm` `Ym` #end //--------------------------------------------------------------------- // Center a box of given width and height within a box of given // TLC point and BRC point // -- arg 0 1 ....... width and height of inner box // -- arg 2 3 4 5 ... TLC and BRC of outer box // -- sets p0 p1 .... TLC and BRC of inner box // -- uses i0 i1 //--------------------------------------------------------------------- #define center_box_in_box // calc horz diff / 2: set i0 `(`4`-`2`)` // diff of outer box X pts set i0 `(`i0`+1)` // width of outer box set i0 `(`i0`-`0`)` // diff of widths set i0 `(`i0`/2)` // half diff // calc vert diff / 2: set i1 `(`5`-`3`)` // diff of outer box Y pts set i1 `(`i1`+1)` // height of outer box set i1 `(`i1`-`1`)` // diff of heights set i1 `(`i1`/2)` // half diff // calc inner box TLC: set p0 `(`2`+`i0`)` `(`3`+`i1`)` // calc inner box BRC: set p1 `(`p0.x`+`0`)` `(`p0.y`+`1`)` set p1 `(`p1.x`-1)` `(`p1.y`-1)` #end //--------------------------------------------------------------------- // Draw a 2 pixel wide border around the given rectangle // -- arg 0 is Top Left Corner X coordinate // -- arg 1 is Top Left Corner Y coordinate // -- arg 2 is Bottom Right Corner X coordinate // -- arg 3 is Bottom Right Corner Y coordinate //--------------------------------------------------------------------- #define draw_box_border p1 r `(`0`-1)` `(`1`-1)` `(`2`+1)` `(`3`+1)` r `(`0`-2)` `(`1`-2)` `(`2`+2)` `(`3`+2)` #end //--------------------------------------------------------------------- // Count down `i0` seconds and then "goto" the macro given as arg 0 // -- arg 0 is index/name of macro to run if count down expires // -- var i0 is number of seconds to count down // -- var p0 is horiz and vert center point of count down display //--------------------------------------------------------------------- #define countdown_and_goto m dec_count_and_wait:sec_`i0` `0` :repeat #end #define dec_count_and_wait // // when the count expires, we execute this label :sec_0 // // TRICK: create a stateful button, quietly attach the given macro to it, // and then set it's state to 1. This will simulate the button being // pressed, the given macro will be scheduled to run, and all currently // running macros will abort. This works whether or not touch is disabled // by a "touch off" command. So the button will not disturb the screen, // we use a small non-drawing bitmap for the pressed and release states // (solid white with white as the transparent mask color). // bdc 127 0 0 20 "" "" 1 1 xmq 127 `0` ssb 127 1 // // until the count expires, we execute this label :default sc `p0` ta CC t " `i0` " w 1000 set i0 `(`i0`-1)` #end //--------------------------------------------------------------------- // Goto macro given as arg0 //--------------------------------------------------------------------- #define goto_macro // // TRICK: create a stateful button, quietly attach the given macro to it, // and then set it's state to 1. This will simulate the button being // pressed, the given macro will be scheduled to run, and all currently // running macros will abort. This works whether or not touch is disabled // by a "touch off" command. So the button will not disturb the screen, // we use a small non-drawing bitmap for the pressed and release states // (solid white with white as the transparent mask color). // bdc 127 0 0 20 "" "" 1 1 xmq 127 `0` ssb 127 1 #end