Difference between revisions of "Component: Display Manager (Graphical Library)"

From Flowcode Help
Jump to navigationJump to search
 
(54 intermediate revisions by 3 users not shown)
Line 5: Line 5:
 
|-
 
|-
 
| width="20%" style="color:gray;" | Version
 
| width="20%" style="color:gray;" | Version
| 1.0
+
| 24.0
 
|-
 
|-
 
| width="20%" style="color:gray;" | Category
 
| width="20%" style="color:gray;" | Category
Line 14: Line 14:
 
==Display Manager component==
 
==Display Manager component==
 
A component designed to simplify the process of drawing primitives and text onto a  graphical display. Keeps track of coordinates so you don't have to. Also works great as a base layer for gLCD based games as it will check for collisions and  perform movement.
 
A component designed to simplify the process of drawing primitives and text onto a  graphical display. Keeps track of coordinates so you don't have to. Also works great as a base layer for gLCD based games as it will check for collisions and  perform movement.
 +
 +
==Version information==
 +
 +
Library Version, Component Version, Date, Author, Info
 +
13, 2.0, 22-05-24, BR, Added text alignment options
 +
14, 2.1, 14-06-24, BR, Renamed Button to Widget to better include things like sliders
 +
15, 2.1, 26-07-24, BR, Added SetTextFloat and AddTextNumber macros
 +
16, 2.1, 29-07-24, BR, Renamed Themes to ObjectThemes and WidgetThemes
 +
17, 2.1, 29-07-24, BR, Added CreateTextField macro which automates creating a simple textbox
 +
18, 2.1, 06-08-24, BR, Fixed a problem with updating values, theme, text on IDs
 +
19, 2.1, 06-08-24, BR, Textfield now uses hidden object type instead of rectangle
 +
20, 2.1, 06-08-24, BR, Fixed a problem where slider value could be set with out of range value
 +
21, 2.1, 06-08-24, BR, Fixed problem where SetTextNumber would reset an ESP32
 +
22, 22.0, 19-03-25, MW, Added keypad creation function
 +
 +
  
 
==Detailed description==
 
==Detailed description==
  
 +
===Objects===
  
 +
The component can create the following objects.
  
''No detailed description exists yet for this component''
+
*'''Object_Hidden''' - 0 - A hidden area with no graphics.
 +
*'''Object_Rectangle''' - 1 - A simple rectangular box.
 +
*'''Object_Line''' - 2 - A simple straight line.
 +
*'''Object_Ellipse''' - 3 - A simple ellipse or circle.
 +
*'''Object_EllipseFilled''' - 4 - A filled ellipse or circle.
 +
*'''Object_RectangeFilled''' - 5 - A filled rectangular box.
 +
 
 +
 
 +
===TextField===
 +
 
 +
There is also an additional TextField object which consists of an Object_Rectangle that is pre-populated with text.
 +
 
 +
===Widgets===
 +
 
 +
The component can also create the following interactive buttons and sliders.
 +
 
 +
*'''Widget_Hidden''' - 0 - A hidden area with no graphics.
 +
*'''Widget_Rectangle''' - 1 - A rectangular box with a shadow.
 +
*'''Widget_RoundedRectangle''' - 2 - A rounded rectangular box with a shadow.
 +
*'''Widget_Ellipse''' - 3 - A simple ellipse or circle with a shadow.
 +
*'''Widget_VSlider''' - 4 - A vertical slider with a square thumb.
 +
*'''Widget_HSlider''' - 5 - A horizontal slider with a square thumb.
 +
*'''Widget_VSlider_Round''' - 6 - A vertical slider with a round thumb.
 +
*'''Widget_HSlider_Round''' - 7 - A horizontal slider with a round thumb.
 +
 
 +
 
 +
The type can be entered by using the component's public constants. Begin with the Display Manager handle name followed by :: and the list of the public variables will be displayed.
 +
 
 +
For example...  '''DisplayManager1::Object_Rectangle'''  or  '''DisplayManager1::Widget_VSlider'''
 +
 
 +
 
 +
===Touch Repeat Rate for Button Widgets===
 +
 
 +
The Touch Repeat Rate property applies to button based widgets and sets the frequency that a valid touch will be detected for a held button. This is similar to holding down a single key on a keyboard and acts to reduce the frequency of positive button detections when touching the button. For example if you had a button that incremented a value, without the repeat rate the value would increment much faster then anticipated in an uncontrollable manner. When no touch is detected it is recommended to call the NoTouch macro to clear the touch counters and allow a more responsive user experience.
 +
 
 +
Example of implementing touch repeat rate
 +
 
 +
[[File:ButtonRepeatRate.jpg]]
  
 
==Examples==
 
==Examples==
  
 +
===Basic Example===
  
 +
An example showing how to use the display manager with a gLCD and a touch interface to create a full HMI.
  
 +
The example shows how to create a simple menu system as well as a toggle switch and a slider used to control a PWM output.
  
''<span style="color:red;">No additional examples</span>''
+
{{Fcfile|DisplayManagerDemo.fcfx|Display Manager Demo}}
  
 +
===Keypad Example===
  
==Downloadable macro reference==
+
An example showing how you can use the CreateWigitArray component to create a touch keypad for your gLCD.
  
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
+
[[File:Updated__Display_Manager1.png]]
|-
+
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
The CreateWidgetArray function macro has a number of parameters to allow high flexibility in what you can create:
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MoveObject'''
+
 
|-
+
[[File:Updated__Display_Manager2.png]]
| colspan="2" | Moves an existing object to absolute coordinates on the screen.&nbsp;
+
 
|-
+
There are also tooltips for each parameter to help.
|-
+
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
[[File:Updated__Display_Manager3.png]]
| width="90%" | ObjectID
+
 
|-
+
Note: if you get a unable to run simulation error then make sure you have the latest components downloaded.
| colspan="2" | &nbsp;
+
 
|-
+
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
How the key touch is detected
| width="90%" | X
+
 
|-
+
The first widget is automatically assigned a unique widget ID e.g. the first widget with text 1 on it is assigned 24.
| colspan="2" | &nbsp;
+
 
|-
+
All the following widgets ID is then incremented from 24, e.g.  widget with text 6 on is assigned 24+ 5  = 29.
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
 
| width="90%" | Y
+
The widget button pressed can then be calculated from 29 – 24 + 1 = 6.
|-
+
 
| colspan="2" | &nbsp;
+
 
|-
+
{{Fcfile|DisplayManager_WidgetArray_Keypad_Example.fcfx|Display Manager Widget Array Keypad Example}}
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
  
 +
==Macro reference==
  
 +
===CheckCollision===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ShiftObject'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CheckCollision'''
 
|-
 
|-
| colspan="2" | Shifts an existing object coordinates on the screen relative to the previous coordinates.&nbsp;
+
| colspan="2" | Checks to see if two objects bounding boxes are colliding, Useful when implementing 2D games.&nbsp;
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | ObjectID
+
| width="90%" | ID1
|-
 
| colspan="2" | &nbsp;
 
|-
 
| width="10%" align="center" | [[File:]] -
 
