MPLAB® Harmony Graphics Suite > Graphics Library > Legato Graphics Library > Legato Interface
MPLAB® Harmony Graphics Suite
Legato Interface
a) Common Functions
 
Name 
Description 
 
Calculates the absolute value of a signed integer. 
 
Returns true if arc overlaps with quadrant 
 
Performs the inverse tangent operation 
 
Clamps a float between a min and max 
 
Clamps an integer between a min and max 
 
Calculates bilinear interpolation between four colors 
 
Blends two ARGB8888 colors together using their alpha channel values. 
 
Blends two RGBA8888 colors together using their alpha channel values. 
 
Used for getting the alpha color channel of a given color value. 
 
Used for getting the blue color channel of a given color value. 
 
Used for getting the green color channel of a given color value. 
 
Used for getting the red color channel of a given color value. 
 
Converts a color value from one mode to another 
 
Linear interpolation between two colors 
 
Used for getting a color value by name. 
 
Calculates integer division of num/denom with rounding based on LSB/2. 
 
Performs a cosine lookup to determine the points in an arc at specified radius and angle (polar > cartesian conversion) 
 
Gets the library global error message. 
 
Projects a point onto another point given a y coordinate. 
 
Projects a point onto another point given a x coordinate. 
 
Performs a linear interpolation of an integer based on a percentage between two signed points. 
 
Returns the larger of two floats. 
 
Returns the larger of two integers. 
 
Returns the smaller of two floats. 
 
Returns the smaller of two integers. 
 
Calculates the percentage of one number when applied to another. Integer based. Accuracy for higher numbers is not guaranteed.
The result is the decimal percentage multiplied by 100. 
 
Calculates the percentage of a number. Returns a whole number with no decimal component. 
 
Calculates the percentage of a number. Returns a whole number and the tenths digit decimal component. 
 
Calculates the percentage of one number when applied to another. Integer based. Accuracy for higher numbers is not guaranteed.
The difference between this and lePercent is that the decimal portion of the whole number is rounded off. 
 
Fills a rectangular area of a pixel buffer with a solid color. 
 
Fills an area of a pixel buffer with a solid color. Caller is responsible for ensuring that the color is the same color format as the destination buffer. Like lePixelBufferAreaFill but performs no bounds checking. 
 
Clips a rectangle against a pixel buffer. The result is guaranteed to fit inside the buffer's area. 
 
Initializes a pixel buffer struct. Does not actually allocate any memory. 
 
Gets the value of the pixel that resides at the provided point in the given buffer. 
 
Gets the value of the pixel that resides at the provided point in the given buffer. Like lePixelBufferGet but performs no bounds checking. 
 
A faster less-safe version of lePixelBufferGetIndex; 
 
Gets the offset address of the pixel that resides at the provided point in the given buffer. 
 
Gets the offset address of the pixel that resides at the provided point in the given buffer. Similar to lePixelBufferOffsetGet but performs no bounds checking. 
 
Sets a pixel in a pixel buffer at a point to a specified color. Caller is responsible for ensuring that the input color is in the same color format as the pixel buffer. 
 
Sets a pixel in a pixel buffer at a point to a specified color. Caller is responsible for ensuring that the input color is in the same color format as the pixel buffer. Like lePixelBufferSet but performs no bounds checking. 
 
Performs a cosine lookup to determine the points in an arc at specified radius and angle (polar to Cartesian conversion) 
 
Clips a rectangle to the space of another rectangle. The result rectangle is a rectangle that will fit inside both of the given rectangles. 
 
Returns the rectangle clipped using r_rect, and also adjusts the third rectangle 
 
Combines the area of two rectangles into a single rectangle. 
 
Returns 1 if the two rectangles have the same position and dimensions 
 
Determines if a point is inside a rectangle. 
 
Determines if a rectangle is completely inside another rectangle. Still returns true if the edges are touching. 
 
Returns a leRect structure based on 2 points 
 
Determines if two rectangles are intersecting 
 
Returns LE_TRUE if the two rectangles are adjacent and vertically or horizontally aligned 
 
Splits two overlapping rectangles into several (up to 4) non-overlapping rectangles 
 
Returns the points for the upper left and lower right vertices of a rectangle 
 
Scales an integer from one number range of 0 -> n0 to another range 0 -> n1 based on percentages. 
 
Scales a signed integer from one number range of 0 -> n0 to another range 0 -> n1 based on percentages. 
 
Sets the library global error message. 
 
