Jump to content

Component: Display Manager Dummy (Graphical Library)

From Flowcode Help
Author MatrixTSL
Version 1.0
Category Graphical Library


Display Manager Dummy 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.

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

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.

Display Manager Demo

Keypad Example

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

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

There are also tooltips for each parameter to help.

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.


Display Manager Widget Array Keypad Example

Macro reference

GetSliderValue

GetSliderValue
Reads the value of one of the sliders ranging between 0 and 1. 
- UINT WidgetID
 
- FLOAT Return


ModifyBitmap

ModifyBitmap
Allows the bitmap image to be swapped out 
- UINT ID
Object or Widget ID to update 
- STRING Filename
Bitmap filename in 8.3 file format 
- BOOL Scaling
0=Native, 1=Stretch 
- BOOL Transparancy
0=Disabled, 1=Enabled 
- BOOL Redraw
 
- VOID Return


ModifyColour

ModifyColour
Changes the theme index of the selected Object or Widget. 
- UINT ID
Unique ID of the object or Widget 
- BYTE Index
0=Foreground, 1=Background, 2=Highlight 
- BYTE R
 
- BYTE G
 
- BYTE B
 
- BOOL Redraw
 
- VOID Return


ModifyPosition

ModifyPosition
Moves an existing object or Widget to absolute coordinates on the screen. 
- UINT ID
Unique ID of the object or Widget 
- INT X
 
- INT Y
 
- BOOL Relative
0=Absolute Positioning, 1=Relative Positioning 
- VOID Return


ModifyScale

ModifyScale
Changes the width and height of the selected Object or Widget. 
- UINT ID
Unique ID of the object or Widget 
- UINT Width
 
- UINT Height
 
- VOID Return


SetSliderValue

SetSliderValue
Sets the value of one of the sliders and optionally redraws the slider to reflect the value change. 
- UINT WidgetID
 
- FLOAT Value
Range: 0 to 1 
- BOOL RedrawSlider
0=Do not redraw, 1=Redraw 
- VOID Return


SetTextLabel

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. 
- UINT ID
Unique identifier of object or Widget. 
- STRING Text
Text string to set as the label 
- BYTE Font
GLCD Font Index to use 
- BYTE HAlignment
0=Left, 1=Center, 2=Right 
- BYTE VAlignment
0=Top, 1=Middle, 2=Bottom 
- BOOL Transparent
0=Background Colour Drawn, 1=Don't Draw Background Colour 
- VOID Return


Property reference

Properties

Component Source Code

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

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