| width="90%" | X
 
|-
 
| colspan="2" | &nbsp;
 
|-
 
| width="10%" align="center" | [[File:]] -
 
| width="90%" | Y
 
|-
 
| colspan="2" | &nbsp;
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''DrawObject'''
 
|-
 
| colspan="2" | Draws a single object onto the display without clearing the display. Doesn't draw a textfield component, this is done using the SetObjectText macro.&nbsp;
 
 
|-
 
|-
 +
| colspan="2" | ID of Object or Widget to check&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | ObjectID
+
| width="90%" | ID2
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | ID of Object or Widget to check&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-bool-icon.png]] - BOOL
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===CheckForTouch===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ScaleObject'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CheckForTouch'''
 
|-
 
|-
| colspan="2" | Changes the width and height of the selected Object&nbsp;
+
| colspan="2" | Uses the X and Y coordinates from a touch sensor to check for Widget presses. Returns 0 for no Widgets pressed. Returns ID for a valid Widget press. Any touched slider Widgets will automatically move their thumb and value to the touch position. &nbsp;
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | ObjectID
+
| width="90%" | X
 
|-
 
|-
 
| colspan="2" | &nbsp;
 
| colspan="2" | &nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Width
+
| width="90%" | Y
 
|-
 
|-
 
| colspan="2" | &nbsp;
 
| colspan="2" | &nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Height
 
|-
 
| colspan="2" | &nbsp;
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''RedrawAll'''
 
|-
 
| colspan="2" | Clears the display and redraws all the content from the display manager objects. Doesn't draw textfield components, this is done using the SetObjectText macro.&nbsp;
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===ClearAll===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetObjectText'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ClearAll'''
 
|-
 
|-
| colspan="2" | Assigns text to a single line text object and draws directly to the display. Blanks the selected area first to ensure nothing from previous text is left behind.&nbsp;
+
| colspan="2" | Removes all objects and Widgets from memory. Also clears the screen if required.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
| width="90%" | ObjectID
+
| width="90%" | ClearScreen
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | 0=Don't clear the screen, 1=Clear the screen&nbsp;
|-
 
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 
| width="90%" | Text
 
|-
 
| colspan="2" | &nbsp;
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Font
 
|-
 
| colspan="2" | &nbsp;
 
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 174: Line 183:
  
  
 +
===CreateObject===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
Line 179: Line 189:
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CreateObject'''
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CreateObject'''
 
|-
 
|-
| colspan="2" | Define an object on the graphical LCD. Returns the Object ID.&nbsp;
+
| colspan="2" | Define a none touchable graphical object. Returns the Object ID.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | ObjectType
 
| width="90%" | ObjectType
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | 0=Hidden, 1=Rect, 2=RoundedRect, 3=Ellipse, 4=Line, 8=Bitmap&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" | X
 
| width="90%" | X
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | X Pixel Coordinate&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" | Y
 
| width="90%" | Y
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | Y Pixel Coordinate&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" | Width
 
| width="90%" | Width
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | Pixel Width or X Radius&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" | Height
 
| width="90%" | Height
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | Pixel Height or Y Radius&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | LineWidth
 +
|-
 +
| colspan="2" | Number of pixels thick to draw outer border lines&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Colours
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8]&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ShowName'''
 
 
|-
 
|-
| colspan="2" | Sets the label to show the target object's name&nbsp;
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" | DrawObject
 
|-
 
|-
 +
| colspan="2" | 0=Do not draw object yet, 1=Draw object now (Does not apply to hidden objects)&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===CreateObjectArray===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''RawEnable'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CreateObjectArray'''
 
|-
 
|-
| colspan="2" | Enables and configures the ADC channel to be an analogue input. Only one ADC channel can be enabled at a time. Any RAW functions will reference the last enabled channel only.&nbsp;
+
| colspan="2" | Creates a 2d array of objects that can be used to create things like table data. Returns the ID of the first object, the following objects have incremental IDs going column by column and then row by row.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | ObjectType
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | 0=Hidden, 1=Rect, 2=Line, 3=Ellipse, 4=FilledEllipse, 5=FilledRect&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetChannel'''
 
 
|-
 
|-
| colspan="2" | Sets the channel ID for the component&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | NumColumns
 
|-
 
|-
 +
| colspan="2" | Number of columns of buttons in the array&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | ChannelId
+
| width="90%" | NumRows
 
|-
 
|-
| colspan="2" | Chaannel starting at 0, -1 is unconnected&nbsp;
+
| colspan="2" | Number of rows of buttons in the array&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | InitialPositionX
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | X location of the initial button&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''RawSampleByte'''
 
 
|-
 
|-
| colspan="2" | Background call to read the ADC as a byte Call Enable() before this&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | InitialPositionY
 
|-
 
|-
 +
| colspan="2" | Y location of the initial button&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | ObjectWidth
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Widget width in pixels&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetInt'''
 
 
|-
 
|-
| colspan="2" | Blocking call to read the ADC at full bit depth &nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | ObjectHeight
 
|-
 
|-
 +
| colspan="2" | Object height in pixels&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | SpacingX
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Horizontal spacing between the objects&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''RawDisable'''
 
 
|-
 
|-
| colspan="2" | Disables the previously enabled ADC channel and converts back to digital mode.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | SpacingY
 
|-
 
|-
 +
| colspan="2" | Vertical spacing between the objects&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | LineWidth
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Number of pixels thick to draw outer border lines&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetByte'''
 
 
|-
 
|-
| colspan="2" | Blocking call to read the ADC as a byte &nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Colours
 
|-
 
|-
 +
| colspan="2" | Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8]&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Font
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ConnectToAddress'''
 
|-
 
| colspan="2" | Attempts to connect the data channel to a specific device address on the network.&nbsp;
 
 
|-
 
|-
 +
| colspan="2" | Font used for the widgets text&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" | Address
+
| width="90%" | ObjectText
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | A comma seperated text field with the text for each object e.g. "1,2,3,.."&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===CreateTextField===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetSignalLevel'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CreateTextField'''
 
|-
 
|-
| colspan="2" | Returns the signal strength of the last signal received&nbsp;
+
| colspan="2" | Creates a text field consisting of a rectangular border containing a single line of text&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Text
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Text string to set as the label&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ExitCommandMode'''
 
 
|-
 
|-
| colspan="2" | Returns from command mode to allow data to be sent and received&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | X
 
|-
 
|-
 +
| colspan="2" | X Pixel Coordinate&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Y
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Y Pixel Coordinate&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MIAC_Module_PushData'''
 
 
|-
 
|-
| colspan="2" | &nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Width
 
|-
 
|-
 +
| colspan="2" | Pixel Width&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Data
+
| width="90%" | Height
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | Pixel Height&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Font
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | GLCD Font Index to use&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadAddressFromBuffer'''
 
 
|-
 
|-
| colspan="2" | Reads a byte from a 16-bit Zigbee device address&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Colours
 
|-
 
|-
 +
| colspan="2" | Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8]&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Device
+
| width="90%" | HAlignment
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | 0=Left, 1=Center, 2=Right&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Idx
+
| width="90%" | VAlignment
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | 0=Top, 1=Middle, 2=Bottom&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===CreateWidget===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendATCommand'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CreateWidget'''
 
