File Widget.c
FileList > engine > src > gameframework > layers > UI > widgets > Widget.c
Go to the source code of this file
#include "Widget.h"#include <stdbool.h>#include <string.h>#include <stdlib.h>#include "Scripting.h"#include "AssertLib.h"#include "DataNode.h"#include "DrawContext.h"#include "Log.h"
Public Types
| Type | Name |
|---|---|
| typedef float(* | GetWorHFn |
Public Functions
| Type | Name |
|---|---|
| struct UIWidget * | FindResolveableDimensionAncestor (struct UIWidget * pWidgetParent, WidgetDimGetterFn getter) |
| float | GetWidgetH (struct UIWidget * pW) |
| struct WidgetDim * | GetWidgetHeightDim (struct UIWidget * pWidget) |
| float | GetWidgetW (struct UIWidget * pW) |
| struct WidgetDim * | GetWidgetWidthDim (struct UIWidget * pWidget) |
| OBJECT_POOL (struct UIWidget) |
|
| void | UI_AddChild (HWidget hParent, HWidget hChild) |
| void | UI_AddFloatPropertyBinding (struct UIWidget * pWidget, char * inBoundPropertyName, char * inBindingExpression, float * pOutData, int viewmodelTableIndex) |
| void | UI_AddIntPropertyBinding (struct UIWidget * pWidget, char * inBoundPropertyName, char * inBindingExpression, int * pOutData, int viewmodelTableIndex) |
| void | UI_AddStringPropertyBinding (struct UIWidget * pWidget, char * inBoundPropertyName, char * inBindingExpression, char ** pOutData, int viewmodelTableIndex) Add a bound string property entry to the widget and initialise a value by calling the binding getter function. |
| size_t | UI_CountWidgetChildren (HWidget hWidget) |
| size_t | UI_CountWidgetChildrenPtr (struct UIWidget * pWidget) |
| void | UI_DebugPrintCommonWidgetInfo (const struct UIWidget * inWidget, PrintfFn pPrintfFn) print a text representation of the widget tree. Falls appart if a widget fails to implement its debug print hook correctly. Shit. DON'T USE |
| void | UI_DefaultOnChildrenChanged (struct UIWidget * outWidget) |
| void | UI_DestroyWidget (HWidget widget) |
| struct WidgetPropertyBinding * | UI_FindBinding (struct UIWidget * pWidget, const char * bindingName) |
| struct UIWidget * | UI_FirstChild (HWidget hWidget) |
| void | UI_GetHitBox (GeomRect outRect, HWidget hWidget) Get the AABB of the widget, excluding padding. |
| HWidget | UI_GetScratchWiget () |
| struct UIWidget * | UI_GetWidget (HWidget hWidget) |
| void | UI_GetWidgetPadding (HWidget hWidget, float * pOutPaddingTop, float * pOutPaddingBottom, float * pOutPaddingLeft, float * pOutPaddingRight) |
| void | UI_GetWidgetSize (HWidget hWidget, float * pOutW, float * pOutH) |
| void | UI_GetWidgetTopLeft (HWidget hWidget, float * pOutLeft, float * pOutTop) get top left BEFORE padding is applied (the raw top left) |
| void | UI_Helper_OnLayoutChildren (struct UIWidget * pWidget, struct UIWidget * pParent) |
| void * | UI_Helper_OnOutputVerts (struct UIWidget * pWidget, VECTOR(WidgetVertex) pOutVerts) |
| void | UI_Init () |
| bool | UI_IsAttributeStringABindingExpression (const char * attributeValue) |
| char * | UI_MakeBindingGetterFunctionName (const char * inBindingName) USER MUST FREE RETURNED PTR append Get_ to the start of the string. |
| char * | UI_MakeBindingSetterFunctionName (const char * inBindingName) |
| HWidget | UI_NewBlankWidget () |
| void | UI_ParseHorizontalAlignementAttribute (const char * contents, enum WidgetHorizontalAlignment * outAlignment) |
| void | UI_ParseVerticalAlignementAttribute (const char * contents, enum WidgetVerticalAlignment * outAlignment) |
| void | UI_ParseWidgetDimsAttribute (const char * attributeContent, struct WidgetDim * outWidgetDims) |
| bool | UI_ParseWidgetDockPoint (struct DataNode * pInNode, struct UIWidget * outWidget) |
| void | UI_ParseWidgetPaddingAttributes (struct DataNode * pInNode, struct WidgetPadding * outWidgetPadding) |
| float | UI_ResolveHeightDimPxls (struct UIWidget * pWidget, const struct WidgetDim * dim) |
| float | UI_ResolveWidthDimPxls (struct UIWidget * pWidget, const struct WidgetDim * dim) |
| void | UI_SendWidgetMouseEvent (struct UIWidget * pWidget, enum WidgetCallbackTypes type, struct WidgetMouseInfo * pMouseInfo) send a mouse event to the widget that will be handled either by either or both a lua function and a c function. If both the C function is called first |
| void | UI_WidgetCommonInit (struct DataNode * pInNode, struct UIWidget * outWidget) Init common attributes that all widgets can have. |
Public Static Functions
| Type | Name |
|---|---|
| const char * | GetDockingPointName (WidgetDockPoint dockingPoint) |
| void | GetTotalAmountAmongChildren (struct UIWidget * pWidgetParent, float * outV, GetWorHFn getWorH, WidgetDimGetterFn dimgetter) |
| void | GetTotalFractionAmongChildren (struct UIWidget * pWidgetParent, float * outV, WidgetDimGetterFn getter) helper that finds all child widgets with width type WD_ParentFraction and returns the total of their "*" values |
| void | ParseLuaCallbacks (struct DataNode * pInNode, struct UIWidget * outWidget) |
| void | ParseWidgetAlignments (struct DataNode * pInNode, struct UIWidget * outWidget) |
| void | ParseWidgetDims (struct DataNode * pInNode, struct UIWidget * outWidget) |
| void | ParseWidgetOffsets (struct DataNode * pInNode, struct UIWidget * outWidget) |
| char * | PopulateBinding (struct WidgetPropertyBinding * pBinding, char * inBindingExpression, char * inBoundPropertyName) |
Macros
| Type | Name |
|---|---|
| define | WIDGET_POOL_BOUNDS_CHECK (handle, rVal) OBJ\_POOL\_BOUNDS\_CHECK(handle, rVal, gWidgetPool) |
| define | WIDGET_POOL_BOUNDS_CHECK_NO_RETURN (handle) OBJ\_POOL\_BOUNDS\_CHECK\_NO\_RETURN(handle, gWidgetPool) |
Public Types Documentation
typedef GetWorHFn
typedef float(* GetWorHFn) (struct UIWidget *pW);
Public Functions Documentation
function FindResolveableDimensionAncestor
struct UIWidget * FindResolveableDimensionAncestor (
struct UIWidget * pWidgetParent,
WidgetDimGetterFn getter
)
function GetWidgetH
float GetWidgetH (
struct UIWidget * pW
)
function GetWidgetHeightDim
struct WidgetDim * GetWidgetHeightDim (
struct UIWidget * pWidget
)
function GetWidgetW
float GetWidgetW (
struct UIWidget * pW
)
function GetWidgetWidthDim
struct WidgetDim * GetWidgetWidthDim (
struct UIWidget * pWidget
)
function OBJECT_POOL
OBJECT_POOL (
struct UIWidget
)
function UI_AddChild
void UI_AddChild (
HWidget hParent,
HWidget hChild
)
function UI_AddFloatPropertyBinding
void UI_AddFloatPropertyBinding (
struct UIWidget * pWidget,
char * inBoundPropertyName,
char * inBindingExpression,
float * pOutData,
int viewmodelTableIndex
)
function UI_AddIntPropertyBinding
void UI_AddIntPropertyBinding (
struct UIWidget * pWidget,
char * inBoundPropertyName,
char * inBindingExpression,
int * pOutData,
int viewmodelTableIndex
)
function UI_AddStringPropertyBinding
Add a bound string property entry to the widget and initialise a value by calling the binding getter function.
void UI_AddStringPropertyBinding (
struct UIWidget * pWidget,
char * inBoundPropertyName,
char * inBindingExpression,
char ** pOutData,
int viewmodelTableIndex
)
Parameters:
pWidgettheWidget to add the property binding. When the value changes the property of the widget will change when OnPropertyChanged is called. 2 way bindings will also be introduced for sliders, text entry fields, ectinBoundPropertyNamebound property name - as it appears in the viewmodel lua tableinBindingExpressionthe incoming binding expression, i.e. {spritename}pOutDatathe value returned from calling the lua string getter - allocates a string setting the pointer. user must deallocateviewmodelTableIndexthe index in the lua registry that contains the lua table containing the function to call
function UI_CountWidgetChildren
size_t UI_CountWidgetChildren (
HWidget hWidget
)
function UI_CountWidgetChildrenPtr
size_t UI_CountWidgetChildrenPtr (
struct UIWidget * pWidget
)
function UI_DebugPrintCommonWidgetInfo
print a text representation of the widget tree. Falls appart if a widget fails to implement its debug print hook correctly. Shit. DON'T USE
void UI_DebugPrintCommonWidgetInfo (
const struct UIWidget * inWidget,
PrintfFn pPrintfFn
)
Parameters:
inWidgetpPrintfFn
function UI_DefaultOnChildrenChanged
void UI_DefaultOnChildrenChanged (
struct UIWidget * outWidget
)
function UI_DestroyWidget
void UI_DestroyWidget (
HWidget widget
)
function UI_FindBinding
struct WidgetPropertyBinding * UI_FindBinding (
struct UIWidget * pWidget,
const char * bindingName
)
function UI_FirstChild
struct UIWidget * UI_FirstChild (
HWidget hWidget
)
function UI_GetHitBox
Get the AABB of the widget, excluding padding.
void UI_GetHitBox (
GeomRect outRect,
HWidget hWidget
)
Parameters:
outRecthWidget
function UI_GetScratchWiget
HWidget UI_GetScratchWiget ()
function UI_GetWidget
struct UIWidget * UI_GetWidget (
HWidget hWidget
)
function UI_GetWidgetPadding
void UI_GetWidgetPadding (
HWidget hWidget,
float * pOutPaddingTop,
float * pOutPaddingBottom,
float * pOutPaddingLeft,
float * pOutPaddingRight
)
function UI_GetWidgetSize
void UI_GetWidgetSize (
HWidget hWidget,
float * pOutW,
float * pOutH
)
function UI_GetWidgetTopLeft
get top left BEFORE padding is applied (the raw top left)
void UI_GetWidgetTopLeft (
HWidget hWidget,
float * pOutLeft,
float * pOutTop
)
Parameters:
hWidgetpOutLeftpOutTop
function UI_Helper_OnLayoutChildren
void UI_Helper_OnLayoutChildren (
struct UIWidget * pWidget,
struct UIWidget * pParent
)
function UI_Helper_OnOutputVerts
void * UI_Helper_OnOutputVerts (
struct UIWidget * pWidget,
VECTOR( WidgetVertex ) pOutVerts
)
function UI_Init
void UI_Init ()
function UI_IsAttributeStringABindingExpression
bool UI_IsAttributeStringABindingExpression (
const char * attributeValue
)
Parameters:
attributeValue
Returns:
is the value of an xml attribute property an absolute value (return false) or is it deferrred to a getter on the lua viewmodel (return true). Special syntax for this is to surround the name of a view model property with "{" and "}"
function UI_MakeBindingGetterFunctionName
USER MUST FREE RETURNED PTR append Get_ to the start of the string.
char * UI_MakeBindingGetterFunctionName (
const char * inBindingName
)
Parameters:
inBindingName
Returns:
function UI_MakeBindingSetterFunctionName
char * UI_MakeBindingSetterFunctionName (
const char * inBindingName
)
function UI_NewBlankWidget
HWidget UI_NewBlankWidget ()
function UI_ParseHorizontalAlignementAttribute
void UI_ParseHorizontalAlignementAttribute (
const char * contents,
enum WidgetHorizontalAlignment * outAlignment
)
function UI_ParseVerticalAlignementAttribute
void UI_ParseVerticalAlignementAttribute (
const char * contents,
enum WidgetVerticalAlignment * outAlignment
)
function UI_ParseWidgetDimsAttribute
void UI_ParseWidgetDimsAttribute (
const char * attributeContent,
struct WidgetDim * outWidgetDims
)
function UI_ParseWidgetDockPoint
bool UI_ParseWidgetDockPoint (
struct DataNode * pInNode,
struct UIWidget * outWidget
)
function UI_ParseWidgetPaddingAttributes
void UI_ParseWidgetPaddingAttributes (
struct DataNode * pInNode,
struct WidgetPadding * outWidgetPadding
)
function UI_ResolveHeightDimPxls
float UI_ResolveHeightDimPxls (
struct UIWidget * pWidget,
const struct WidgetDim * dim
)
function UI_ResolveWidthDimPxls
float UI_ResolveWidthDimPxls (
struct UIWidget * pWidget,
const struct WidgetDim * dim
)
function UI_SendWidgetMouseEvent
send a mouse event to the widget that will be handled either by either or both a lua function and a c function. If both the C function is called first
void UI_SendWidgetMouseEvent (
struct UIWidget * pWidget,
enum WidgetCallbackTypes type,
struct WidgetMouseInfo * pMouseInfo
)
Parameters:
pWidget<br>pMouseInfodata about the event
function UI_WidgetCommonInit
Init common attributes that all widgets can have.
void UI_WidgetCommonInit (
struct DataNode * pInNode,
struct UIWidget * outWidget
)
- "the base class constructor"
Parameters:
pInNodeoutWidget
Public Static Functions Documentation
function GetDockingPointName
static const char * GetDockingPointName (
WidgetDockPoint dockingPoint
)
function GetTotalAmountAmongChildren
static void GetTotalAmountAmongChildren (
struct UIWidget * pWidgetParent,
float * outV,
GetWorHFn getWorH,
WidgetDimGetterFn dimgetter
)
function GetTotalFractionAmongChildren
helper that finds all child widgets with width type WD_ParentFraction and returns the total of their "*" values
static void GetTotalFractionAmongChildren (
struct UIWidget * pWidgetParent,
float * outV,
WidgetDimGetterFn getter
)
Parameters:
pWidgetParent
Returns:
function ParseLuaCallbacks
static void ParseLuaCallbacks (
struct DataNode * pInNode,
struct UIWidget * outWidget
)
function ParseWidgetAlignments
static void ParseWidgetAlignments (
struct DataNode * pInNode,
struct UIWidget * outWidget
)
function ParseWidgetDims
static void ParseWidgetDims (
struct DataNode * pInNode,
struct UIWidget * outWidget
)
function ParseWidgetOffsets
static void ParseWidgetOffsets (
struct DataNode * pInNode,
struct UIWidget * outWidget
)
function PopulateBinding
static char * PopulateBinding (
struct WidgetPropertyBinding * pBinding,
char * inBindingExpression,
char * inBoundPropertyName
)
Macro Definition Documentation
define WIDGET_POOL_BOUNDS_CHECK
#define WIDGET_POOL_BOUNDS_CHECK (
handle,
rVal
) `OBJ_POOL_BOUNDS_CHECK(handle, rVal, gWidgetPool)`
define WIDGET_POOL_BOUNDS_CHECK_NO_RETURN
#define WIDGET_POOL_BOUNDS_CHECK_NO_RETURN (
handle
) `OBJ_POOL_BOUNDS_CHECK_NO_RETURN(handle, gWidgetPool)`
The documentation for this class was generated from the following file /home/runner/work/2DFarmingRPG/2DFarmingRPG/Stardew/engine/src/gameframework/layers/UI/widgets/Widget.c