Jump to content

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

From Flowcode Help
No edit summary
Line 45: Line 45:
==Examples==
==Examples==


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.


 
{{Fcfile|DisplayManagerDemo.fcfx|Display Manager Demo}}
 
 
 
 
 
 
 
 
 
An example showing the creation of some text areas inside formatted shapes.
 
{{Fcfile|DisplayManagerExample.fcfx|Display Manager Example}}
 
 
 
 
 
 
 
 
 
 
 
 


==Macro reference==
==Macro reference==

Revision as of 11:15, 10 April 2024

Author MatrixTSL
Version 2.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.

Detailed description

The component can create the follow objects.

  • Type_Line - 2 - A simple straight line.
  • Type_Rectangle - 1 - A simple rectangular box.
  • Type_RectangeFilled - 5 - A filled rectangular box.
  • Type_Ellipse - 3 - A simple ellipse or circle.
  • Type_EllipseFilled - 4 - A filled ellipse or circle.
  • Type_TextBox - 0 - A text area allowing a line of text to be displayed.


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::Type_TextBox

Examples

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

Macro reference

CheckForTouch

CheckForTouch
Uses the X and Y coordinates from a touch sensor to check for button presses. Returns 0 for no buttons pressed. Returns 1 for a valid button press. The ID of the pressed item can be found by calling GetButtonID macro. Any touched slider buttons will automatically move their thumb and value to the touch position.  
- UINT X
 
- UINT Y
 
- BOOL Return


ClearAll

ClearAll
Removes all objects and buttons from memory. Also clears the screen if required. 
- BOOL ClearScreen
0=Don't clear the screen, 1=Clear the screen 
- VOID Return


CreateButton

CreateButton
Define an interactive button or slider. Returns the Button ID. 
- BYTE ButtonType
0=ButtonHidden, 1=ButtonRect, 2=ButtonRoundedRect, 3=ButtonEllipse, 4=VSlider, 5=HSlider, 6=VSliderRound, 7=HSliderRound 
- UINT X
X Pixel Coordinate 
- UINT Y
Y Pixel Coordinate 
- UINT Width
Pixel Width or X Radius 
- UINT Height
Pixel Height or Y Radius 
- BYTE Theme
Theme index to use to draw the button 
- BOOL DrawButton
0=Do not draw button yet, 1=Draw button now 
- UINT Return


CreateObject

CreateObject
Define a none touchable graphical object. Returns the Object ID. 
- BYTE ObjectType
0=Hidden, 1=Rect, 2=Line, 3=Ellipse, 4=FilledEllipse, 5=FilledRect 
- UINT X
X Pixel Coordinate 
- UINT Y
Y Pixel Coordinate 
- UINT Width
Pixel Width or X Radius 
- UINT Height
Pixel Height or Y Radius 
- BYTE Theme
Theme index to use to draw the object 
- BOOL DrawObject
0=Do not draw object yet, 1=Draw object now 
- UINT Return


DrawAll

DrawAll
Redraws all of the defined Objects and Buttons. Doesn't draw text, this is done using the SetText macro. 
- VOID Return


DrawItem

DrawItem
Draws a single object or button onto the display without clearing the display. Doesn't draw a textfield component, this is done using the SetObjectText macro. 
- UINT ID
Unique ID of the Object or Button 
- VOID Return


GetLastTouchID

GetLastTouchID
Gets the ID of the last button that returned a valid press via the CheckForTouch macro. Returns -1 for valid touch recorded. 
- INT Return


GetSliderValue

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


Initialise

Initialise
Initialises the object and button control variables and sets up the default themes. 
- VOID Return


ModifyPosition

ModifyPosition
Moves an existing object or button to absolute coordinates on the screen. 
- UINT ID
Unique ID of the object or button 
- 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 Button. 
- UINT ID
Unique ID of the object or button 
- UINT Width
 
- UINT Height
 
- VOID Return


ModifyTheme

ModifyTheme
Changes the theme index of the selected Object or Button. 
- UINT ID
Unique ID of the object or button 
- BYTE Theme
Theme index of the button or object 
- VOID Return


NoTouch

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


OverrideButtonTheme

OverrideButtonTheme
Overrides the colour of a button theme, used by the draw button macro.  
- BYTE ThemeIndex
Index of the object colour theme 
- BYTE FG_R
Foreground colour channel value 
- BYTE FG_G
Foreground colour channel value 
- BYTE FG_B
Foreground colour channel value 
- BYTE BG_R
Background colour channel value 
- BYTE BG_G
Background colour channel value 
- BYTE BG_B
Background colour channel value 
- BYTE HL_R
Highlight colour channel value 
- BYTE HL_G
Highlight colour channel value 
- BYTE HL_B
Highlight colour channel value 
- BYTE LL_R
Lowlight colour channel value 
- BYTE LL_G
Lowlight colour channel value 
- BYTE LL_B
Lowlight colour channel value 
- VOID Return


OverrideObjectTheme

OverrideObjectTheme
Overrides the colour of an object theme, used by the draw object macro.  
- BYTE ThemeIndex
Index of the object colour theme 
- BYTE FG_R
Foreground colour channel value 
- BYTE FG_G
Foreground colour channel value 
- BYTE FG_B
Foreground colour channel value 
- BYTE BG_R
Background colour channel value 
- BYTE BG_G
Background colour channel value 
- BYTE BG_B
Background colour channel value 
- VOID Return


SetSliderValue

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


SetText

SetText
Draws a single line of text onto an object or button location. Useful for labelling buttons or having name, value statistics. Drawn using the object themes. 
- UINT ID
Unique identifier of object or button. 
- STRING Text
 
- BYTE Font
 
- BYTE HAlignment
0=Left, 1=Center, 2=Right 
- BYTE VAlignment
0=Top, 1=Middle, 2=Bottom 
- BYTE Theme
Object theme index to control the colour of the text 
- BOOL Transparent
0=Background Colour Drawn, 1=Don't Draw Background Colour 
- VOID Return


Property reference

Properties
LinkTo
 
Ram Usage Bytes
The calculated number of bytes of RAM required by the display manager. 
Text Align Offset
Number of pixels to move away from an edge when calling SetText 
Objects
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. 
Object Theme Count
Sets the number of themes available when drawing primitive objects. Each object theme requires 6 bytes of RAM to store the colour channels. 
Theme 0
Foreground
Foreground colour of the theme 
Background
Background colour of the theme 
Theme 1
Foreground
Foreground colour of the theme 
Background
Background colour of the theme 
Buttons
Max Buttons
The total number of touchable interactibe objects allowed on the screen at once e.g. buttons and sliders. Sets the size of the RAM buffers used to track the various screen elements Each button requires 18 bytes of RAM to stores things like size, location, value and type. 
Touch Repeat Rate
Sets the period for touch repeats in terms of calls of the CheckForTouch macro. Buttons 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. 
Slider Thumb Width
Number of pixels wide to make a slider thumb marker, 
Slider Center Line Thickness
Number of pixels thick to draw the slider central line 
Button Theme Count
Sets the number of themes available for drawng buttons. Each button theme requires 12 bytes of RAM to store the colour channels. 
Theme 0
Foreground
Foreground colour of the theme 
Background
Background colour of the theme 
Highlight
Highlight colour of the theme 
Lowlight
Lowlight colour of the theme 
Theme 1
Foreground
Foreground colour of the theme 
Background
Background colour of the theme 
Highlight
Highlight colour of the theme 
Lowlight
Lowlight colour of the theme 

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