|-
 
|-
| colspan="2" | Transmits a string of values to the Zigbee module.&nbsp;
+
| colspan="2" | Define an interactive Widget or slider. Returns the Widget ID.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Command
+
| width="90%" | WidgetType
 
|-
 
|-
| colspan="2" | Transmits a command to the Zigbee module followed by a carriage return&nbsp;
+
| colspan="2" | 0=WidgetHidden, 1=WidgetRect, 2=WidgetRoundedRect, 3=WidgetEllipse, 4=VSlider, 5=HSlider, 6=VSliderRound, 7=HSliderRound, 8=Bitmap&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | X
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | X Pixel Coordinate&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ScanNetwork'''
 
 
|-
 
|-
| colspan="2" | Scans the local network for devices and stores into a local device array. Mode = 0 store device names, mode = 1 store device addresses. Returns the number of devices found.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Y
 
|-
 
|-
 +
| colspan="2" | Y Pixel Coordinate&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Mode
+
| width="90%" | Width
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | Pixel Width or X Radius&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Height
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Pixel Height or Y Radius&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetATResponse'''
 
 
|-
 
|-
| colspan="2" | Waits for a response from the Zigbee module. If the Logging parameter is set then the response is stored in memory allowing the software to read the reply.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | LineWidth
 
|-
 
|-
 +
| colspan="2" | Number of pixels thick to draw outer border lines&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Logging
+
| width="90%" | Colours
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8], Hl Colour RGB [9-11]&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | DrawHighlight
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Draws the highlight on buttons, also used for thumb width on sliders&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReceiveChar'''
 
 
|-
 
|-
| colspan="2" | Attempt to receive a byte from the Zigbee module.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" | DrawWidget
 
|-
 
|-
 +
| colspan="2" | 0=Do not draw Widget yet, 1=Draw Widget now  (Does not apply to hidden widgets)&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | nTimeout
 
|-
 
| colspan="2" | &nbsp;
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
 
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===CreateWidgetArray===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MODPMSHAPE'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CreateWidgetArray'''
 
|-
 
|-
| colspan="2" | Sets PM waveform shape to; 0 = SINE, 1 = SQUARE, 2 = RAMPUP, 3 = RAMPDN, 4 = TRIANG, 5 = NOISE, 6 = DC, 7 = SINC, 8 = EXPRISE, 9 = LOGRISE, 10 = ARB1,  11 = ARB2, 12 = ARB3, 13= ARB4.&nbsp;
+
| colspan="2" | Creates a 2d array of buttons that can be used to create things like keypads. Returns the ID of the first button, the following buttons have incremental IDs going column by column and then row by row.&nbsp;
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Shape
+
| width="90%" | WidgetType
 
|-
 
|-
| colspan="2" | Sets PM waveform shape (1 = SINE, 2 = SQUARE, 3 = RAMPUP, 4 = RAMPDN, 5 = TRIANG, 6 = NOISE, 7 = DC, 8 = SINC, 9 = EXPRISE, 10 = LOGRISE, 11 = ARB1, 12 = ARB2, 13 = ARB3, 14= ARB4).&nbsp;
+
| colspan="2" | 0=WidgetHidden, 1=WidgetRect, 2=WidgetRoundedRect, 3=WidgetEllipse, 4=VSlider, 5=HSlider, 6=VSliderRound, 7=HSliderRound&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | NumColumns
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Number of columns of buttons in the array&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ARB4'''
 
 
|-
 
|-
| colspan="2" | Loads the binary-data to an existing arbitrary waveform memory location ARB4.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | NumRows
 
|-
 
|-
 +
| colspan="2" | Number of rows of buttons in the array&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Waveform
+
| width="90%" | InitialPositionX
 
|-
 
|-
| colspan="2" | &nbsp;
+
| colspan="2" | X location of the initial button&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | InitialPositionY
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Y location of the initial button&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CLKSRRet'''
 
 
|-
 
|-
| colspan="2" | Returns the clock source <INT> or <EXT>.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | WidgetWidth
 
|-
 
|-
 +
| colspan="2" | Widget width in pixels&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | WidgetHeight
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Widget height in pixels&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MODPMDEV'''
 
 
|-
 
|-
| colspan="2" | Sets PM waveform deviation to <nrf> degrees. (Lower limit: -360° - Upper limit: 360°).&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | SpacingX
 
|-
 
|-
 +
| colspan="2" | Horizontal spacing between the widgets&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Degrees
+
| width="90%" | SpacingY
 
|-
 
|-
| colspan="2" | Sets PM waveform deviation in degrees (-360 - 360).&nbsp;
+
| colspan="2" | Vertical spacing between the widgets&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | LineWidth
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Number of pixels thick to draw outer border lines&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MSTLOCK'''
 
 
|-
 
|-
| colspan="2" | Sends signal to SLAVE generator to get synchronised&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Colours
 
|-
 
|-
 +
| colspan="2" | , Hl Colour RGB [9-11]&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Font
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Font used for the widgets text&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''HILVL'''
 
 
|-
 
|-
| colspan="2" | Sets the amplitude-high-level to <nrf> Volts. (Lower limit: -0.490 V - Upper limit: 5.000 V).&nbsp;
+
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 +
| width="90%" | WidgetText
 
|-
 
|-
 +
| colspan="2" | A comma seperated text field with the text for each widget e.g. "1,2,3,.."&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | HighLevel
+
| width="90%" | DrawHighlight
 
|-
 
|-
| colspan="2" | Sets the amplitude-high-level in Volts(V) (-0.490 V - 5.000 V).&nbsp;
+
| colspan="2" | Draws the highlight on buttons, also used for thumb width on sliders&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===DrawAll===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ARB3'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''DrawAll'''
|-
 
| colspan="2" | Loads the binary-data to an existing arbitrary waveform memory location ARB3.&nbsp;
 
|-
 
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
+
| colspan="2" | Redraws all of the defined Objects and Widgets. Doesn't draw text, this is done using the SetText macros.&nbsp;
| width="90%" | Waveform
 
 
|-
 
|-
| colspan="2" | &nbsp;
 
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 581: Line 532:
  
  
 +
===DrawItem===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''WAVE'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''DrawItem'''
 
|-
 
|-
| colspan="2" | Sets the waveform type. 0 = SINE, 1 = SQUARE, 2 = RAMP, 3 = TRIANG, 4 = PULSE, 5 = NOISE, 6 = ARB&nbsp;
+
| colspan="2" | Draws a single object or Widget onto the display without clearing the display. Doesn't draw text, this is done using the SetText macros.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | WaveType
+
| width="90%" | ID
 
|-
 
|-
| colspan="2" | 0 = SINE, 1 = SQUARE, 2 = RAMP, 3 = TRIANG, 4 = PULSE, 5 = NOISE, 6 = ARB.&nbsp;
+
| colspan="2" | Unique ID of the Object or Widget&nbsp;
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 599: Line 551:
  
  
 +
