API Reference
From Flowcode Help
Jump to navigationJump to search<sidebar>API Contents</sidebar> Flowcode provides an application programming interface to help writing simulation and PC-side programs.
This API is a list of macros built in to Flowcode with each group, or class, of macros dealing with a specific area of the system.
Use of this API is limited to simulation only - when downloaded to the chip these calls will be omitted, so if need be they can be interleaved in downloadable code.
Below is a reference to the classes and macros available:
| Component | |
|---|---|
| SetInteractive | Sets whether a component can interact with the mouse | 
| GetInteractive | Gets whether a component can interact with the mouse | 
| SetVisible | Sets whether a component can be seen on the panel | 
| GetVisible | Gets whether a component can be seen on the panel | 
| SetSolid | Sets whether a component is checked in collision detections | 
| GetSolid | Gets whether a component is checked in collision detections | 
| SetCompile | Sets whether a component is considered for compilation or not | 
| GetCompile | Gets whether a component will be compiled or not | 
| GetInstance | Gets the type-instance of the component, >= 1 is valid | 
| FindChild | Finds a named object that is part of the component | 
| GetParent | Gets the owner of the components handle | 
| GetNext | Gets the next (younger) sibling of the components handle | 
| GetLast | Gets the previous (elder) sibling of the components handle | 
| GetChildHead | Gets the first (eldest) child of the component | 
| GetChildTail | Gets the last (youngest) child of the component | 
| GetOriginal | Gets the original definition of the component, returns Current if no original copy | 
| Clone | Clones an existing object to another position on the panel | 
| Delete | Deletes an existing object, removing it from the panel | 
| Component.Property | |
| GetValue | Gets the value of a property as a string | 
| SetColor | Sets a components 'color' property as a R,G,B value | 
| SetValue | Sets a components property as a string | 
| CopyValue | Copies a property value from one target to another | 
| SetChildValues | Sets all child components property as a string | 
| CopyChildValues | Copies the values of a properties children from the source to dest | 
| SetVisible | Sets whether the property is visible or not | 
| SetWritable | Sets whether the property can be edited in the UI or not | 
| GetVisible | Gets whether the property is visible or not | 
| GetWritable | Gets whether the property can be edited in the UI or not | 
| GetFilter | Gets a components property filter string for lists, files, etc | 
| SetFilter | Sets a components property filter string for lists, files, etc | 
| CopyFilter | Copies a property filter from one target to another | 
| GetListIndex | Gets a single lists index value from a property by line number | 
| GetListItem | Gets a single list entry from a property by named index | 
| SetListItem | Sets an existing list entries text for the property by named index | 
| AddListItem | Alters or appends a list entries text for the property by named index | 
| Panel.Position | |
| Get | Gets a handle to an object representing the components current position | 
| GetOrigin | Gets a handle to an empty position | 
| Set | Sets an objects position based on a component or pre-defined position | 
| SetCoords | Sets an objects coordinates based on a position | 
| SetScale | Sets an objects scale based on a position | 
| SetRotation | Sets an objects orientation based on a position | 
| GetBox | Gets a handle to an object representing the components bounding box position | 
| Morph | Blends positions from two sources to a destination | 
| Animate | Blends positions from two sources to a destination over time | 
| StopAnimate | Stops all animations started by this component | 
| MoveAlong | Moves the object by the given offset relative to its parent along an axis | 
| MoveBy | Moves the object by the given offset relative to its parent | 
| MoveTo | Moves the object to the given coordinates relative to its parent | 
| ScaleTo | Sets the objects scale to a value | 
| ScaleUp | Multiplies the objects scale by a value | 
| ScaleDown | Divides the objects scale by a value | 
| RotateTo | Rotates the object to the given rotation | 
| RotateAlong | Rotates the object by the given rotation along an axis | 
| RotateX | Rotates the object around the X axis | 
| RotateY | Rotates the object around the Y axis | 
| RotateZ | Rotates the object around the Z axis | 
| GetCoords | Returns the positions coordinates in (X,Y,Z) array | 
| GetScale | Returns the positions scale in (X,Y,Z) array | 
| GetQuat | Returns the positions quaternion in (X,Y,Z,W) array | 
| GetEuler | Returns the positions euler angles in (P,Y,R) array | 
| Panel.Position.Math | |
| GetDistance | Gets the distance between two positions | 
| GetDiff | Gets the difference between two positions | 
| Panel.Position.Camera | |
| GetEye | Gets a handle to the eye camera position | 
| GetTarget | Gets a handle to the target camera position | 
| SetView | Sets the eye and target focal point of the camera | 
| SetLookAt | Sets the eye and target point of the camera | 
| SetEye | Sets the eye point of the camera | 
| SetTarget | Sets the target point of the camera | 
| Spin | Rotates the camera along its view axis | 
| Panel.PCloud | |
| Create | Creates a new point cloud tied to a position handle | 
| SetPos | Sets the position for the point cloud to be located at | 
| GetPos | Gets the position the point cloud is located at | 
| SetPoints | Sets the X,Y,Z point lists | 
| SetPointsEx | Sets the X,Y,Z point lists | 
| SetGrid | Sets the X,Y,Z point lists in a height-map grid | 
| SetGridEx | Sets the X,Y,Z point lists in a height-map grid | 
| SetGridFlat | Sets the X,Y,Z point lists in a flat height-map grid | 
| SetGridPoint | Given an XY on the grid, sets the vertex value at that point | 
| UnitScale | Creates a unit scaled axis (X, Y or Z) with a center of zero and a range of two | 
| SetColor | Sets the RGB colour of the entire cloud | 
| SetColors | Sets the RGB colour of the individual points in the cloud | 
| SetGridColor | Given an XY on the grid, sets the vertex colour at that point | 
| SetMode | Sets the rendering mode of the point cloud | 
| SetPointLight | Enables or disables simple lighting for point mode, providing a normal passing through the point and (0,0,0) | 
| Update | Manually refresh the screen the point cloud exists on | 
| Panel.LinkBar | |
| Create | Creates a new bar linking a pair of position handles | 
| SetVisible | Sets whether the link is displayed or not | 
| SetStartPos | Sets the position for the start point of the bar | 
| SetEndPos | Sets the position for the end point of the bar | 
| SetStartAdjustment | Sets the clipping adjustments for the beginning of the link | 
| SetEndAdjustment | Sets the clipping adjustments for the end of the link | 
| SetStartGfx | Sets the graphic for the start point of the bar | 
| SetBarGfx | Sets the graphic for the main line of the bar | 
| SetEndGfx | Sets the graphic for the end point of the bar | 
| GetStartPos | Gets the position the bars start point is located at | 
| GetBarPos | Gets the position the bar is located at | 
| GetEndPos | Gets the position the bars end point is located at | 
| Update | Manually refresh the screen the point cloud exists on | 
| EnableAuto | Sets whether Flowcode should automatically draw links for component object property types | 
| Panel.Collision | |
| TestTable | Tests whether an object collides with the table top, returns Z distance to move to rest on the table | 
| TestSingle | Tests whether an object collides with a position | 
| GetSingleAxis | Tests whether an object collides with a position | 
| GetSinglePos | Returns the position to move Pos to so it does not collide with Test - null if no collide | 
| GetMultiAxis | Tests whether an object collides with a position | 
| GetMultiPos | Returns the position to move Pos to so it does not collide with any other object - null if no collide | 
| Panel.Graphics | |
| Redraw | Sends a redraw request to the given component | 
| SetColor | Sets the draw colour for and subsequent graphics objects | 
| SetColorRGB | Sets the draw colour for and subsequent graphics objects | 
| SetTextFont | Sets the text font for subsequent text objects | 
| SetTextScale | Sets the text scale for subsequent text objects | 
| SetLineThickness | Sets the thinkness when drawing lines and points | 
| DrawCreate | Creates a drawing area on a shape | 
| DrawBegin | Begins drawing on a given shape | 
| DrawEnd | Ends drawing started with DrawBegin() | 
| DrawDelete | Deletes a drawing area for a shape | 
| DrawText | Draws a line of text texture | 
| DrawPoint | Draws a point on a texture | 
| DrawLine | Draws a line on a texture | 
| DrawLineA | Draws a smooth line on a texture | 
| DrawRect | Draws a rectangle on a texture | 
| DrawCircle | Draws a circle on a texture | 
| Panel.Graphics.Shape | |
| Image | Sets the image to draw on the last drawn shape | 
| Mouse | |
| GetButtons | Gets the button state from the mouse: 4 for left, 1 for right | 
| GetFocus | Gets the handle of the component under the mouse | 
| GetPosition | Gets the position of the mouse, intersecting with a component or the viewing plane | 
| GetPosition2D | Gets the X/Y position of the mouse in screen coords | 
| GetClickSide | Gets the side of the component clicked on, 0 to 5 | 
| FCD | |
| GetItemValue | Gets a paths item value from the FCD document | 
| GetItemHandle | Gets a FCD items handle, suitable for traversal with the Tree API | 
| GetPathHandle | Gets a FCD paths handle, suitable for traversal with the Tree API | 
| Sound | |
| Play | Plays a formatted file sound, returns true if the sound played OK | 
| LoadWav | Loads a wave file into memory, providing the values needed to play it | 
| Create | Creates a sound object that data can be played through | 
| SetVolume | Sets the volume of playbacks for this sound | 
| GetVolume | Gets the volume of playbacks for this sound in the range 0 to 1 | 
| GetBits | Gets the number of bits per sample for the sound | 
| GetRate | Gets the current sample rate for the sound | 
| SetRate | Sets the current sample rate for the sound - this will stop the playing sound | 
| Queue | Queues a sound for playing | 
| QueueEx | Queues a sound for playing, with the format provided | 
| Flush | Stops all playing and queued sounds | 
| GetPending | Gets the number of sample blocks queued or playing for the sound | 
| Scope | |
| AddGroup | Adds a group to the scope to which streams may be added | 
| AddStream | Adds a stream to the given group suitable for inputs and operations | 
| AddBuffer | Adds a fixed-view stream to the given group suitable for inputs and operations | 
| Rename | Renames the given scope group, stream or buffer | 
| AddPort | Adds an input to the stream from a port | 
| AddAnalog | Adds an input to the stream from an analog channel | 
| AddCustom | Adds an input to the stream from a custom injection | 
| AddOp | Adds an operation to act on the inputs of the stream | 
| ClearOps | Clears all inputs and operations from the given stream | 
| SetBuffer | Sets the contents of a snapshot stream | 
| SetCustom | Sets one of 32 custom analog values for the group | 
| GetSnapshot | Gets a block of the output stream with each input sample operated on, returns number of samples read | 
| FindOutput | Searches back through the output history for a value, returns offset of found sample from TimeUS, 0 if not found | 
| FindBaud | Attempts to calculate the baud given a series of transitions for the stream, returns calculated baud | 
| AddOverlay | Adds a packet overlay to the stream at a given offset from the current time | 
| AddOverlays | Adds overlay packets to the stream by decoding the stream contents | 
| ClearOverlays | Clears existing overlay packets from the stream | 
| ClearAllOverlays | Clears all existing overlay packets from the stream | 
| Console | |
| AddText | Adds a window to the list of consoles available | 
| AddMemory | Adds a window to the list of consoles available | 
| GetDefault | Gets the default (read-only) console window | 
| Rename | Renames the given console | 
| SetMemMode | Sets whether to show address and bytes for the console | 
| SetInputRGB | Sets the colour of text inserted by the user from now on | 
| SetOutputRGB | Sets the colour of text inserted by the component from now on | 
| WriteText | Adds a block of text to the console window | 
| GetLineText | Reads a line of text from the given console, pass -1 for final line | 
| SetLineText | Writes a line of text from the given console, pass -1 for final line | 
| GetLineBytes | Reads a line of bytes from the given console extending the array if needed | 
| SetLineBytes | Writes a line of bytes from the given console, pass -1 for final line | 
| CountLines | Counts the number of lines in the console | 
| ClearText | Clears all the text in the console | 
| Connection | |
| GetPort | Gets a ports value from its index | 
| SetPort | Sets a ports value from its index | 
| GetAn | Gets an analog value from its channel index | 
| SetAn | Sets an analog value from its index, range 0->1 | 
| Expand | |
| PathName | Expands a string using the built-in pathname expansion variables | 
| MacroName | Expands a string to the name of a macro used in the generated code | 
| VarName | Expands a string to the name of a global variable used in the generated code | 
| Property | Expands a string to the name of a property used in the generated code | 
| MacroHead | Expands a macro name to the code generated for the header of that macro | 
| MacroBody | Expands a macro name to the code generated for the body of that macro | 
| MacroTail | Expands a macro name to the code generated for the tail of that macro | 
| Tree | |
| GetValue | Gets the value of the given object, if available | 
| GetName | Gets the name of the given object | 
| GetPath | Gets the full '.' separated name of the given object | 
| GetSubValue | Gets the value of a named sub-item of the given object, if available | 
| Traverse | Updates the object to step depth-first through the tree | 
| StepNext | Updates the object to point to the next (younger) sibling | 
| StepNamedNext | Updates the object to point to the next (younger) sibling matching the name | 
| StepNamedIndex | Updates the object to point to the Nth next (younger) sibling matching the name | 
| StepLast | Updates the object to point to the last (elder) sibling | 
| StepParent | Updates the object to point to its parent object | 
| StepRoot | Updates the object to point to the root of the tree | 
| StepChildHead | Updates the object to point to the head (eldest) child | 
| StepChildTail | Updates the object to point to the tail (youngest) child | 
| StepChildPath | Updates the object to point to the '.' separated named child path | 
| CountChildren | Returns the number of immediate children present for the object | 
| CheckChildren | Returns true if the object has children, else false | 
| CountNamedChildren | Returns the number of immediate children present for the object | 
| CheckParent | Returns true if the object has a parent, else false if it is the root | 
| StepSubHead | Updates the object to point to the head (eldest) attribute, if any | 
| StepSubTail | Updates the object to point to the tail (youngest) attribute, if any | 
| StepSubName | Updates the object to point to the named attribute, if any | 
| GetCopy | Creates a copy of the handle and returns the copy | 
| File | |
| AbsPath | Gets an absolute path from a relative filename | 
| RelPath | Gets an relative path from an absolute filename | 
| CreateDir | Creates a directory structure | 
| GetType | Finds the type of a file: 0=Unknown, 1=File, 2=Dir, 4=Disk | 
| GetSize | Gets the number of bytes in the file, by handle or name | 
| Delete | Deletes the file or directory structure | 
| Create | Creates the new file as a standard stream | 
| Open | Opens the existing file as a standard stream | 
| ReadArray | Reads an array from the file, returns elements read | 
| WriteArray | Writes an array to the file | 
| SetPos | Sets the position of the next read or write in the file | 
| GetPos | Gets the position of the next read or write in the file | 
| Flush | Writes all unwritten data to the file in one block | 
| File.Buffer | |
| Open | Opens the existing file as a circular buffer | 
| Create | Creates the new file as a circular buffer | 
| ReadByte | Reads a single byte from the input stream, -1 if empty | 
| WriteByte | Writes a single byte to the input stream | 
| ReadArray | Reads an array from the input stream, returns elements read | 
| WriteArray | Writes an array to the input stream | 
| File.NVM | |
| Open | Opens the existing file as a block of non-volatile memory | 
| Create | Creates the new file as a block of non-volatile memory | 
| ReadByte | Reads a single byte from the NVM, -1 if empty | 
| WriteByte | Writes a single byte to the NVM multiple times | 
| ReadArray | Reads an array from the NVM, returns elements read | 
| WriteArray | Writes an array to the NVM | 
| Time | |
| GetMillisecs | Returns the value of a monotonic non-decrementing millisecond counter | 
| GetUTC | Returns the current UTC Modified Julian Date value | 
| GetLocal | Returns the current local time as a Modified Julian Date value | 
| AddMJD | Increments or decrements a Modified Julian Date and millisecond value | 
| MJDToDate | Converts a Modified Julian Date into a Gregorian calendar date | 
| DateToMJD | Converts a Gregorian calendar date into a Modified Julian Date | 
| MJDToSeconds | Converts a Modified Julian Date into a number of seconds since a specified epoch | 
| SecondsToMJD | Returns the Modified Julian Date given by the number of seconds since a specified epoch | 
| MJDToWeekday | Gets the day of the week that the MJD represents | 
| GetLeapYear | Returns true if the given year is a leap year, else false | 
| GetMonthDays | Returns the number of days in the given month | 
| Language | |
| Translate | Takes English text and optional hint and converts to the current language | 
| System | |
| Notify | Sends a System.User message to the targeted component | 
| Forward | Sends the currently processing message to the target | 
| ShowHandle | Given a handle to an object with viewable presence, shows that object on screen | 
| CreateHandle | Creates a general-purpose garbage collected handle for resource management | 
| SetHandleWord | Sets a general purpose word in the handle for use by its owner | 
| GetHandleWord | Gets a general-purpose word set by the owner of a custom handle | 
| DeleteHandle | Deletes any handle created by the component | 
| GetSender | Gets the handle of the component that posted this event - 0 for system | 
| TimerStart | Calls the Component.Timer event with Ident as an argument after Millisecs time | 
| TimerStop | Kills any timers with the given ident for this component | 
| WDTEnable | Enables or disables the software watchdog during long operations | 
| ClaimEvent | Claims an event message by name, returns true if claimed | 
| ReleaseEvent | Releases a previously claimed an event message by name, returns true if released | 
| EnableEvent | Allows an event to be fired or removes the ability for an event to fire - this may be nested | 
| ClaimMouse | Claims mouse clicks for the target object | 
| ReleaseMouse | Releases mouse clicks for the target object | 
| RedirectMacros | Allows calls to one of your children to be redirected to another component | 
| Debug | |
| Prints out the string or value on a line in the debug window | |
| PrintLn | Prints out the string or value with a new-line in the debug window | 