Sorts two points on the X axis. 
 
Sorts two points on the Y axis. 
 
Sets the library global error message using a formatted string. 
 
Calculates the position of a rectangle within the given bounds and in accordance with the given parameters. A use case for this is when an image and a text rectangle must be arranged in a button box. This version of the algorithm will calculate the location of the image rectangle. 
 
Calculates the position of a rectangle within the given bounds and in accordance with the given parameters. A use case for this is when an image and a text rectangle must be arranged in a button box. This version of the algorithm will calculate the location of the text rectangle. 
 
Performs an intersection test between a parent widget and a child widget 
 
Clips a rectangle to the parent of a widget 
 
Gets the next highest Z order widget in the tree from 'wgt' 
 
Finds the top-most visible widget in the tree at the given coordinates. 
 
Finds the top-most visible widget in a layer at the given coordinates. 
 
Converts a point from layer space into the local space of a widget 
 
Converts a point from widget space into screen space 
 
Converts a rectangle from widget parent space to widget local space 
 
Converts a rectangle from widget local space to widget parent space. Widget must be a child of a layer for this to function. 
 
Converts a rectangle from widget local space to screen space 
 
normalize an angle between 0 - 360 
 
Returns true if the buffer's lock flag is on. 
 
Manipulates a buffer lock flag 
b) Core Functions
 
Name 
Description 
 
Terminates the current active data stream regardless of whether it still has data to receive. 
 
Adds a custom widget to a static scene root widget. 
 
A callback that indicates that a stream is finished with a given media location and that the application can close if it.
reader - the reader that was streaming data. 
 
A callback that indicates that a stream wishes to read from an external source and that the application should prepare that source.
If the result is false then the stream will abort.
stream - the reader that is requesting to stream data 
 
dest buffer); 
 
Passes an 'accept' command to the current edit widget, if one exists 
 
Passes an 'append' command and a string to the current edit widget, if one exists 
 
Passes a 'backspace' command to the current edit widget, if one exists 
 
Passes a 'clear' command to the current edit widget, if one exists 
 
Passes an 'end edit' command to the current edit widget, if one exists 
 
Passes a 'set' command and a string to the current edit widget, if one exists 
 
Passes a 'start edit' command to the current edit widget, if one exists 
 
Add the mentioned event callback to the list of events maintained by the current context 
 
Clear the event list maintained by the current context. 
 
Returns the number of events listed in the current context 
 
Processes any pending events 
 
Set callback pointer for current context filter event 
 
Gets the global active data stream manager for the library. 
 
Returns the color mode of the current context 
 
Returns the pointer to the current default scheme 
 
Returns the display rectangle structure of the physical display 
 
Gets the widget that is currently recieving all widget edit events. 
 
Return a pointer to the widget in focus 
 
Returns the language index of the current context 
 
Get a pointer to the leStringTable structure that maintains the strings, associated fonts, etc 
 
Returns the input enabled status of the current context 
 
Register and track the touch down event and queue it for handling by associated widgets 
 
Register and track the touch moved event and queue it for handling by associated widgets 
 
Register and track the touch up event and queue it for handling by associated widgets 
 
Sets the input status of the current context with the specified input argument 
 
Indicates if any layers of the active screen are currently drawing a frame. 
 
Forces the library to redraw the currently active scene in its entirety. 
 
Removes a custom widget from a static scene root widget. 
 
Allows the current active data stream to run until it preempts or completes. 
 
Initialize the scheme to the default values as per the specified color mode. 
 
Sets the currently active edit widget. 
 
Set into focus the widget specified as the argument 
 
Set the callback function pointer when the language change event occurs 
 
Sets the current language index 
 
Set the StringTable pointer to the specified new StringTableAsset structure 
 
Function to shutdown the active Legato library state. 
 
Closes a stream. 
 
Notifies a stream that its data is ready. 
 
Initialize a stream object 
 
Polls the state of the stream to see if the data request is read. Used if a data ready callback was not provided. 
 
Opens a stream object 
 
Read from a stream object. 
 
Legato library update (tasks) function. 
 
Searches the active scene for a given widget. 
c) Datastructure Functions
 
Name 
Description 
 
Removes all values from a given array. Array capacity remains the same. 
 
Creates a duplicate of an existing array 
 
Initializes a new array. 
 
Finds the first index of a value in the array 
 
Returns the pointer to the entry at index idx 
 
Inserts a value into an array at a given index. All existing nodes from index are shifted right one place. 
 