===DrawScene===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CALADJ'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''DrawScene'''
 
|-
 
|-
| colspan="2" | Adjust the selected calibration value by <nrf> (Lower limit: -100 - Upper limit: 100).&nbsp;
+
| colspan="2" | Clears the screen and adds and draws the objects and widgets from the layout editor. &nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Calibrate
+
| width="90%" | SceneIndex
 
|-
 
|-
| colspan="2" | Adjust the selected calibration value (-100 - 100).&nbsp;
+
| colspan="2" | Select which screen to draw. Range: 0 to Scene Count - 1&nbsp;
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 617: Line 570:
  
  
 +
===GetLastTouchID===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''STBRet'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetLastTouchID'''
 
|-
 
|-
| colspan="2" | Returns the value of the Status Byte Register in <nr1> numeric format.&nbsp;
+
| colspan="2" | Gets the ID of the last Widget that returned a valid press via the CheckForTouch macro. Returns 0  for no valid touch recorded.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-s16-icon.png]] - INT
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===GetSliderValue===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ARB2'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetSliderValue'''
 
|-
 
|-
| colspan="2" | Loads the binary-data to an existing arbitrary waveform memory location ARB2.&nbsp;
+
| colspan="2" | Reads the value of one of the sliders ranging between 0 and 1.&nbsp;
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Waveform
+
| width="90%" | WidgetID
 
|-
 
|-
 
| colspan="2" | &nbsp;
 
| colspan="2" | &nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-f32-icon.png]] - FLOAT
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===Initialise===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''EERRet'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
 
|-
 
|-
| colspan="2" | Query and clear execution error number register.&nbsp;
+
| colspan="2" | Initialises the object and Widget control variables and sets up the default themes.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-string-icon.png]] - STRING
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===ModifyBitmap===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MODFMSRC'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ModifyBitmap'''
 
|-
 
|-
| colspan="2" | Sets FM waveform source to; 0 INT, 1 = EXT.&nbsp;
+
| colspan="2" | Allows the bitmap image to be swapped out&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Source
+
| width="90%" | ID
 
|-
 
|-
| colspan="2" | Sets FM waveform source (0 = INT, 1 = EXT).&nbsp;
+
| colspan="2" | Object or Widget ID to update&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Filename
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Bitmap filename in 8.3 file format&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MODAMFREQ'''
 
 
|-
 
|-
| colspan="2" | Sets AM waveform frequency to <nrf> Hz. (Lower limit: 1uHz - Upper limit: 20kHz).&nbsp;
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" | Scaling
 
|-
 
|-
 +
| colspan="2" | 0=Native, 1=Stretch&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
| width="90%" | Frequency
+
| width="90%" | Transparancy
 
|-
 
|-
| colspan="2" | Sets AM waveform frequency in Hertz(Hz) (1uHz - 20kHz).&nbsp;
+
| colspan="2" | 0=Disabled, 1=Enabled&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Redraw
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | &nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ESE'''
 
|-
 
| colspan="2" | Sets the Standard Event Status Enable Register to the value of <nrf>.&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Value
 
|-
 
| colspan="2" | Value of register 0-255&nbsp;
 
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 715: Line 656:
  
  
 +
===ModifyColour===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ARB1'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ModifyColour'''
 
|-
 
|-
| colspan="2" | Loads the binary-data to an existing arbitrary waveform memory location ARB1.&nbsp;
+
| colspan="2" | Changes the theme index of the selected Object or Widget.&nbsp;
 
|-
 
|-
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Waveform
+
| width="90%" | ID
 
|-
 
|-
| colspan="2" | 16 Bit binary number for arbitrary waveform.&nbsp;
+
| colspan="2" | Unique ID of the object or Widget&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Index
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | 0=Foreground, 1=Background, 2=TextColour, 3=Highlight(Widgets Only)&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ARB4DEFRet'''
 
 
|-
 
|-
| colspan="2" | Returns user specified waveform name, waveform pint interpolation state and waveform length of ARB4.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | R
 
|-
 
|-
 +
| colspan="2" | Colour Channels&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-string-icon.png]] - STRING
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | G
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CLS'''
 
 
|-
 
|-
| colspan="2" | Clears status byte register of the interface.&nbsp;
+
| colspan="2" | Colour Channels&nbsp;
 
|-
 
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | B
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| colspan="2" | Colour Channels&nbsp;
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MSTRELOCK'''
 
 
|-
 
|-
| colspan="2" | Resynchronises the two generators in MASTER-SLAVE mode.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" | Redraw
 
|-
 
|-
 +
| colspan="2" | Redraws the component straight away in the new colours&nbsp;
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 772: Line 700:
  
  
 +
===ModifyPosition===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''NOISLVL'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ModifyPosition'''
 
|-
 
|-
| colspan="2" | Sets the output noise level to <nr1> %. (Lower limit: 0% - Upper limit: 50%)&nbsp;
+
| colspan="2" | Moves an existing object or Widget to absolute coordinates on the screen.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Percent
+
| width="90%" | ID
 
|-
 
|-
| colspan="2" | Sets the output noise level in percent. (0 - 50)&nbsp;
+
| colspan="2" | Unique ID of the object or Widget&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-s16-icon.png]] - INT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | X
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | &nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LOCKMODE'''
 
 
|-
 
|-
| colspan="2" | Sets the synchronising mode to; 0 = MASTER, 1 = SLAVE, 2 = INDEP.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-s16-icon.png]] - INT
 +
| width="90%" | Y
 
|-
 
|-
 +
| colspan="2" | &nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
| width="90%" | Mode
+
| width="90%" | Relative
 
|-
 
|-
| colspan="2" | Sets the synchronising mode (0 = MASTER, 1 = SLAVE, 2 = INDEP).&nbsp;
+
| colspan="2" | 0=Absolute Positioning, 1=Relative Positioning&nbsp;
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 808: Line 734:
  
  
 +
===ModifyScale===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ADDRESSRet'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ModifyScale'''
 
|-
 
|-
| colspan="2" | Returns the instruments address&nbsp;
+
| colspan="2" | Changes the width and height of the selected Object or Widget.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | ID
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Unique ID of the object or Widget&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MODPMSRC'''
 
 
|-
 
|-
| colspan="2" | Sets PM waveform source to; 0 INT, 1 = EXT.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Width
 
|-
 
|-
 +
| colspan="2" | &nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Source
+
| width="90%" | Height
 
|-
 
|-
| colspan="2" | Sets PM waveform source (0 = INT, 1 = EXT).&nbsp;
+
| colspan="2" | &nbsp;
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 839: Line 763:
  
  
 +
===NoTouch===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MODPWMSRC'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''NoTouch'''
 
|-
 
|-
| colspan="2" | Sets PWM waveform source to; 0 = INT, 1 = EXT.&nbsp;
+
| colspan="2" | Called when no touch is present,  Allows the repeat rate counter to be cleared allowing for better responses to fast touches.&nbsp;
 
|-
 
|-
|-
 
| width="10%" align="center" | [[File:]] -
 
| width="90%" | Source
 
|-
 
| colspan="2" | Sets PWM waveform source (0 = INT, 1 = EXT).&nbsp;
 
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 857: Line 777:
  
  
 +
===SetSliderValue===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''MOD'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetSliderValue'''
 
|-
 
|-
| colspan="2" | Sets modulation to; 0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM.&nbsp;
+
| colspan="2" | Sets the value of one of the sliders and optionally redraws the slider to reflect the value change.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Modulation
+
| width="90%" | WidgetID
 
|-
 
|-
| colspan="2" | Sets modulation (0 = OFF, 1 = AM, 2 = FM, 3 = PM, 4 = FSK, 5 = PWM).&nbsp;
+
| colspan="2" | &nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| width="10%" align="center" | [[File:Fc9-f32-icon.png]] - FLOAT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Value
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Range: 0 to 1&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ISTRet'''
 
 
|-
 
|-
| colspan="2" | Returns IST local message as defined by IEEE Std. 488.2. The syntax of the response is 0<rmt>, if the local message is false, or 1<rmt>, if the local message is true.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
 +
| width="90%" | RedrawSlider
 
|-
 
|-
 +
| colspan="2" | 0=Do not redraw, 1=Redraw&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -  
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
|}
  
  
 +
===SetTextLabel===
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LRNRet'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetTextLabel'''
 
|-
 
|-
| colspan="2" | Returns the complete setup of the instrument as a binary data block&nbsp;
+
| colspan="2" | Draws a single line of text onto an object or Widget location. Useful for labelling Widgets such as buttons or having name, value statistics. Drawn using the object themes.&nbsp;
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | ID
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Unique identifier of object or Widget.&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''OPCRet'''
 
 
|-
 
|-
| colspan="2" | Query Operation Complete status. The response is always 1<rmt> and will be available immediately the command is executed because all commands are sequential.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 +
| width="90%" | Text
 
|-
 
|-
 +
| colspan="2" | Text string to set as the label&nbsp;
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -  
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
+
| width="90%" | Font
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | GLCD Font Index to use&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SWPTYPE'''
 
 
|-
 
|-
| colspan="2" | Sets the sweep type to; 0 = LINUP, 1 = LINDN, 2 = LINUPDN, 3 = LINDNUP, 4 = LOGUP, 5 = LOGDN, 6 = LOGUPDN, 7 = LOGDNUP.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | HAlignment
 
|-
 
|-
 +
| colspan="2" | 0=Left, 1=Center, 2=Right&nbsp;
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Type
+
| width="90%" | VAlignment
|-
 
| colspan="2" | Set the sweep type (0 = LINUP, 1 = LINDN, 2 = LINUPDN, 3 = LINDNUP, 4 = LOGUP, 5 = LOGDN, 6 = LOGUPDN, 7 = LOGDNUP).&nbsp;
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PULSRANGE'''
 
|-
 
| colspan="2" | Sets PWM waveform source to <1>, <2> or <3>; 1 = 1, 2 = 2, 3 = 3.&nbsp;
 
 
|-
 
|-
 +
| colspan="2" | 0=Top, 1=Middle, 2=Bottom&nbsp;
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
+
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
| width="90%" | Range
+
| width="90%" | Transparent
 
|-
 
|-
| colspan="2" | Sets the pulse rise and fall range. (1, 2 or 3)&nbsp;
+
| colspan="2" | 0=Background Colour Drawn, 1=Don't Draw Background Colour&nbsp;
 
|-
 
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 949: Line 849:
 
|}
 
|}
  
 +
 +
==Property reference==
  
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''TSTRet'''
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''  
 
|-
 
|-
| colspan="2" | The generator has no self test capability and the response is always 0 <rmt>.&nbsp;
 
 
|-
 
|-
 +
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 +
| width="90%" | Graphical Display
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -
+
| colspan="2" | Graphical Display to draw our objects on&nbsp;
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''BSTTRGPOL'''
+
| width="90%" | DM Library
 
|-
 
|-
| colspan="2" | Sets the burst trigger slope to; 0 = POS, 1 = NEG.&nbsp;
+
| colspan="2" | Display Manager compatible GLCD library component.  e.g. Bitmap drawer components.&nbsp;
 
|-
 
|-
 +
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 +
| width="90%" | Ram Usage Bytes
 
|-
 
|-
| width="10%" align="center" | [[File:]] -
+
| colspan="2" | The calculated number of bytes of RAM required by the display manager.&nbsp;
| width="90%" | Slope
 
 
|-
 
|-
| colspan="2" | Set the burst trigger slope (0 = POS, 1 = NEG).&nbsp;
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 +
| width="90%" | Text Align Offset
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| colspan="2" | Number of pixels to move away from an edge when calling &nbsp;
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| width="10%" align="center" | [[File:Fc9-type-1-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ARB3Ret'''
+
| width="90%" | Background Colour
 
|-
 
|-
| colspan="2" | Returns the binary-data from an existing abbitrary wavefrom memory location.&nbsp;
+
| colspan="2" | Default background colour to use when clearing the display and  applied as the default when creating new display creator scenes.&nbsp;
 
|-
 
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Objects
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''BSTPHASE'''
+
| width="90%" | Max Objects
 
|-
 
|-
| colspan="2" | Sets the burst phase to <nrf> degrees. (Lower limit: -360 - Upper limit: 360)&nbsp;
+
| colspan="2" | The total number of primitive objects allowed on the screen at once. Sets the size of the RAM buffers used to track the various screen elements. Each object requires 10 bytes of RAM to stores things like size, location and type.&nbsp;
 
|-
 
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Widgets
 
|-
 
|-
| width="10%" align="center" | [[File:]] -
 
| width="90%" | Degrees
 
 
|-
 
|-
| colspan="2" | Sets the burst phase in degrees (-360 - 360)&nbsp;
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 +
| width="90%" | Max Widgets
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
+
| colspan="2" | The total number of touchable interactibe objects allowed on the screen at once e.g. Widgets and sliders. Sets the size of the RAM buffers used to track the various screen elements Each Widget requires 18 bytes of RAM to stores things like size, location, value and type.&nbsp;
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''IDNRet'''
+
| width="90%" | Touch Repeat Rate
 
|-
 
|-
| colspan="2" | Returns the instrument identification. The IDN is saved to the variable passed from the function 'ReturnIDN'. The return parameter is TRUE when the IDN is successfully returned.&nbsp;
+
| colspan="2" | Sets the period for touch repeats in terms of calls of the CheckForTouch macro. Widgets will only register a repeat touch after x calls if continually held down. Sliders will always register a touch.   The touch count can be cleared using the NoTouch macro if no touch is detected.&nbsp;
 
|-
 
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Display Creator
 
|-
 
|-
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
 
| width="90%" | ReturnIDN
 
 
|-
 
|-
| colspan="2" | &nbsp;
+
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 +
| width="90%" | Enabled
 
|-
 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-string-icon.png]] - STRING