Removes the last value from the array 
 
Removes the first value from the array. Shuffles all other nodes forward one index. 
 
Pushes a new value onto the back of the array 
 
Pushes a new value onto the front of the array. Shuffles all other nodes backward one index. 
 
Removes the first instance of a value from the array and shuffles all values left to fill the gap 
 
Removes a value from the array at an index 
 
Resizes the capacity of the array. If the array shrinks, any nodes beyond the new capacity will be discarded. 
 
Sets the pointer at idx 
 
Assignes a new pointer to an index in the list 
 
Removes all nodes from a given list 
 
Creates a duplicate of an existing list 
 
Initializes a new linked list 
 
Removes all nodes from a given list and frees the data of each node 
 
Retrieves the index of a value from the list 
 
Retrieves a value from the list 
 
Inserts an item into a list at a given index. All existing from index are shifted right one place. 
 
Removes the last value from the list 
 
Removes the first value from the list 
 
Pushes a new node onto the back of the list 
 
Pushes a new node onto the front of the list 
 
Removes an item from the list 
 
Removes an item from the list at an index 
 
Removes all values from a given array. Array capacity remains the same. 
 
Creates a duplicate of an existing array 
 
Initializes a new rectangle array. 
 
Crops all rectangles to a given width and height. Any remainder will be moved into a new rectangle and will be cropped again if needed. 
 
This is function leRectArray_CropToSize. 
 
Removes all nodes from a given array and frees the memory owned by the array. Resets array capacity to zero. 
 
Inserts a rectangle into an array at a given index. All existing nodes from index are shifted right one place. 
 
Analyzes an array and merges any rectangles similar in size. 
 
Removes the last rectangle from the array 
 
Removes the first value from the array. Shuffles all other nodes forward one index. 
 
Pushes a new rectangle onto the back of the array 
 
Pushes a new rectangle onto the front of the array. Shuffles all other nodes backward one index. 
 
Removes a rectangle from the array at an index 
 
Removes any duplicate rectangles from an array. 
 
Sorts the array by size and then removes any rectangles that are completely overlapped by another larger rectangle. 
 
Resizes the capacity of the array. If the array shrinks, any nodes beyond the new capacity will be discarded. 
 
Sorts a given array largest to smallest. 
 
Sorts a given array in order of the Y coordinate. 
d) Font Functions
 
Name 
Description 
 
Draws a glyph 
 
Draws a glyph from a raw data buffer 
 
Draws a glyph from a raw data buffer 
 
Draws the 'unknown glyph' symbol 
 
Given a font asset and a codepoint, retrieves the glyph kerning data from the font glyph data table. 
 
Given a font asset and a codepoint, retrieves the glyph rectangle in pixels. 
 
Creates a font stream for a given font 
e) Image Functions
 
Name 
Description 
 
Dynamically allocates an image buffer in local memory using the given parameters. 
 
Initializes a leImage pointer 
 
Draws a portion of the given image at the specified coordinates. 
 
Frees an image buffer that was allocated using leImage_Allocate
 
Global function to initialize all image decoders. INTERNAL USE ONLY 
 
Gets a color from a palette asset given an index value. 
f) Memory Functions
 
Name 
Description 
 
Allocates a block from a fixed heap. 
 
Allocates a block from a fixed heap. 
 
Queries a heap to see if it contains a block pointer. 
 
Destroys a fixed heap object. 
 
Dumps the contents of a heap to STDOUT. 
 
Frees a block from a fixed heap. 
 
Initializes a fixed heap object struct. 
 
Validates a heap. 
 
Allocates a block from a variable heap. 
 
Allocates a block from a variable heap. 
 
Queries a heap to see if it contains a block pointer. 
 
This is function leFree. 
 
This is function leMalloc. 
 
This is function leMalloc. 
 
This is function leMemory_Init. 
 
This is function leMemoryDumpAllocations. 
 
This is function leMemoryGetUsageReport. 
 
This is function leMemoryValidateHeaps. 
 
This is function leRealloc. 
 
This is function leRealloc. 
 
Destroys a variable heap object. 
 
Dumps the contents of a heap to STDOUT. 
 
Frees a block from a variable heap. 
 
Initializes a variable heap object struct. 
 
Queries a variable heap to determine the size of a given allocation pointer. 
 
Validates a heap. 
h) String Functions
 
Name 
Description 
 
Given an encoded codepoint (ASCII, UTF-8, or UTF-16) returns the actual codepoint 
 