+
| colspan="2" | Enable the display creator (WYSIWYG) scene panels.&nbsp;
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SWPTRGPER'''
+
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Settings
 
|-
 
|-
| colspan="2" | Sets the sweep trigger period to <nrf> seconds&nbsp;
 
 
|-
 
|-
 +
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 +
| width="90%" | Enable Callbacks
 
|-
 
|-
| width="10%" align="center" | [[File:]] -
+
| colspan="2" | Allows the widgets to define their own callback macros to simplify the act of processing touches&nbsp;
| width="90%" | Seconds
 
 
|-
 
|-
| colspan="2" | Set the sweep trigger period in seconds.&nbsp;
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
|-
+
| width="90%" | Scene Count
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
|}
 
 
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
|-
 
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
+
| colspan="2" | Defines the number of invididual scene layout, display creator scenes available to draw&nbsp;
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''PULSDLY'''
 
 
|-
 
|-
| colspan="2" | Sets the waveform delay to <nrf> sec&nbsp;
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Scene Data
 
|-
 
|-
 
|-
 
|-
| width="10%" align="center" | [[File:]] -
+
| width="10%" align="center" | [[File:Fc9-type-26-icon.png]]
| width="90%" | Sec
+
| width="90%" | Scene 0
 
|-
 
|-
 
| colspan="2" | &nbsp;
 
| colspan="2" | &nbsp;
|-
 
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
 
|}
 
|}
  
 +
==Component Source Code==
  
 +
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_Lib_DisplayManager.fcfx FC_Comp_Source_Lib_DisplayManager.fcfx]
  
 
+
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_Lib_DisplayManager.fcfx FC_Comp_Source_Lib_DisplayManager.fcfx]
==Property reference==
 
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''
 
|-
 
|-
 
| width="10%" align="center" | [[File:Fc9-type-17-icon.png]]
 
| width="90%" | GLCD Component
 
|-
 
| colspan="2" | Selects the GLCD component to display all the objects&nbsp;
 
|-
 
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 
| width="90%" | Max Objects
 
|-
 
| colspan="2" | The total number of objects allowed on the screen. Sets the size of the RAM buffers used to track the various screen elements.&nbsp;
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-conn-icon.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Connections'''
 
|-
 
|-
 
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-conn-icon.png]]
 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Simulations'''
 
|-
 
|}
 

Latest revision as of 14:13, 22 October 2025

Author MatrixTSL
Version 24.0
Category Graphical Library


Display Manager component

A component designed to simplify the process of drawing primitives and text onto a graphical display. Keeps track of coordinates so you don't have to. Also works great as a base layer for gLCD based games as it will check for collisions and perform movement.

Version information

Library Version, Component Version, Date, Author, Info
13, 2.0, 22-05-24, BR, Added text alignment options
14, 2.1, 14-06-24, BR, Renamed Button to Widget to better include things like sliders
15, 2.1, 26-07-24, BR, Added SetTextFloat and AddTextNumber macros
16, 2.1, 29-07-24, BR, Renamed Themes to ObjectThemes and WidgetThemes
17, 2.1, 29-07-24, BR, Added CreateTextField macro which automates creating a simple textbox
18, 2.1, 06-08-24, BR, Fixed a problem with updating values, theme, text on IDs
19, 2.1, 06-08-24, BR, Textfield now uses hidden object type instead of rectangle
20, 2.1, 06-08-24, BR, Fixed a problem where slider value could be set with out of range value
21, 2.1, 06-08-24, BR, Fixed problem where SetTextNumber would reset an ESP32
22, 22.0, 19-03-25, MW, Added keypad creation function


Detailed description

Objects

The component can create the following objects.

  • Object_Hidden - 0 - A hidden area with no graphics.
  • Object_Rectangle - 1 - A simple rectangular box.
  • Object_Line - 2 - A simple straight line.
  • Object_Ellipse - 3 - A simple ellipse or circle.
  • Object_EllipseFilled - 4 - A filled ellipse or circle.
  • Object_RectangeFilled - 5 - A filled rectangular box.


TextField

There is also an additional TextField object which consists of an Object_Rectangle that is pre-populated with text.

Widgets

The component can also create the following interactive buttons and sliders.

  • Widget_Hidden - 0 - A hidden area with no graphics.
  • Widget_Rectangle - 1 - A rectangular box with a shadow.
  • Widget_RoundedRectangle - 2 - A rounded rectangular box with a shadow.
  • Widget_Ellipse - 3 - A simple ellipse or circle with a shadow.
  • Widget_VSlider - 4 - A vertical slider with a square thumb.
  • Widget_HSlider - 5 - A horizontal slider with a square thumb.
  • Widget_VSlider_Round - 6 - A vertical slider with a round thumb.
  • Widget_HSlider_Round - 7 - A horizontal slider with a round thumb.


The type can be entered by using the component's public constants. Begin with the Display Manager handle name followed by :: and the list of the public variables will be displayed.

For example... DisplayManager1::Object_Rectangle or DisplayManager1::Widget_VSlider


Touch Repeat Rate for Button Widgets

The Touch Repeat Rate property applies to button based widgets and sets the frequency that a valid touch will be detected for a held button. This is similar to holding down a single key on a keyboard and acts to reduce the frequency of positive button detections when touching the button. For example if you had a button that incremented a value, without the repeat rate the value would increment much faster then anticipated in an uncontrollable manner. When no touch is detected it is recommended to call the NoTouch macro to clear the touch counters and allow a more responsive user experience.

Example of implementing touch repeat rate

ButtonRepeatRate.jpg

Examples

Basic Example

An example showing how to use the display manager with a gLCD and a touch interface to create a full HMI.

The example shows how to create a simple menu system as well as a toggle switch and a slider used to control a PWM output.

FC6 Icon.png Display Manager Demo

Keypad Example

An example showing how you can use the CreateWigitArray component to create a touch keypad for your gLCD.

Updated Display Manager1.png

The CreateWidgetArray function macro has a number of parameters to allow high flexibility in what you can create:

Updated Display Manager2.png

There are also tooltips for each parameter to help.

Updated Display Manager3.png

Note: if you get a unable to run simulation error then make sure you have the latest components downloaded.


How the key touch is detected

The first widget is automatically assigned a unique widget ID e.g. the first widget with text 1 on it is assigned 24.

All the following widgets ID is then incremented from 24, e.g. widget with text 6 on is assigned 24+ 5 = 29.

The widget button pressed can then be calculated from 29 – 24 + 1 = 6.


FC6 Icon.png Display Manager Widget Array Keypad Example

Macro reference

CheckCollision

Fc9-comp-macro.png CheckCollision
Checks to see if two objects bounding boxes are colliding, Useful when implementing 2D games. 
Fc9-u16-icon.png - UINT ID1
ID of Object or Widget to check 
Fc9-u16-icon.png - UINT ID2
ID of Object or Widget to check 
Fc9-bool-icon.png - BOOL Return


CheckForTouch

Fc9-comp-macro.png CheckForTouch
Uses the X and Y coordinates from a touch sensor to check for Widget presses. Returns 0 for no Widgets pressed. Returns ID for a valid Widget press. Any touched slider Widgets will automatically move their thumb and value to the touch position.  
Fc9-u16-icon.png - UINT X
 
Fc9-u16-icon.png - UINT Y
 
Fc9-u16-icon.png - UINT Return


ClearAll

Fc9-comp-macro.png ClearAll
Removes all objects and Widgets from memory. Also clears the screen if required. 
Fc9-bool-icon.png - BOOL ClearScreen
0=Don't clear the screen, 1=Clear the screen 
Fc9-void-icon.png - VOID Return


CreateObject

Fc9-comp-macro.png CreateObject
Define a none touchable graphical object. Returns the Object ID. 
Fc9-u8-icon.png - BYTE ObjectType
0=Hidden, 1=Rect, 2=RoundedRect, 3=Ellipse, 4=Line, 8=Bitmap 
Fc9-u16-icon.png - UINT X
X Pixel Coordinate 
Fc9-u16-icon.png - UINT Y
Y Pixel Coordinate 
Fc9-u16-icon.png - UINT Width
Pixel Width or X Radius 
Fc9-u16-icon.png - UINT Height
Pixel Height or Y Radius 
Fc9-u8-icon.png - BYTE LineWidth
Number of pixels thick to draw outer border lines 
Fc9-u8-icon.png - BYTE Colours
Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8] 
Fc9-bool-icon.png - BOOL DrawObject
0=Do not draw object yet, 1=Draw object now (Does not apply to hidden objects) 
Fc9-u16-icon.png - UINT Return


CreateObjectArray

Fc9-comp-macro.png CreateObjectArray
Creates a 2d array of objects that can be used to create things like table data. Returns the ID of the first object, the following objects have incremental IDs going column by column and then row by row. 
Fc9-u8-icon.png - BYTE ObjectType
0=Hidden, 1=Rect, 2=Line, 3=Ellipse, 4=FilledEllipse, 5=FilledRect 
Fc9-u8-icon.png - BYTE NumColumns
Number of columns of buttons in the array 
Fc9-u8-icon.png - BYTE NumRows
Number of rows of buttons in the array 
Fc9-u16-icon.png - UINT InitialPositionX
X location of the initial button 
Fc9-u16-icon.png - UINT InitialPositionY
Y location of the initial button 
Fc9-u16-icon.png - UINT ObjectWidth
Widget width in pixels 
Fc9-u16-icon.png - UINT ObjectHeight
Object height in pixels 
Fc9-u16-icon.png - UINT SpacingX
Horizontal spacing between the objects 
Fc9-u16-icon.png - UINT SpacingY
Vertical spacing between the objects 
Fc9-u8-icon.png - BYTE LineWidth
Number of pixels thick to draw outer border lines 
Fc9-u8-icon.png - BYTE Colours
Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8] 
Fc9-u8-icon.png - BYTE Font
Font used for the widgets text 
Fc9-string-icon.png - STRING ObjectText
A comma seperated text field with the text for each object e.g. "1,2,3,.." 
Fc9-u16-icon.png - UINT Return


CreateTextField

Fc9-comp-macro.png CreateTextField
Creates a text field consisting of a rectangular border containing a single line of text 
Fc9-string-icon.png - STRING Text
Text string to set as the label 
Fc9-u16-icon.png - UINT X
X Pixel Coordinate 
Fc9-u16-icon.png - UINT Y
Y Pixel Coordinate 
Fc9-u16-icon.png - UINT Width
Pixel Width 
Fc9-u16-icon.png - UINT Height
Pixel Height 
Fc9-u8-icon.png - BYTE Font
GLCD Font Index to use 
Fc9-u8-icon.png - BYTE Colours
Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8] 
Fc9-u8-icon.png - BYTE HAlignment
0=Left, 1=Center, 2=Right 
Fc9-u8-icon.png - BYTE VAlignment
0=Top, 1=Middle, 2=Bottom 
Fc9-u16-icon.png - UINT Return


CreateWidget

Fc9-comp-macro.png CreateWidget
Define an interactive Widget or slider. Returns the Widget ID. 
Fc9-u8-icon.png - BYTE WidgetType
0=WidgetHidden, 1=WidgetRect, 2=WidgetRoundedRect, 3=WidgetEllipse, 4=VSlider, 5=HSlider, 6=VSliderRound, 7=HSliderRound, 8=Bitmap 
Fc9-u16-icon.png - UINT X
X Pixel Coordinate 
Fc9-u16-icon.png - UINT Y
Y Pixel Coordinate 
Fc9-u16-icon.png - UINT Width
Pixel Width or X Radius 
Fc9-u16-icon.png - UINT Height
Pixel Height or Y Radius 
Fc9-u8-icon.png - BYTE LineWidth
Number of pixels thick to draw outer border lines 
Fc9-u8-icon.png - BYTE Colours
Byte array containing FgColour RGB [0-2], Bg Colour RGB [3-5], Text Colour RGB [6-8], Hl Colour RGB [9-11] 
Fc9-u8-icon.png - BYTE DrawHighlight
Draws the highlight on buttons, also used for thumb width on sliders 
Fc9-bool-icon.png - BOOL DrawWidget
0=Do not draw Widget yet, 1=Draw Widget now (Does not apply to hidden widgets) 
Fc9-u16-icon.png - UINT Return


CreateWidgetArray

Fc9-comp-macro.png CreateWidgetArray
Creates a 2d array of buttons that can be used to create things like keypads. Returns the ID of the first button, the following buttons have incremental IDs going column by column and then row by row. 
Fc9-u8-icon.png - BYTE WidgetType
0=WidgetHidden, 1=WidgetRect, 2=WidgetRoundedRect, 3=WidgetEllipse, 4=VSlider, 5=HSlider, 6=VSliderRound, 7=HSliderRound 
Fc9-u8-icon.png - BYTE NumColumns
Number of columns of buttons in the array 
Fc9-u8-icon.png - BYTE NumRows
Number of rows of buttons in the array 
Fc9-u16-icon.png - UINT InitialPositionX
X location of the initial button 
Fc9-u16-icon.png - UINT InitialPositionY
Y location of the initial button 
Fc9-u16-icon.png - UINT WidgetWidth
Widget width in pixels 
Fc9-u16-icon.png - UINT WidgetHeight
Widget height in pixels 
Fc9-u16-icon.png - UINT SpacingX
Horizontal spacing between the widgets 
Fc9-u16-icon.png - UINT SpacingY
Vertical spacing between the widgets 
Fc9-u8-icon.png - BYTE LineWidth
Number of pixels thick to draw outer border lines 
Fc9-u8-icon.png - BYTE Colours
, Hl Colour RGB [9-11] 
Fc9-u8-icon.png - BYTE Font
Font used for the widgets text 
Fc9-string-icon.png - STRING WidgetText
A comma seperated text field with the text for each widget e.g. "1,2,3,.." 
Fc9-u8-icon.png - BYTE DrawHighlight
Draws the highlight on buttons, also used for thumb width on sliders 
Fc9-u16-icon.png - UINT Return


DrawAll