Constructs a new dynamic string at the given pointer 
 
Allocates a memory for a new dynamic string and automatically calls its constructor function 
 
Constructs a new fixed string at the given pointer 
 
Allocates a memory for a new fixed string and automatically calls its constructor function 
 
Frees the memory that was allocated using the la{TYPE}String_New type allocator functions 
 
draws a leChar string buffer 
 
draws an leString 
 
draws a C-style string buffer 
 
Gets the offset of a string in the string table using an the active global language 
 
Gets the number of languages in a string table 
 
Gets the number of strings in a string table 
 
Gets the font for a string table string 
 
Gets the length of a string in the string table in codepoints 
 
gets the offset of a string in the string table given a string ID and a language ID 
 
Gets the info for a string table string 
 
Converts a C-style string into a leChar buffer 
 
Gets the glyph at a point inside a leChar string bounding rectangle 
 
Gets the glyph at a point inside a C-style string bounding rectangle 
 
Gets a glyph bounding rectangle for a leChar style string 
 
Gets a glyph bounding rectangle for a C-style string 
 
Gets the line count for a leChar style string 
 
Gets the line count for a C-style string 
 
Gets the line indices for a leChar style string 
 
Gets the line indices for a C-style string 
 
Gets the line bounding rectangle for a leChar style string 
 
Gets the line bounding rectangle for a C-style string 
 
Gets the bounding rectangle for a leChar style string 
 
Gets the bounding rectangle for a C-style string 
 
Converts an leChar style buffer to a C-style string 
 
Constructs a new table string at the given pointer 
 
Allocates memory and constructs a new table string 
i) Widget Functions
 
Name 
Description 
 
Initializes a leBarGraphWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the management of this memory until the widget is added to a widget tree. 
 
Initializes an leButtonWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an CheckBox widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leCircleWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leCircularGaugeWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the management of this memory until the widget is added to a widget tree. 
 
Initializes an leCircularSliderWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the management of this memory until the widget is added to a widget tree. 
 
Initializes an leDrawSurfaceWidget widget pointer. 
 
Allocates memory for a new DrawSurface widget. 
 
Initializes an leGradientWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leGroupBoxWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
 
 
 
 
 
 
 
 
 
 
Defines a button widget 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
This is file legato_widget_imageplus.h. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Common functions for the classic widget skin. 
 
 
 
 
 
 
 
Window Widget 
 
Initializes an leImageSequenceWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leImageWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leKeyPadWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leLabelWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leLineGraphWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the management of this memory until the widget is added to a widget tree. 
 
Initializes an leLineWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leListWheelWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leListWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an lePieChartWidget widget pointer. 
 
Allocates memory for and initializes a new widget of this type. The application is responsible for the management of this memory until the widget is added to a widget tree. 
 
Initializes an leProgressBarWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leRadialMenuWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the management of this memory until the widget is added to a widget tree. 
 
Add a button widget to the button list of the selected Radio button group. 
 
This function creates a GFX_GOL_RADIOBUTTON group with the provided button list. 
 
This function destroys the GFX_GOL_RADIOBUTTON group 
 
Remove a button widget to the button list of the selected Radio button group. 
 
Select the button widget specified from the button list for the Radio button group. 
 
Initializes an leRadioButtonWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leScrollBarWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leSliderWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leTextFieldWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leTouchTestWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
Initializes an leWidget widget pointer. 
 
This is function leWidgetEvent_Accept. 
 
Delete the widget object specified 
 
Create a new widget. 
 
Initializes an leWindowWidget widget pointer. 
 
Allocates memory for a new widget of this type. The application is responsible for the managment of this memory until the widget is added to a widget tree. 
 
This is macro DEBUG_END_VFN. 
 
This is macro DEBUG_START_VFN. 
j) Data Types and Constants
 
Name 
Description 
 
A processor description structure. 
 
Button pressed event function callback type 
 
Button released event function callback type 
 
library configuration flags 
 
Checkbox checked event function callback type 
 
Checkbox unchecked event function callback type 
 
Value changed event function callback type 
 
Button pressed event function callback type 
 
Button released event function callback type 
 
Value changed event function callback type 
 
Draw surface draw event function callback type 
 
Function pointer to define an event filter. Event filters allow a receiver to discard undesirable events 
 
Defines a callback to indicate that a font stream has finished decoding a glyph. 
 
legato horizontal alignment values 
 
Image changed event function callback type 
 
 
 
Key click event function callback type 
 
Selected item changed event function callback type 
 