Fc9-comp-macro.png DrawAll
Redraws all of the defined Objects and Widgets. Doesn't draw text, this is done using the SetText macros. 
Fc9-void-icon.png - VOID Return


DrawItem

Fc9-comp-macro.png DrawItem
Draws a single object or Widget onto the display without clearing the display. Doesn't draw text, this is done using the SetText macros. 
Fc9-u16-icon.png - UINT ID
Unique ID of the Object or Widget 
Fc9-void-icon.png - VOID Return


DrawScene

Fc9-comp-macro.png DrawScene
Clears the screen and adds and draws the objects and widgets from the layout editor.  
Fc9-u8-icon.png - BYTE SceneIndex
Select which screen to draw. Range: 0 to Scene Count - 1 
Fc9-void-icon.png - VOID Return


GetLastTouchID

Fc9-comp-macro.png GetLastTouchID
Gets the ID of the last Widget that returned a valid press via the CheckForTouch macro. Returns 0 for no valid touch recorded. 
Fc9-s16-icon.png - INT Return


GetSliderValue

Fc9-comp-macro.png GetSliderValue
Reads the value of one of the sliders ranging between 0 and 1. 
Fc9-u16-icon.png - UINT WidgetID
 
Fc9-f32-icon.png - FLOAT Return


Initialise

Fc9-comp-macro.png Initialise
Initialises the object and Widget control variables and sets up the default themes. 
Fc9-void-icon.png - VOID Return


ModifyBitmap

Fc9-comp-macro.png ModifyBitmap
Allows the bitmap image to be swapped out 
Fc9-u16-icon.png - UINT ID
Object or Widget ID to update 
Fc9-string-icon.png - STRING Filename
Bitmap filename in 8.3 file format 
Fc9-bool-icon.png - BOOL Scaling
0=Native, 1=Stretch 
Fc9-bool-icon.png - BOOL Transparancy
0=Disabled, 1=Enabled 
Fc9-bool-icon.png - BOOL Redraw
 
Fc9-void-icon.png - VOID Return


ModifyColour

Fc9-comp-macro.png ModifyColour
Changes the theme index of the selected Object or Widget. 
Fc9-u16-icon.png - UINT ID
Unique ID of the object or Widget 
Fc9-u8-icon.png - BYTE Index
0=Foreground, 1=Background, 2=TextColour, 3=Highlight(Widgets Only) 
Fc9-u8-icon.png - BYTE R
Colour Channels 
Fc9-u8-icon.png - BYTE G
Colour Channels 
Fc9-u8-icon.png - BYTE B
Colour Channels 
Fc9-bool-icon.png - BOOL Redraw
Redraws the component straight away in the new colours 
Fc9-void-icon.png - VOID Return


ModifyPosition

Fc9-comp-macro.png ModifyPosition
Moves an existing object or Widget to absolute coordinates on the screen. 
Fc9-u16-icon.png - UINT ID
Unique ID of the object or Widget 
Fc9-s16-icon.png - INT X
 
Fc9-s16-icon.png - INT Y
 
Fc9-bool-icon.png - BOOL Relative
0=Absolute Positioning, 1=Relative Positioning 
Fc9-void-icon.png - VOID Return


ModifyScale

Fc9-comp-macro.png ModifyScale
Changes the width and height of the selected Object or Widget. 
Fc9-u16-icon.png - UINT ID
Unique ID of the object or Widget 
Fc9-u16-icon.png - UINT Width
 
Fc9-u16-icon.png - UINT Height
 
Fc9-void-icon.png - VOID Return


NoTouch

Fc9-comp-macro.png NoTouch
Called when no touch is present, Allows the repeat rate counter to be cleared allowing for better responses to fast touches. 
Fc9-void-icon.png - VOID Return


SetSliderValue

Fc9-comp-macro.png SetSliderValue
Sets the value of one of the sliders and optionally redraws the slider to reflect the value change. 
Fc9-u16-icon.png - UINT WidgetID
 
Fc9-f32-icon.png - FLOAT Value
Range: 0 to 1 
Fc9-bool-icon.png - BOOL RedrawSlider
0=Do not redraw, 1=Redraw 
Fc9-void-icon.png - VOID Return


SetTextLabel

Fc9-comp-macro.png SetTextLabel
Draws a single line of text onto an object or Widget location. Useful for labelling Widgets such as buttons or having name, value statistics. Drawn using the object themes. 
Fc9-u16-icon.png - UINT ID
Unique identifier of object or Widget. 
Fc9-string-icon.png - STRING Text
Text string to set as the label 
Fc9-u8-icon.png - BYTE Font
GLCD Font Index to use 
Fc9-u8-icon.png - BYTE HAlignment
0=Left, 1=Center, 2=Right 
Fc9-u8-icon.png - BYTE VAlignment
0=Top, 1=Middle, 2=Bottom 
Fc9-bool-icon.png - BOOL Transparent
0=Background Colour Drawn, 1=Don't Draw Background Colour 
Fc9-void-icon.png - VOID Return


Property reference

Fc9-prop-icon.png Properties
Fc9-type-16-icon.png Graphical Display
Graphical Display to draw our objects on 
Fc9-type-16-icon.png DM Library
Display Manager compatible GLCD library component. e.g. Bitmap drawer components. 
Fc9-type-21-icon.png Ram Usage Bytes
The calculated number of bytes of RAM required by the display manager. 
Fc9-type-21-icon.png Text Align Offset
Number of pixels to move away from an edge when calling  
Fc9-type-1-icon.png Background Colour
Default background colour to use when clearing the display and applied as the default when creating new display creator scenes. 
Fc9-conn-icon.png Objects
Fc9-type-21-icon.png Max Objects
The total number of primitive objects allowed on the screen at once. Sets the size of the RAM buffers used to track the various screen elements. Each object requires 10 bytes of RAM to stores things like size, location and type. 
Fc9-conn-icon.png Widgets
Fc9-type-21-icon.png Max Widgets
The total number of touchable interactibe objects allowed on the screen at once e.g. Widgets and sliders. Sets the size of the RAM buffers used to track the various screen elements Each Widget requires 18 bytes of RAM to stores things like size, location, value and type. 
Fc9-type-21-icon.png Touch Repeat Rate
Sets the period for touch repeats in terms of calls of the CheckForTouch macro. Widgets will only register a repeat touch after x calls if continually held down. Sliders will always register a touch. The touch count can be cleared using the NoTouch macro if no touch is detected. 
Fc9-conn-icon.png Display Creator
Fc9-type-7-icon.png Enabled
Enable the display creator (WYSIWYG) scene panels. 
Fc9-conn-icon.png Settings
Fc9-type-7-icon.png Enable Callbacks
Allows the widgets to define their own callback macros to simplify the act of processing touches 
Fc9-type-21-icon.png Scene Count
Defines the number of invididual scene layout, display creator scenes available to draw 
Fc9-conn-icon.png Scene Data
File:Fc9-type-26-icon.png Scene 0
 

Component Source Code

Please click here to download the component source project: FC_Comp_Source_Lib_DisplayManager.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_Lib_DisplayManager.fcfx