Selected item changed event function callback type 
 
Chart pressed event function callback type 
 
Value changed event function callback type 
 
Radio button deselected function callback type 
 
Radio button selected function callback type 
 
 
 
Value changed event function callback type 
 
Value changed event function callback type 
 
Focus changed event function callback type 
 
Text changed event function callback type 
 
Point added event function callback type 
 
legato vertical alignment values 
 
Struct that defines an event filter. Event filters allow a receiver to discard undesirable events 
 
This is type int16_t. 
 
This is type int32_t. 
 
This is type int64_t. 
 
This is type int8_t. 
 
This is type LE_QUADRANT. 
 
This is type LE_TRIG_FUNCTION_TYPE. 
 
This is type leArcDir. 
 
This is type leBuffer. 
 
This is type leRadialMenuWidget_ItemProminenceChangedEvent. 
 
This is type leRadialMenuWidget_ItemSelectedEvent. 
 
This is type leStream_DataReadyCallback. 
 
This is type uint16_t. 
 
This is type uint32_t. 
 
This is type uint64_t. 
 
This is type uint8_t. 
 
define LE_ASSERT(val) assert(val) define LE_ASSERT_MSG(val, msg) for ( ; !(val) ; assert(val) ) { leSetErrorMessage(msg); } define LE_ASSERT_VAR(val, fmt, ...) for ( ; !(val) ; assert(val) ) { leSprintfErrorMessage(fmt, __VA_ARGS__); } 
 
This is macro LE_ASSERT_MSG. 
 
This is macro LE_ASSERT_THIS. 
 
This is macro LE_ASSERT_VAR. 
 
This is macro LE_COLOR_MODE_COUNT. 
 
This is macro LE_COLOR_MODE_IS_ALPHA. 
 
This is macro LE_COLOR_MODE_IS_INDEX. 
 
This is macro LE_COLOR_MODE_IS_PIXEL. 
 
This is macro LE_COLOR_MODE_LAST_COLOR. 
 
This is macro LE_FIXED_HEAP_COUNT. 
 
This is macro LE_FIXEDHEAP_BLOCK_FOOTER_PTR. 
 
This is macro LE_FIXEDHEAP_BLOCK_SIZE. 
 
This is macro LE_FIXEDHEAP_CHECKSUM. 
 
This is macro LE_FIXEDHEAP_FOOTER_SIZE. 
 
This is macro LE_FIXEDHEAP_HEADER_SIZE. 
 
This is macro LE_FREE. 
 
This is macro LE_IMAGE_FORMAT_COUNT. 
 
This is macro LE_IMAGEDECODER_COMMON_H. 
 
This is macro LE_MALLOC. 
 
This is macro LE_REALLOC. 
 
This is macro LE_RECTANGLEWIDGET_VTABLE. 
 
This is macro LE_STREAM_H. 
 
This is macro LE_STREAM_LOCATION_ID_INTERNAL. 
 
defines meta data sizes for the string table, don't change! 
 
This is macro LE_STRING_ENTRY_SIZE. 
 
This is macro LE_STRING_MAX_CHAR_WIDTH. 
 
This is macro LE_STRING_RENDERER_H. 
 
This is macro LE_STRINGUTILS_H. 
 
This is macro LE_UNKNOWN_GLYPH. 
 
This is macro LEGATO_DRIVER_H. 
 
This is macro LEGATO_DYNAMICSTRING_H. 
 
This is macro LEGATO_FIXEDHEAP_H. 
 
This is macro LEGATO_FIXEDSTRING_H. 
 
This is macro LEGATO_RENDERER_H. 
 
This is macro LEGATO_STATE_H. 
 
This is macro LEGATO_STRINGTABLE_H. 
 
This is macro LEGATO_TABLESTRING_H. 
 
This is macro LEGATO_VARIABLEHEAP_H. 
 
This is macro LEGATO_WIDGET_BAR_GRAPH_H. 
 
This is macro LEGATO_WIDGET_CIRCULAR_GAUGE_H. 
 
This is macro LEGATO_WIDGET_CIRCULAR_SLIDER_H. 
 
This is macro LEGATO_WIDGET_LINE_GRAPH_H. 
 
This is macro LEGATO_WIDGET_PIE_CHART_H. 
 
export macros for shared libraries 
 
This is macro LIBARIA_EVENT_RTOS_H. 
 
This is macro LIBARIA_INPUT_RTOS_H. 
MPLAB® Harmony Graphics Suite