#pragma once #include #include #include #include #include #include //#include #include #include #include #include #include "la_5.h" #include "la_data.h" //#include "llvm-c/Analysis.h" //#include "llvm-c/BitWriter.h" //#include "llvm-c/Core.h" //#include "llvm-c/ExecutionEngine.h" //#include "llvm-c/Target.h" //#include #define LA_VERSION_MAIN 5 #define LA_VERSION_SUB 0 #define LA_VERSION_MINOR 0 #define LA_UDF_CAPABILITY_MAIN 5 #define LA_UDF_CAPABILITY_SUB 0 #define LA_UDF_CAPABILITY_MINOR 0 #define LA_ACTUATOR_CAPABILITY_MAIN 5 #define LA_ACTUATOR_CAPABILITY_SUB 0 #define LA_ACTUATOR_CAPABILITY_MINOR 0 #define LA_NODE_MAIN_MODULE_NAME "LA_NODE_MAIN_MODULE" #define LA_GUI_WNDCLASS_NAME "LA_WINDOW_CLASS" #define LA_ARROW 1 #define LA_CROSS 2 #define LA_LEFT_RIGHT 3 #define LA_UP_AND_DOWN 4 #define LA_HAND 5 #define LA_MOVE 6 #define EVT_WND_MOVE -1 #define EVT_WND_SIZE_BEGIN -2 #define EVT_WND_SIZE_FINISH -3 #define EVT_WND_SIZE -4 #define EVT_WND_SHOW -5 #define EVT_FEEDBACK 8192 #define LA_KEYBOARD_EVENT (1<<0) #define LA_MOUSE_EVENT (1<<1) #define LA_STATE_MOVE (1<<2) #define LA_STATE_DOWN (1<<3) #define LA_STATE_UP (1<<4) #define LA_TIME_EVENT (1<<5) #define LA_TIME_IDLE (LA_TIME_EVENT|(1<<6)) #define LA_TIME_DELAY (LA_TIME_EVENT|(1<<7)) #define LA_KEY_MOUSE_LEFT (1<<8) #define LA_KEY_MOUSE_MIDDLE (1<<9) #define LA_KEY_MOUSE_RIGHT (1<<10) #define LA_KEY_MOUSE_SCROLL (1<<11) #define LA_KEY_BACKSPACE (1<<12) #define LA_KEY_ESCAPE (1<<13) #define LA_KEY_ENTER (1<<14) #define LA_INPUT (1<<15) #define LA_KEY_ARRLEFT (1<<16) #define LA_KEY_ARRRIGHT (1<<17) #define LA_KEY_ARRUP (1<<18) #define LA_KEY_ARRDOWN (1<<19) #define LA_KEY_SHIFT (1<<20) #define LA_KEY_CTRL (1<<21) #define LA_KEY_ALT (1<<22) #define LA_KEY_DELETE (1<<23) #define LA_KEY_TAB (1<<24) #define LA_KEY_SPECIALS (LA_KEY_CTRL|LA_KEY_SHIFT|LA_KEY_ALT) #define LA_MOUSEMOVE (LA_MOUSE_EVENT | LA_STATE_MOVE) #define LA_EMPTY LA_MOUSEMOVE #define LA_MOUSEDOWN (LA_MOUSE_EVENT | LA_STATE_DOWN) #define LA_MOUSEUP (LA_MOUSE_EVENT | LA_STATE_UP) #define LA_WHEEL (LA_MOUSE_EVENT | LA_KEY_MOUSE_SCROLL) #define LA_L_MOUSE_DOWN (LA_MOUSE_EVENT | LA_STATE_DOWN | LA_KEY_MOUSE_LEFT) #define LA_L_MOUSE_UP (LA_MOUSE_EVENT | LA_STATE_UP | LA_KEY_MOUSE_LEFT) #define LA_M_MOUSE_DOWN (LA_MOUSE_EVENT | LA_STATE_DOWN | LA_KEY_MOUSE_MIDDLE) #define LA_M_MOUSE_UP (LA_MOUSE_EVENT | LA_STATE_UP | LA_KEY_MOUSE_MIDDLE) #define LA_R_MOUSE_DOWN (LA_MOUSE_EVENT | LA_STATE_DOWN | LA_KEY_MOUSE_RIGHT) #define LA_R_MOUSE_UP (LA_MOUSE_EVENT | LA_STATE_UP | LA_KEY_MOUSE_RIGHT) #define LA_MOUSE_WHEEL_DOWN (LA_MOUSE_EVENT | LA_STATE_DOWN | LA_KEY_MOUSE_SCROLL) #define LA_MOUSE_WHEEL_UP (LA_MOUSE_EVENT | LA_STATE_UP | LA_KEY_MOUSE_SCROLL) #define LA_KEY_DOWN (LA_KEYBOARD_EVENT | LA_STATE_DOWN) #define LA_KEY_UP (LA_KEYBOARD_EVENT | LA_STATE_UP) #define LA_LEFT_DOWN (LA_KEYBOARD_EVENT | LA_KEY_ARRLEFT | LA_STATE_DOWN) #define LA_RIGHT_DOWN (LA_KEYBOARD_EVENT | LA_KEY_ARRRIGHT | LA_STATE_DOWN) #define LA_UP_DOWN (LA_KEYBOARD_EVENT | LA_KEY_ARRUP | LA_STATE_DOWN) #define LA_DOWN_DOWN (LA_KEYBOARD_EVENT | LA_KEY_ARRDOWN | LA_STATE_DOWN) #define LA_LEFT_UP (LA_KEYBOARD_EVENT | LA_KEY_ARRLEFT | LA_STATE_UP) #define LA_RIGHT_UP (LA_KEYBOARD_EVENT | LA_KEY_ARRRIGHT | LA_STATE_UP) #define LA_UP_UP (LA_KEYBOARD_EVENT | LA_KEY_ARRUP | LA_STATE_UP) #define LA_DOWN_UP (LA_KEYBOARD_EVENT | LA_KEY_ARRDOWN | LA_STATE_UP) #define LA_BACKSPACE_DOWN (LA_KEYBOARD_EVENT | LA_KEY_BACKSPACE | LA_STATE_DOWN) #define LA_BACKSPACE_UP (LA_KEYBOARD_EVENT | LA_KEY_BACKSPACE | LA_STATE_UP) #define LA_ESCAPE_DOWN (LA_KEYBOARD_EVENT | LA_KEY_ESCAPE | LA_STATE_DOWN) #define LA_ESCAPE_UP (LA_KEYBOARD_EVENT | LA_KEY_ESCAPE | LA_STATE_UP) #define LA_ENTER_DOWN (LA_KEYBOARD_EVENT | LA_KEY_ENTER | LA_STATE_DOWN) #define LA_ENTER_UP (LA_KEYBOARD_EVENT | LA_KEY_ENTER | LA_STATE_UP) #define LA_ONLY_BITS_AND(orig, yours) \ ((orig & yours) == yours) NEED_STRUCTURE(laTunnel); NEED_STRUCTURE(laUiList); NEED_STRUCTURE(laUiItem); NEED_STRUCTURE(laColumn); typedef void (*laUiDrawFunc)(void *, int); //Instance,Theme typedef void (*laPanelDrawFunc)(void *, void *, void *); //Window,Instance,Theme //typedef void(*laUiDefineFunc)(laUiList*,laPropPack*,laPropPack*,laColumn*);//uil,collection inst+"This" inst,actuator inst,Extra column list. typedef void (*laOperatorArgumentParserFunc)(laStringSplitor *, uint32_t *, char *); //icon id,display string buf typedef int (*laUiGetHeightFunc)(laUiItem *); typedef int (*laUiGetMinWidthFunc)(laUiItem *); typedef int (*laUiConditionFunc)(laPropPack *); //maybe inst+actuator,replaceInst typedef void (*laUiDestroyFunc)(laUiItem *); typedef void (*laUiInitFunc)(laUiItem *); typedef void (*laUiRefreshFunc)(laUiItem *); typedef void (*laLayoutBkgDrawFunc)(void *, void *l); typedef void (*laPreFrameF)(); typedef void (*laPreDrawF)(); typedef void (*laPostFrameF)(); typedef void (*laCleanupF)(); STRUCTURE(laEvent){ laListItem Item; int Type; int state; int x, y; int key; int SpecialKeyBit; int p1, p2; uint32_t Input; int IsEraser; real Pressure,AngleX,AngleY; void *Localized; //void* BoardcastedData; }; NEED_STRUCTURE(laWindow) NEED_STRUCTURE(laRoot) NEED_STRUCTURE(laPanel) NEED_STRUCTURE(laUiItem) NEED_STRUCTURE(laUiList) NEED_STRUCTURE(laAnimationAction) NEED_STRUCTURE(laUiDescriptor) NEED_STRUCTURE(laUiConditionNode) STRUCTURE(laSharedTypeItem){ laListItem Item; char ID[64]; void *Pointer; }; #define LA_ANIMATION_STOPPED 0 #define LA_ANIMATION_PLAYING 1 #define LA_ANIMATION_PLAYING_REVERSE 2 STRUCTURE(laAnimationGlobal){ laListItem Item; int PlayStatus; int Frame; int FrameBegin, FrameEnd; int FrameStep; int FrameRate; }; NEED_STRUCTURE(laTranslation); NEED_STRUCTURE(laTheme); STRUCTURE(laKeyMapper){ laListItem Item;//unused; laListHandle Items; }; STRUCTURE(laLogEntry){ laListItem Item; laSafeString* Content; int Type; }; NEED_STRUCTURE(laManagedUDF); STRUCTURE(laNodeOutSocket){ void* Parent; void* Data; laSafeString* Label; int DataType, ArrLen; int RuntimeX, RuntimeY, RuntimePX, RuntimePY; }; STRUCTURE(laNodeInSocket){ laNodeOutSocket* Source; laSafeString* Label; int DataType, ArrLen; int ColorId; int RuntimeX, RuntimeY, RuntimePX, RuntimePY; }; NEED_STRUCTURE(laBaseNodeType); NEED_STRUCTURE(laRackPage); NEED_STRUCTURE(laNodeCategory); STRUCTURE(laRackPageCollection){ laRackPage* CurrentPage; laListHandle Pages; laListHandle Eval; int NeedEval,NeedRebuild; }; typedef laBaseNodeType* (*laGetBaseNodeTypeF)(char* str); STRUCTURE(LA){ laListItem Hyper; laListHandle Logs; laListHandle Controllers; int NextControllerID; laListHandle Windows; laListHandle WastedPanels; laPreFrameF PreFrame; laPreDrawF PreDraw; laPostFrameF PostFrame; laCleanupF Cleanup; real IdleStart, DelayStart; int DelayTriggered; int IdleTriggered; int ReTriggerOperators; laPanel* DockingPanel; char *InputBuf; int InputBufNext, InputBufMax; int32_t *InputBufU; int InputBufUNext, InputBufUMax; Atom MsgDelWindow; Atom bufid; Atom fmtid; Atom propid; Atom incrid; Atom targets_atom; Atom text_atom; Atom UTF8; Atom selection; laSafeString* CopyPending; Display* dpy; XVisualInfo* xvi; GLXFBConfig BestFBC; GLXContext glc; Colormap cmap; XIM im; XIC ic; int xi_opcode; int WacomDeviceStylus; real StylusPressure, StylusAngleX, StylusAngleY; int WacomDeviceEraser; real EraserPressure, EraserAngleX, EraserAngleY; int PointerIsEraser,IsPen; laWindow *CurrentWindow; laPanel *CurrentPanel; int InitDone; int SpecialKeyStates; laKeyMapper KeyMap; laHash256 OperatorTypeHash; laPropContainer *GeneralIntSub; laPropContainer *GeneralFloatSub; laPropContainer *GeneralEnumSub; laPropContainer *GeneralIntArraySub; laPropContainer *GeneralFloatArraySub; laPropContainer *GeneralEnumArraySub; laPropContainer *GeneralStringSub; laPropContainer *GeneralOperatorSub; laPropContainer *GeneralCollectionSub; laPropContainer *GeneralRawSub; laPropContainer *ContainerInt; laPropContainer *ContainerFloat; laPropContainer *ContainerEnum; laPropContainer *ContainerString; laPropContainer *ContainerOperator; laPropContainer *ContainerCollection; laListHandle PropContainers; laRoot DataRoot; laPanel *PropMatcherContextP; laAnimationGlobal Animation; laTheme* CurrentTheme; laListHandle Themes; laListHandle UiTypes; laListHandle InitPanelTemplates; laListHandle PanelTemplates; laListHandle View2DTemplates; laUiDefineFunc MenuButtons; laUiDefineFunc MenuExtras; const char* MenuProgramName; laHash256 GlobalMemPool; int ByteCount; int TotalByteCount; laHash65536* DBInstMemLeft;// list item pointers laHash16M DBInst2; laHash16M DBInst1; laHash16M PtrSync; laListHandle PtrSyncAddressCommands; laListHandle PtrSyncHyper2Commands; laListHandle PostReadNodes; laListHandle RenewHyper2s; laListHandle SharedTypePointerSync; laListHandle PendingResourceRequests; laListHandle ResourceFolders; laListHandle ResourceRegistries; laListHandle UDFResources; laListHandle ManagedUDFs; laListHandle ManagedSaveProps; laManagedUDF* DummyManageUDF; int ManagerDefaultView; laListHandle DBInstPendingAcquireDBP; laListHandle DBInstPendingAcquireDiffCMD; laListHandle DiffTouched; laListHandle Differences; laDiff* HeadDifference; laDBInst RootDBInst; laListHandle DBRecordedProps; laHash65536* DBInstLink; real FontSize; real MarginSize; int UiRowHeight; int ScaledUiRowHeight; real UiScale; void *ToPanel; int NextX, NextY, NextW, NextH; laNodeInSocket tNodeIn; laNodeOutSocket tNodeOut; laAuthorInfo Author; laListHandle ExternalAuthors; laSafeString *WorkingDirectory; //pthread_spinlock_t csNotifier; laListHandle ThreadNotifiers; //preference: //color int ColorAccessCorrectGamma; real Gamma; int NextWireColor, WireColorSlices; real WireThickness; real WireSaggyness; real* WireColorCache; //user interactions: int TopFramerate; int ValuatorThreshold; int ScrollingSpeed; int TooltipCloseDistance; real ZoomSpeed2D; real IdleTime; real DelayTime; //translations: laTranslation Translation; //display: real FloatingAlpha; int SolidShadowLength; int EnableAnimation; real AnimationSpeed; real PanelAnimationSpeed; int PanelMultisample; real LastFrameTime; real TimeAccum; //animation: int DefaultKeyFrameMode; //laThemeColor *ConditionStackColors[6]; laUDFContentNode TEST_Link; laListHandle MediaFiles; laRackPageCollection* InputMapping; laRackPageCollection* Drivers; laListHandle NodeCategories; laNodeCategory* CurrentNodeCategory; int FilterNodeCategory; laBaseNodeType** NodeTypes; int NodeTypeNext, NodeTypeMax; laUiDefineFunc ExtraAddInputNodes; laUiDefineFunc ExtraAddDriverNodes; laGetBaseNodeTypeF ExtraGetInputNodeType; laGetBaseNodeTypeF ExtraGetDriverNodeType; //laHash256 RootNodes; //LLVMContextRef llvmContext; //LLVMModuleRef llvmModule; //pthread_spinlock_t csMediaPlay; int example_int; laSafeString* example_string; }; #define LA_KM_SEL_UI_EXTRA 1 #define LA_KM_SEL_PANEL 2 STRUCTURE(laKeyMapItem){ laListItem Item; int SpecialKeyBits; int EventType; int Key; char SelectBase; laPropPack Base; laPropPack Action; laSafeString *Operation; laSafeString *Instructions; }; NEED_STRUCTURE(laLayout); NEED_STRUCTURE(laBlock); NEED_STRUCTURE(laPanel); NEED_STRUCTURE(laUiItem); STRUCTURE(laWindow){ laListItem Item; Window* win; GLXContext glc; int X; int Y; int W; int H; int CW; int CH; laPropPack PP; laPropStep FakePS; laSafeString *Title; int Activated; int Shown; int IsDocking; laWindow* DockingFrom; laListHandle EventList; laSafeString *OperatorHints; laListHandle Layouts; laLayout *CurrentLayout; laBlock *MaximizedBlock; laPanel *MaximizedUiPanel; laUiItem *MaximizedUi; laListHandle Panels; laListHandle FadingPanels; laListHandle Operators; laListHandle PendingOperators; laUiDrawFunc Draw; }; STRUCTURE(laBlock){ int X, Y, W, H; laBlock *B1; laBlock *B2; laBlock *parent; laPanel *CurrentPanel; laListHandle Panels; int Vertical; int Folded; real SplitRatio; // From Left/Top; laPropPack PP; laPropPack FakePS; int OnButton; }; #define LA_BLOCK_DROP_LOCATION_L 1 #define LA_BLOCK_DROP_LOCATION_R 2 #define LA_BLOCK_DROP_LOCATION_U 3 #define LA_BLOCK_DROP_LOCATION_B 4 STRUCTURE(laLayout){ laListItem Item; laBlock *OperatingBlock; laBlock *FirstBlock; laBlock *MovingBlock; int IsMoving; laPanel *ClickedPanel; laBlock *DropToBlock; laBlock *OnBlockSeperator; char DropLocation; laSafeString *ID; laLayoutBkgDrawFunc Draw; }; STRUCTURE(laUiList){ laListItem Item; int L, R, U, B; int TL, TR, TU, TB; real PanX, PanY; //Pan Up/Left Is Positive laListHandle UiItems; laListHandle Columns; laListHandle *ShareColumns; laSafeString *TabName; char *Instance; short HeightCoeff; char ScrollerShownV; char ScrollerShownH; uint32_t IconID; int AllowScale; real Scale; real SaveScale; }; STRUCTURE(laUiListRecord){ laListItem Item; laUiList* uil; laUiItem* pui; }; STRUCTURE(laColumn){ laListItem Item; real PreWidth; real SP; int IL, IR; laColumn *Top; int MaxW; int B; laColumn *LS, *RS; laColumn *CopyRef; }; STRUCTURE(laUiListDraw){ laListHandle Items; laListHandle SocketRecord; laUiList* WiresContainer; }; STRUCTURE(laUiListDrawItem){ laListItem Item; laUiList *Target; int L, R, U, B, XP, YP, DifX, DifY; int ExtraPanX; real Scale; }; STRUCTURE(laBoxedTheme){ laListItem Item; laSafeString *Name; real NormalY, Normal[4], Inactive[4]; real ActiveY, Active[4]; real BorderY, Border[4]; real TextY, Text[4]; real TextActiveY, TextActive[4], TextInactive[4]; real Alpha; int TextAlign; real Margins[4]; real Paddings[4]; //Don't change order int LM, RM, TM, BM; int LP, RP, TP, BP; laBoxedTheme **BackRef; laTheme* Parent; }; STRUCTURE(laSocketRecord){ laListItem Item; laNodeInSocket* In; laNodeOutSocket* Out; }; extern laPropContainer* LA_PC_SOCKET_IN; extern laPropContainer* LA_PC_SOCKET_OUT; extern laPropContainer* LA_PROP_SOCKET_SOURCE; extern laPropContainer* LA_PROP_SOCKET_OUT; extern laProp* LA_PROP_CONTROLLER; #define LA_UI_NORMAL 0 #define LA_UI_ACTIVE (1<<0) #define LA_UI_EDITING (1<<1) #define LA_UI_DISABLED (1<<8) #define LA_BT_NORMAL LA_UI_NORMAL #define LA_BT_ACTIVE LA_UI_ACTIVE #define LA_BT_BORDER (1<<6) #define LA_BT_TEXT (1<<7) #define LA_BT_TEXT_NORMAL (LA_BT_TEXT|LA_UI_NORMAL) #define LA_BT_TEXT_ACTIVE (LA_BT_TEXT|LA_UI_ACTIVE) #define LA_BT_DISABLED LA_UI_DISABLED #define LA_BT_VERTEX (1<<8) #define LA_BT_EDGE (1<<9) #define LA_BT_FACE (1<<10) #define LA_BT_SELECTED (1<<11) #define LA_BT_SVERTEX (LA_BT_VERTEX|LA_BT_SELECTED) #define LA_BT_SEDGE (LA_BT_EDGE|LA_BT_SELECTED) #define LA_BT_SFACE (LA_BT_FACE|LA_BT_SELECTED) #define LA_UI_TAG_IS_OFFSCREEN (1<<0) #define LA_UI_TAG_CAVANS_SCALED (1<<1) #define LA_UI_TAG_NEED_REBUILD (LA_UI_TAG_IS_OFFSCREEN | LA_UI_TAG_CAVANS_SCALED) #define LA_UI_TAG_SCISSOR (1<<2) STRUCTURE(laTheme){ laListItem Item; laSafeString *Name; laSafeString *Author; laListHandle Colors; laListHandle BoxedThemes; int abc; // real ColorBkg[4]; real Color[4]; real AccentColor[4]; real SelectionColor[4]; real CursorColor[4]; real InactiveMix; real InactiveSaturation; real CursorAlpha; real SelectionAlpha; real WireSaturation; real WireTransparency; real WireBrightness; real VertexColor[4]; real EdgeColor[4]; real SVertexColor[4]; real SEdgeColor[4]; real SFaceColor[4]; real EdgeBrightness, EdgeTransparency; real VertexBrightness, VertexTransparency; real SelectedVertexTransparency; real SelectedEdgeTransparency; real SelectedFaceTransparency; }; NEED_STRUCTURE(laOperatorType); STRUCTURE(laUiType){ laListItem Item; const char *Identifier; int ForType; const char *TargetSub; //laPropStep FakePs; laSubProp* FakeProp; laPropContainer* ExtraProps; laBoxedTheme **Theme; laUiDrawFunc Draw; const char *OperatorID; laOperatorType *OperatorType; laUiGetMinWidthFunc GetMinWidth; laUiGetHeightFunc GetHeight; laUiDestroyFunc Destroy; laUiInitFunc Init; laKeyMapper KeyMapper; int Tag; }; NEED_STRUCTURE(laUiItem); STRUCTURE(laGeneralUiExtraData){ int LastX, LastY; int TargetIndexVali; real TargetIndexValf; int On; //On:Modifying int Dragging; laStringEdit *Edit; void *Ptr1; void *Ptr2; int HeightCoeff; laUiItem* ui; }; STRUCTURE(laMultiStringExtra){ laGeneralUiExtraData* general; int PanX, PanY; }; NEED_STRUCTURE(laCanvasExtra); typedef void(*laCanvasDrawFunc)(laBoxedTheme* bt, void* DataInstance, laCanvasExtra* Extra); typedef int (*laModalFunc)(laOperator *, laEvent *); STRUCTURE(laCanvasTemplate){ laListItem Item; laSafeString *Identifier; laCanvasDrawFunc Draw; laUiDrawFunc SecondDraw; laKeyMapper KeyMapper; char *TargetContainerID; laPropContainer *TargetContainer; laPropContainer *ExtraProps; laSubProp *FakeProp; laModalFunc ExtraModal; //float LimitYScale; laUiInitFunc Init; laUiDestroyFunc Destroy; }; #define LA_EDIT_ORIGIN_CENTER 0 #define LA_EDIT_ORIGIN_INDIVIDUAL 1 #define LA_EDIT_ORIGIN_CURSOR 2 #define LA_LINE_WIDTH_WARNING_TOO_WIDE 1 #define LA_LINE_WIDTH_WARNING_TOO_THIN 2 #define LA_CANVAS_CURSOR_CROSS 1 #define LA_CANVAS_CURSOR_BOX 2 #define LA_CANVAS_CURSOR_ARROW 3 #define LA_CANVAS_CURSOR_X 4 #define LA_CANVAS_CURSOR_Y 5 #define LA_CANVAS_SELECT_MODE_VERTS 0 #define LA_CANVAS_SELECT_MODE_EDGES 1 //#define LA_CANVAS_SELECT_MODE_FACES 2 #define LA_CANVAS_SELECT_THROUGH_OFF 0 #define LA_CANVAS_SELECT_THROUGH_ON 1 void la_CanvasDrawOverlay(laUiItem *ui, int h); void la_CanvasInit(laUiItem *ui); void la_CanvasDestroy(laUiItem *ui); STRUCTURE(laCanvasExtra){ laListItem Item; tnsOffscreen *OffScr; tnsOffscreen *DeferredOffScr; laUiItem *ParentUi; real ZoomX; real ZoomY; real PanX; real PanY; int DrawCursor; real OnX, TargetX; real OnY, TargetY; real ClickedX; real ClickedY; int HeightCoeff; //int SnapBottom; int ImageDrawAlpha; int ImageDrawBorder; int AdaptiveLineWidth; int LineWidthWarning; int ClearBackground; int SelectMode; int SelectThrough; int EditCenter; real BL, BR, BU, BB; int Dragging; int TargetIndexVali; //3d========== tnsOffscreen *OffScrShadow; tnsCamera *ViewingCamera; //Always create this one; tnsCamera *UsingCamera; int Layers[20]; int DisplayMode; int ShowFloorGrid; int GridSize; int GridSpan; int ShowAxis[3]; int LineDrawingMode; }; NEED_STRUCTURE(laUiConditionNode); STRUCTURE(laConditionUiExtraData){ int a; laUiItem *EndUi; laUiItem *ElseUi; laUiConditionNode *Expression; //char Remove; char IsTrue; }; STRUCTURE(laUiTemplate){ laListItem Item; laSafeString *Title; laSafeString *Identifier; laSafeString *CategoryName; laUiDefineFunc Define; laUiDefineFunc Header; laPanelDetachedPropFunc PropFunc; laKeyMapper KeyMap; }; STRUCTURE(laUiItem){ laListItem Item; laColumn *C; int L, R, U, B; int TL, TR, TU, TB; int AnimationDistinguish; int State; int Flags; // expand and even (in row control ui) laPropPack ExtraPP; laPropStep FakePs; laGeneralUiExtraData *Extra; //char NoRefresh; short Expand; short SymbolID; laPropPack PP; laSafeString *Display; laSafeString *ExtraInstructions; laUiType *Type; laCanvasTemplate *CanvasTemplate; laUiList *Page; // reuse as row begin ref laOperatorType *AT; //Probably share in the future; laStringSplitor *Instructions; laListHandle Subs; laUiDefineFunc Template; int TemplateContext; laListHandle SubPanels; }; STRUCTURE(laWidget){ laUiType* Type; int Flags; }; #define LA_UI_FLAGS_TRANSPOSE (1<<0) #define LA_UI_FLAGS_EXPAND (1<<1) #define LA_UI_FLAGS_ICON (1<<2) #define LA_UI_FLAGS_CYCLE (1<<3) #define LA_UI_FLAGS_NO_DECAL (1<<4) #define LA_UI_FLAGS_NO_EVENT (1<<5) #define LA_UI_FLAGS_NO_CONFIRM (1<<6) #define LA_TEXT_ALIGN_LEFT (1<<7) #define LA_TEXT_ALIGN_RIGHT (1<<8) #define LA_TEXT_ALIGN_CENTER (1<<9) #define LA_TEXT_ALIGN_AUTO (1<<10) #define LA_TEXT_USE_NEWLINE (1<<11) #define LA_TEXT_LINE_WRAP (1<<12) #define LA_TEXT_REVERT_Y (1<<13) #define LA_TEXT_MONO (1<<14) #define LA_UI_FLAGS_PREFER_BOTTOM (1<<15) #define LA_UI_FLAGS_NO_GAP (1<<16) #define LA_UI_FLAGS_UNDERNEATH (1<<17) #define LA_UI_FLAGS_NO_HEIGHT (LA_UI_FLAGS_NO_GAP|LA_UI_FLAGS_NO_DECAL|LA_UI_FLAGS_UNDERNEATH) #define LA_UI_FLAGS_NO_OVERLAY (1<<18) #define LA_TEXT_OVERFLOW_ARROW (1<<19) #define LA_UI_FLAGS_DISABLED (1<<20) #define LA_UI_FLAGS_HIGHLIGHT (1<<21) #define LA_UI_FLAGS_NODE_CONTAINER (1<<22) #define LA_UI_COLLECTION_NO_HIGHLIGHT LA_TEXT_ALIGN_LEFT #define LA_TEXT_ONE_LINE (1<<23) #define LA_UI_FLAGS_INT_ICON (LA_UI_FLAGS_NO_DECAL|LA_UI_FLAGS_NO_EVENT|LA_UI_FLAGS_ICON) #define LA_UI_FLAGS_PLAIN (LA_UI_FLAGS_NO_DECAL|LA_UI_FLAGS_NO_EVENT) #define LA_TEXT_ALIGN (LA_TEXT_ALIGN_LEFT|LA_TEXT_ALIGN_CENTER|LA_TEXT_ALIGN_RIGHT|LA_TEXT_ALIGN_AUTO) #define LA_UI_SOCKET_LABEL_N LA_TEXT_ALIGN_LEFT #define LA_UI_SOCKET_LABEL_S LA_TEXT_ALIGN_RIGHT #define LA_UI_SOCKET_LABEL_W LA_TEXT_ALIGN_CENTER #define LA_UI_SOCKET_LABEL_E LA_TEXT_ALIGN_AUTO extern laWidget* LA_WIDGET_FIXED_GROUP; extern laWidget* LA_WIDGET_TAB; extern laWidget* LA_WIDGET_COLLECTION; extern laWidget* LA_WIDGET_COLLECTION_ITEM; extern laWidget* LA_WIDGET_COLLECTION_SELECTOR; extern laWidget* LA_WIDGET_COLLECTION_SINGLE; extern laWidget* LA_WIDGET_CONDITION_TOGGLE; extern laWidget* LA_WIDGET_COLUMN_ADJUSTER; extern laWidget* LA_WIDGET_COLUMN_VIEWER; extern laWidget* LA_WIDGET_BUTTON; extern laWidget* LA_WIDGET_BUTTON_NO_CONFIRM; extern laWidget* LA_WIDGET_LABEL; extern laWidget* LA_WIDGET_INT; extern laWidget* LA_WIDGET_INT_PLAIN; extern laWidget* LA_WIDGET_INT_PLAIN_ICON; extern laWidget* LA_WIDGET_VALUE_METER; extern laWidget* LA_WIDGET_VALUE_METER_2D; extern laWidget* LA_WIDGET_FLOAT; extern laWidget* LA_WIDGET_FLOAT_PLAIN; extern laWidget* LA_WIDGET_FLOAT_COLOR; extern laWidget* LA_WIDGET_FLOAT_COLOR_HCY; extern laWidget* LA_WIDGET_ENUM_SELECTOR; extern laWidget* LA_WIDGET_ENUM_SELECTOR_ICON; extern laWidget* LA_WIDGET_ENUM_CYCLE; extern laWidget* LA_WIDGET_ENUM_CYCLE_ICON; extern laWidget* LA_WIDGET_ENUM_ICON_PLAIN; extern laWidget *LA_WIDGET_ENUM_HIGHLIGHT; extern laWidget* LA_WIDGET_STRING; extern laWidget* LA_WIDGET_STRING_PLAIN; extern laWidget* LA_WIDGET_STRING_MULTI; extern laWidget *LA_WIDGET_STRING_MONO_PLAIN; extern laWidget* LA_WIDGET_MENU_ROOT; extern laWidget* LA_WIDGET_ALIGN; extern laWidget* LA_WIDGET_3D_VIEW; extern laWidget* LA_WIDGET_2D_VIEW; extern laWidget* LA_WIDGET_SYMBOL; extern laWidget *LA_WIDGET_NODE_SOCKET; extern laWidget *LA_WIDGET_HEIGHT_ADJUSTER; extern laWidget *LA_WIDGET_RAW; #define LA_CONDITION_TRUE 1 #define LA_CONDITION_FALSE 2 #define LA_CONDITION_GE 3 #define LA_CONDITION_GT 4 #define LA_CONDITION_EQ 5 #define LA_CONDITION_LT 6 #define LA_CONDITION_LE 7 #define LA_CONDITION_AND 8 #define LA_CONDITION_OR 9 #define LA_CONDITION_NOT 10 #define LA_CONDITION_INT 11 #define LA_CONDITION_FLOAT 12 #define LA_CONDITION_STRING 13 #define LA_CONDITION_PROP 14 STRUCTURE(laUiConditionNode){ char a; int Type; laUiConditionNode *Expression1; // As Int Value laUiConditionNode *Expression2; laUiDescriptor *Base; char IsExtra; int IntValue; real FloatValue; laSafeString *String; //used as prop path in template laPropPack PP; }; #define LA_PANEL_NORMAL 0 #define LA_PANEL_FLOATING_PASSIVE 2 #define LA_PANEL_FLOATING_TOP 3 #define LA_PANEL_NO_PARENT_MENU 4 #define LA_TAG_REDRAW 1 #define LA_TAG_RECALC 2 #define LA_TAG_ANIMATION 4 #define LA_TAG_RECALC_SCROLLER 8 #define LA_PANEL_ANIMATION_DROP_DOWN 1 #define LA_PANEL_ANIMATION_EXPAND 2 #define LA_PANEL_ANIMATION_DISSOVE 3 #define LA_PANEL_ANIMATION_COLLAPSE 4 #define LA_PANEL_ANIMATION_MINIMIZE 5 #define LA_PANEL_ANIMATION_DESTROY 127 NEED_STRUCTURE(laOperator); NEED_STRUCTURE(laOperator); STRUCTURE(laPanel){ laListItem Item; int __SAFE__; int X, Y, W, H; int MaxW, MaxH, MinW, MinH; int TX, TY, TW, TH; int TitleWidth; char AnimationMode; real AnimationRatio; //int PanX, PanY; int Show; short Refresh; unsigned int FrameDistinguish; char BoundUi; char IsMenuPanel; char LaterDestroy; char CloseWhenMovedOut; int Mode; int LiveEditing; laUiItem *EditingUi; laUiItem *FocusingUi; void *SFPNode; int SL, SR, ST, SB; //Snap To Edge laSafeString *Title; laUiTemplate *PanelTemplate; laPropPack PP; laPropStep FakePS; laPropContainer* PropLinkContainer; laSubProp* PropLinkFakeProp; laPropPack PropLinkPP; laPropStep PropLinkFakePS; laKeyMapper KeyMap; laPanelDrawFunc Draw; laBoxedTheme **BT; tnsOffscreen *OffScr; laUiList UI; laUiList TitleBar; laUiList *MenuRefer; laUiDefineFunc UiDefine; laListHandle SubPanels; laPanel *Parent; laBlock *Block; laOperator *ParentOperator; u64bit Tag; //64 Main Types are useable,with 31 subtypes avainable each. //Main Type 0~63(some are occupied by LA internal) //Sub Type 0~31 //Main (Low) 0| 1| 2| 3|... //[---32bits---][---32bits---][---32bits---][---32bits---]... }; STRUCTURE(laPanelMessage){ laListItem Item; laSafeString *Message; }; STRUCTURE(laPanelMessageList){ laListHandle Msg; }; NEED_STRUCTURE(laOperator); typedef int (*laInitFunc)(laOperator *); typedef int (*laRefreshFunc)(laOperator *); typedef int (*laCheckFunc)(laPropPack *, laStringSplitor *); //this, ui->instructions amd ap->instructions typedef int (*laExitFunc)(laOperator *, int); //true means Quit, false means Cancel typedef int (*laInvokeFunc)(laOperator *, laEvent *); typedef int (*laModalFunc)(laOperator *, laEvent *); typedef int (*laSystemFunc)(laOperator *, laEvent *); #define LA_CANCEL 0 #define LA_PASS_ON (1<<10) #define LA_BLOCK (1<<11) #define LA_FINISH (1<<12) #define LA_CONFIRM (1<<13) #define LA_CANCELED 0 //#define LA_PRE_INVOKE 16384 #define LA_FINISHED (LA_FINISH | LA_BLOCK) #define LA_FINISHED_PASS (LA_FINISH | LA_PASS_ON) #define LA_RUNNING LA_BLOCK #define LA_RUNNING_PASS (LA_BLOCK | LA_PASS_ON) #define LA_OPERATOR_CALLS_SHUTOFF (LA_FINISHED|(1<<5)) #define LA_EXTRA_TO_PANEL 1 #define LA_EXTRA_CONFIRM 2 #define LA_ACTUATOR_SYSTEM 4 #define LA_ACTUATOR_HIDDEN 8 #define LA_CONFIRM_OK (1<<10) #define LA_CONFIRM_CANCEL (1<<11) #define LA_CONFIRM_IGNORE (1<<12) #define LA_CONFIRM_DATA (1<<13) #define LA_CONFIRM_CUSTOM_STRING (1<<14) STRUCTURE(laOperatorType){ laListItem Item; const char *Identifier; const char *Name; const char *Description; const char *ExtraInstructions; laInitFunc Init; laExitFunc Exit; laInvokeFunc Invoke; laModalFunc Modal; laCheckFunc Check; uint32_t IconID; laPropContainer* PC; laUiDefineFunc UiDefine; laOperatorArgumentParserFunc ParseArgs; laListHandle Properties; int ExtraMark; }; typedef void (*laConfirmDataDestroyFunc)(void *); STRUCTURE(laConfirmData){ int Mode; int IData; real FData; void *CustomData; char *StrData; laConfirmDataDestroyFunc Destroy; }; STRUCTURE(laOperator){ laListItem Item; int State; void *Instance; void *CustomData; const char *ExtraInstructions; laStringSplitor *ExtraInstructionsP; laPropPack PP; laPropPack *This; laConfirmData *ConfirmData; laConfirmData *NextConfirmData; laOperator *Child; laListHandle PropertyStorage; laOperatorType *Type; laPropPack *CreatedThis; int Using; int StopNow; laPanel *ToPanel; laPanel *OperatorPanel; laListHandle LocalUiLists; laSafeString* RuntimeHint; }; #define LA_JS_MAX_AXES 32 #define LA_JS_MAX_BUTTONS 128 STRUCTURE(laController){ laListItem Item; laSafeString* Name; laSafeString* Path; int fd; //device; int NumButtons; int NumAxes; int UserAssignedID; int Error; int InternalType; // used to identify models and use specific props. int AxisValues[LA_JS_MAX_AXES]; char ButtonValues[LA_JS_MAX_BUTTONS]; }; void la_InitControllers(); void la_UpdateControllerStatus(); void la_RegisterControllerProps(); laPropContainer* laget_ControllerType(laController* c); laController* la_FindControllerWithID(int id); void la_RegisterInputMapperOperators(); #define LA_DAG_FLAG_ERR 0 #define LA_DAG_FLAG_TEMP 1 #define LA_DAG_FLAG_PERM 2 void laMappingRequestRebuild(); void laMappingRequestEval(); int la_RebuildInputMapping(); int la_RunInputMapping(); void laDriverRequestRebuild(); void laDriverRequestEval(); int la_RebuildDriverEval(); int la_RunDrivers(); laBaseNode* la_CreateDriverNode(laNodeRack* ir, laBaseNodeType* NodeType); laBaseNode* la_CreateInputMapperNode(laNodeRack* ir, laBaseNodeType* NodeType); laPropContainer* laget_BaseNodeType(laBaseNode* bn); void laRegisterNode(laBaseNodeType* type, laPropContainer* pc, laBaseNodeInitF init, laBaseNodeDestroyF destroy, laBaseNodeVisitF visit, laBaseNodeEvalF eval, int nodesize, char* udf_string, char* type_string, char* UiText, int icon); void latouched_NodeInSocket(void* unused, int hint); #define LA_BASE_NODE_HEADER(uil,c,This)\ {laSplitColumn(uil,c,0.2);laColumn*c1=laLeftColumn(c,1);c=laRightColumn(c,0);\ laShowHeightAdjuster(uil,c1,This,"base.__gap",0);} #define LA_IDN_REGISTER(uitext,icon,a,pc,init,destroy,visit,eval,type)\ laRegisterNode(&a,pc,init,destroy,visit,eval,sizeof(type),"UDFRES_" #type, #type, uitext,icon); #define LA_SRC_AND_PARENT(socket)\ ((socket)->Source && (socket)->Source->Parent) #define LA_VISIT_NODE(node)\ {int result=node->Type->Visit(node,l); if(result!=LA_DAG_FLAG_PERM) return LA_DAG_FLAG_ERR;} #define LA_GUARD_THIS_NODE(n)\ {if(n->Base.Eval==LA_DAG_FLAG_PERM) return LA_DAG_FLAG_PERM; if(n->Base.Eval==LA_DAG_FLAG_TEMP) return LA_DAG_FLAG_ERR; n->Base.Eval=LA_DAG_FLAG_TEMP; } extern laBaseNodeType LA_IDN_KEYBOARD; extern laBaseNodeType LA_IDN_MOUSE; extern laBaseNodeType LA_IDN_CONTROLLER; extern laBaseNodeType LA_IDN_VISUALIZER; extern laBaseNodeType LA_IDN_SPLIT; extern laBaseNodeType LA_IDN_SWITCH; extern laBaseNodeType LA_IDN_COMBINE; extern laBaseNodeType LA_IDN_VALUES; extern laBaseNodeType LA_IDN_MATRIX; extern laBaseNodeType LA_IDN_MATH; extern laBaseNodeType TNS_IDN_TRANSFORM; extern laBaseNodeType TNS_IDN_MAKE_TRANSFORM; extern laNodeCategory* LA_NODE_CATEGORY_INPUT; extern laNodeCategory* LA_NODE_CATEGORY_MATH; extern laNodeCategory* LA_NODE_CATEGORY_ROUTE; extern laNodeCategory* LA_NODE_CATEGORY_DRIVER; #define LA_VALUES_NODE_FLOAT 0 #define LA_VALUES_NODE_INT 1 #define LA_VALUES_NODE_ENUM 2 #define LA_MATRIX_NODE_OP_MUL 0 #define LA_MATRIX_NODE_OP_INV 1 #define LA_MATH_NODE_OP_ADD 0 #define LA_MATH_NODE_OP_SUB 1 #define LA_MATH_NODE_OP_MUL 2 #define LA_MATH_NODE_OP_DIV 3 #define LA_MATH_NODE_OP_POW 4 #define LA_MATH_NODE_OP_LOG 5 #define LA_MATH_NODE_OP_SIN 6 #define LA_MATH_NODE_OP_COS 7 #define LA_MATH_NODE_OP_TAN 8 #define LA_MATH_NODE_OP_ASIN 9 #define LA_MATH_NODE_OP_ACOS 10 #define LA_MATH_NODE_OP_ATAN 11 #define LA_MATH_NODE_OP_ATAN2 12 STRUCTURE(laRackPage){ laListItem Item; laSafeString* Name; laListHandle Racks; }; #define LA_RACK_TYPE_INPUT (1<<0) #define LA_RACK_TYPE_DRIVER (1<<1) #define LA_RACK_TYPE_ALL (LA_RACK_TYPE_DRIVER|LA_RACK_TYPE_INPUT) STRUCTURE(laNodeRack){ laListItem Item; laSafeString* Name; laListHandle Nodes; laRackPage* ParentPage; int RackType; }; NEED_STRUCTURE(laInputControllerNode); STRUCTURE(laInputControllerNodeSocket){ laInputControllerNode* Parent; laSafeString* Which; laNodeOutSocket* Out; int Offset; int IntVal[8]; real RealVal[8]; }; STRUCTURE(laInputControllerNode){ laBaseNode Base; laInputControllerNodeSocket Sockets[8]; int UserID; int Mode;// btn/axis; }; STRUCTURE(laInputVisualizerNode){ laBaseNode Base; laNodeInSocket* In; int IntVal[8]; real RealVal[8]; }; STRUCTURE(laSplitNodeOutSocket){ laNodeOutSocket* Out; }; STRUCTURE(laSplitNode){ laBaseNode Base; laNodeInSocket* In; laSplitNodeOutSocket Out[8]; int IntVal[8]; real RealVal[8]; int ArrLen; }; STRUCTURE(laSwitchNodeInSocket){ laNodeInSocket* In; }; STRUCTURE(laSwitchNode){ laBaseNode Base; laSwitchNodeInSocket In[8]; laNodeOutSocket* Out; laNodeInSocket* SwitchIn; real TempVal; int Switch; }; STRUCTURE(laCombineNode){ laBaseNode Base; laSwitchNodeInSocket In[8]; laNodeOutSocket* Out; laNodeOutSocket* OutInt; laNodeOutSocket* OutEnum; real Values[8]; int ValuesI[8]; }; STRUCTURE(laValuesNode){ laBaseNode Base; laSplitNodeOutSocket Out[8]; real Values[8]; int ValuesI[8], ValuesE[8]; int Modes[8]; }; STRUCTURE(laMatrixNode){ laBaseNode Base; laNodeInSocket *InL,*InR; laNodeOutSocket* Out; tnsMatrix44d Mat; int Operation; }; STRUCTURE(laMathNode){ laBaseNode Base; laNodeInSocket *InL,*InR; laNodeOutSocket* Out,*OutInt; real Value; int ValueI; real ValueL, ValueR; int Operation; }; STRUCTURE(laNodeCategory){ laListItem Item; laSafeString* Name; laListHandle NodeTypes;//lip laUiDefineFunc Ui; int For; }; #define LA_INPUT_CONTROLLER_NODE_MODE_BTN 0 #define LA_INPUT_CONTROLLER_NODE_MODE_AXIS 1 void logPrintT(int Type, char* format, ...); void logPrint(char* format, ...); void logPrintNew(char* format, ...); int LA_WindowProc(Window win, int message, int wparam, int lparam); void la_RegisterMainOperators(); void la_RegisterUiOperatorsBasic(); void la_RegisterBuiltinOperators(); void la_RegisterModellingOperators(); void la_RegisterUiTypesBasic(); void la_RegisterUiTypesViewerWidgets(); void la_RegisterBuiltinTemplates(); void la_RegisterWindowKeys(); void la_RegisterGeneralProps(); void la_RegisterInternalProps(); void la_RegenerateWireColors(); void laui_IntPropInfo(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *ExtraColumns, int context); void laui_FloatPropInfo(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *ExtraColumns, int context); void laui_DefaultPropDetails(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context); void laui_DefaultNodeOperationsPropUiDefine(laUiList *uil, laPropPack *This, laPropPack *OperatorProps, laColumn *UNUSED, int context); void laui_DefaultPropUiDefine(laUiList *uil, laPropPack *This, laPropPack *OperatorProps, laColumn *UNUSED, int context); void laui_StringPropUiDefine(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context); void laui_IdentifierOnly(laUiList *uil, laPropPack *This, laPropPack *OP_UNUSED, laColumn *Extra, int context); void laui_SubPropInfoDefault(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_SubPropSelection(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_LinkerSelectionProp(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_LinkerSelectionInstance(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_DefaultOperatorPanelTitleBar(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_ColumnItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_DefaultMenuButtonsFileEntries(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context); void laui_DefaultMenuButtonsOptionEntries(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context); void laui_DefaultMenuButtons(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context); void laui_DefaultMenuExtras(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context); void laui_DefaultMenuBarActual(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context); void laui_DefaultSubWindowMenuBarActual(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context); void laui_ThemeListItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_Theme(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_BoxedThemeItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_PropertyContainerList(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_WindowListItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_LayoutListItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_PanelListItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_InputSocketItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_OutputSocketItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void tnsui_GroupItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void tnsui_ObjectGroupItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void tnsui_GroupObjectItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void tnsui_MaterialItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, laColumn *UNUSED_Colums, int context); void laui_FileBrowserFileItem(laUiList *uil, laPropPack *This, laPropPack *OP_UNUSED, laColumn *Extra, int context); void laui_FileBrowserDiskItem(laUiList *uil, laPropPack *This, laPropPack *OP_UNUSED, laColumn *Extra, int context); void laui_LinkerPanel(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_ManagedUDFItem(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_ManagedUDFOps(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_ManagedProp(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_ManagedSavePanel(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_ManagedUDFPanel(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_FileBrowserFileList(laUiList *uil, laPropPack *THIS_UNUSED, laPropPack *Operator, laColumn *UNUSED, int context); void laui_DataRestorePage(laUiList *uil, laPropPack *THIS_UNUSED, laPropPack *Operator, laColumn *UNUSED, int context); void laui_ResourceFolderItem(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_LogItem(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context); void laui_NodeCategory(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context); int OPINV_UiItem(laOperator *a, laEvent *e); int OPEXT_UiItem(laOperator *a, int ExitCode); int la_ArrayGetHeight(laUiItem *ui); int la_ValueGetHeight(laUiItem*ui); int la_3DViewGetHeight(laUiItem *ui); int la_CanvasGetHeight(laUiItem *ui); int la_EnumGetHeight(laUiItem *ui); int la_ColorPickerGetHeight(laUiItem *ui); int la_SymbolGetHeight(laUiItem *ui); int la_GroupGetHeight(laUiItem *ui); laPanel *la_FindFreePanelByTemplate(laWindow *w, const laUiTemplate *uit); laUiItem *la_FindUiWithMark(laUiList *uil, char *mark); laUiList *la_FindSubListWithInstance(laUiItem *ui, void *Instance); #define LA_FILETYPE_UNKNOWN 0 #define LA_FILETYPE_UDF 1 #define LA_FILETYPE_DOCUMENT 2 #define LA_FILETYPE_IMAGE 3 #define LA_FILETYPE_AUDIO 4 #define LA_FILETYPE_VIDEO 5 #define LA_FILETYPE_COMPRESSED 6 #define LA_FILETYPE_FONT 7 #define LA_FILETYPE_VECTOR 8 #define LA_FILETYPE_WEBPAGE 9 #define LA_FILETYPE_META 10 #define LA_FILETYPE_BLEND 11 #define LA_FILETYPE_PDF 13 #define LA_FILETYPE_EXEC 14 #define LA_FILETYPE_SYS 15 #define LA_FILETYPE_FOLDER 16 #define LA_FILETYPE_LASDEXCHANGE 17 #define LA_FILE_SELECT_FILE 0 #define LA_FILE_SELECT_FOLDER 1 STRUCTURE(laFileItem){ laListItem Hyper; int IsFolder; char Name[1024]; int Size; laTimeInfo TimeModified; int Type; }; STRUCTURE(laDiskItem){ laListItem Hyper; char ID; real Total_GB; real Free_GB; }; STRUCTURE(laFileBrowser){ laListItem Hyper; char Path[1024]; char FileName[512]; laDiskItem *RootDisk; laFileItem *Active; laListHandle FileList; laListHandle Disks; int SelectFolder; }; STRUCTURE(laUDFPreviewExtra){ laUDF *UDF; laListHandle ContentNodes; int Opened; }; STRUCTURE(laManagedSaveExtra){ int ShowPage; int OnExit; }; #define LA_UDF_SHARE_POINTER(id) \ la_UDFAppendSharedTypePointer("" #id, id) laCanvasTemplate *la_GetCanvasTemplate(char *TargetContainerID, char* TemplateID); laPropContainer* laUiHasExtraProps(laUiType *ut, int size, int hyper); laPropContainer* laCanvasHasExtraProps(laCanvasTemplate *ct, int size, int hyper); laUiType *la_RegisterUiType(const char *Identifer, int ForType, const char *UseOperator, laBoxedTheme **bt, laUiDrawFunc *Draw, laUiGetHeightFunc GetHeight, laUiInitFunc Init, laUiDestroyFunc Destroy); void laSetWindowCursor(int id); void laRenameWindow(laWindow* wnd, char* name); void laSaveUserPreferences(); void laEnsureUserPreferences(); int laGetReady(); void laSetFrameCallbacks(laPreFrameF PreFrame, laPreDrawF PreDraw, laPostFrameF PostFrame); void laSetCleanupCallback(laCleanupF Cleanup); laWindow *laDesignWindow(int X, int Y, int W, int H); laLayout *laDesignLayout(laWindow *w, char *Title); void laFoldBlockTitle(laBlock* b); void laUnfoldBlockTitle(laBlock* b); void laMaximizeBlock(laBlock* b); void laRestoreToLayout(); void laMaximizeCanvasUI(laUiItem* ui, laPanel* UiParentPanel); void laRestoreCanvasUI(); void laHideMenuBar(); void laShowMenuBar(); void laSplitBlockHorizon(laBlock *b, real Percentage); void laSplitBlockVertical(laBlock *b, real Percentage); void laCombineChildBlocks(laBlock *b); laBlock *laBlock1(laBlock *b); laBlock *laBlock2(laBlock *b); laBlock *laSwapSubBlocks(laBlock *b); void laDestroyBlocksRecursive(laBlock *Root); laPanel* laTearOffPanel(laBlock* b, laPanel* p_if_set); void laDockPanel(laWindow* from, laBlock* b, laPanel* p); laPanel *laCreatePanel(laBlock *b, char *template_id); laPanel *laCreateTopPanel(laWindow *w, char *template_id, int X, int Y, int W, int H, int MaxW, int MaxH, int MinW, int MinH, int SnapL, int SnapR, int SnapT, int SnapB); void laShowPanel(laPanel *p); void laShowPanelWithDropDownEffect(laPanel *p); void laShowPanelWithExpandEffect(laPanel *p); void laHidePanel(laPanel *p); void laHidePanelWithDissoveEffect(laPanel *p); void laActivatePanel(char* TemplateID, int x, int y); void laPanPanel(laPanel *p, int DeltaX, int DeltaY); int laPanUiListFree(laUiList *uil, int X, int Y); int laPanUiList(laUiList *uil, int X, int Y, int L, int R, int U, int B); int laPanUiListAuto(laUiList *uil, int X, int Y, int L, int R, int U, int B); int laScaleUiList(laUiList *uil, real factor, int L, int R, int U, int B); laPanel *laDesignPropPanel(char *Title, int X, int Y, int W, int H, laUiDefineFunc Define, laPropPack *This, laPropPack *OperatorProps); laPanel *laDesignOperatorPanel(char *Title, int X, int Y, int W, int H, int MaxW, int MaxH, int MinW, int MinH, int SnapL, int SnapR, int SnapT, int SnapB, laUiDefineFunc Define, laPropPack *This, laPropPack *OperatorProps); void laDeferedDestroyPanel(laPanel *p); void laDestroySinglePanel(laPanel *p, int immediate); void laEnsurePanelInBound(laPanel *p,laUiList* uil); int laEnclosePanelContent(laPanel *p, laUiList *uil); laPanel *laEnableIdlePanel(laPanel *Attachment, laOperator *a, laPropPack *OperatorProps, laUiDefineFunc ReplaceUiDefine, laPropPack *This, int L, int R, int B, int MaxGH, int MaxW, laEvent *e); laPanel *laEnablePropertyPanel(laPanel *Attachment, laOperator *a, laPropPack *OperatorProps, laUiDefineFunc ReplaceUiDefine, laUiDefineFunc FallBackUiDefine, laPropPack *This, int L, int R, int B, int MaxGH, int MaxW, laEvent *e); laPanel *laEnableEmptyPropertyPanel(laPanel *Attachment, laOperator *a, int L, int R, int U, int MaxGH, laEvent *e); laPanel *laEnableMenuPanel(laPanel *Attachment, laOperator *a, laUiList *MenuRefer, laPropPack *This, int L, int R, int B, int MaxGH, int MaxW, laEvent *e); laPanel *laDefineAndEnableMenuPanel(laPanel *Attachment, laOperator *a, laPropPack *This, int L, int B, int MaxGH, int MaxW, laEvent *e); laPanel *laEnableOperatorPanel(laOperator *For, laPropPack *This, int X, int Y, int W, int H, int MaxW, int MaxH, int MinW, int MinH, int SnapL, int SnapR, int SnapT, int SnapB, laEvent *e); laPanel *laEnableYesNoPanel(laOperator *a, laPanel *Attachment, char *Title, char *Message, int X, int Y, int W, laEvent *e); laPanel *laEnableMessagePanel(laOperator *a, laPanel *Attachment, char *Title, char *Message, int X, int Y, int W, laEvent *e); laPanel *laEnableMultiMessagePanel(laOperator *a, laPanel *Attachment, char *Title, laPanelMessageList *pml, int X, int Y, int W, laEvent *e); void laAddPanelMessage(laPanelMessageList *pml, char *Message); void la_PropPanelUserRemover(void* This, laItemUserLinker* iul); void la_EnsurePanelExtras(laPanel *p); void laRedrawAllWindows(); void laRedrawCurrentWindow(); void laRedrawCurrentPanel(); void laRecalcCurrentPanel(); void laRecalcPanelImmediate(laPanel *p); void laRecalcCurrentPanelImmediate(); int laNonFixedPanelExists(laPanel *p); int laIsInPanel(laPanel *p, int PanelX, int PanelY); int laIsCloseToPanel(laPanel *p, int PanelX, int PanelY); void laPopPanel(laPanel *p); int laPanelOverlappingEachOther(laPanel *p1, laPanel *p2); void laUnlinkSharedPanel(laPanel *p); int laIsPanelCovered(laPanel *p); int laIsTopPanel(laPanel *p); laPanel *laDetectPanel(int X, int Y); void laWindowToLocal(laOperator *a, laPanel *p, int *x, int *y); void laPanelToLocal(laOperator *a, int *x, int *y); void laLocalToWindow(laOperator *a, laPanel *p, int *x, int *y); void laLocalToPanel(laOperator *a, int *x, int *y); void laSetNextMenuPos(int X, int Y, int W, int H); int laIsInBlock(laBlock *b, int X, int Y); int laIsInBlockHeader(laBlock *b, int X, int Y); int laIsInBlockBotton1(laBlock *b, int X, int Y); int laIsInBlockBotton2(laBlock *b, int X, int Y); laBlock *laDetectBlockRecursive(laBlock *b, int X, int Y); laUiList *laPrepareUi(laPanel *p); laColumn *laFirstColumn(laUiList *uil); laColumn *laSplitColumn(laUiList *uil, laColumn *c, real Percent); laColumn *laSplitColumnDescriptor(laUiDescriptor *ud, laColumn *c, real Percent); laColumn *laLeftColumn(laColumn *c, int MaxWidth); laColumn *laRightColumn(laColumn *c, int MaxWidth); int laCheckAndMergeSubColumnsUiList(laUiList *TopUil, laColumn *c, int DoMerge); int laCheckAndMergeSubColumnsDescriptor(laUiDescriptor *TopDescriptor, laColumn *c, int DoMerge); laUiConditionNode *laTrue(); laUiConditionNode *laFalse(); laUiConditionNode *laPropExpression(laPropPack *Base, char *Prop); laUiConditionNode *laIntExpression(int Value); laUiConditionNode *laFloatExpression(real Value); laUiConditionNode *laStringExpression(char *Content); laUiConditionNode *laAnd(laUiConditionNode *Expression1, laUiConditionNode *Expression2); laUiConditionNode *laOr(laUiConditionNode *Expression1, laUiConditionNode *Expression2); laUiConditionNode *laNot(laUiConditionNode *Expression1); laUiConditionNode *laEqual(laUiConditionNode *Expression1, laUiConditionNode *Expression2); laUiConditionNode *laGreaterThan(laUiConditionNode *Expression1, laUiConditionNode *Expression2); laUiConditionNode *laLessThan(laUiConditionNode *Expression1, laUiConditionNode *Expression2); laUiConditionNode *laGreaterEqual(laUiConditionNode *Expression1, laUiConditionNode *Expression2); laUiConditionNode *laLessEqual(laUiConditionNode *Expression1, laUiConditionNode *Expression2); laUiItem *laShowLabel(laUiList *uil, laColumn *c, const char *Content, laUiDefineFunc Template, laWidget* Widget); laUiItem *laShowLabelDynamic(laUiList *uil, laColumn *c, const char *Content, laUiDefineFunc Template, laWidget* Widget); laUiItem *laShowIcon(laUiList *uil, laColumn *c, laPropPack *Base, const char *Path, laWidget* Widget); laUiItem *laShowItem(laUiList *uil, laColumn *c, laPropPack *Base, const char *Path); laUiItem *laShowItemFull(laUiList *uil, laColumn *c, laPropPack *Base, const char *Path, laWidget* Widget, char* instructions, laUiDefineFunc Template, int TemplateContext); laUiItem *laShowNodeSocket(laUiList *uil, laColumn *c, laPropPack *Base, const char *Path, char* instructions); laUiItem *laShowHeightAdjuster(laUiList *uil, laColumn *c, laPropPack *Base, const char *Path, char* instructions); laUiItem *laShowDetachedItem(laPanel *p, laUiList *uil, laColumn *c, laPropPack *Base, const char *Path, const char *Rename, laUiDefineFunc Template, laWidget* Widget); laUiItem *laShowCanvas(laUiList *uil, laColumn *c, laPropPack *Base, const char *Path, const char *id2DTemplate, int Height); laUiItem *laShow2DContainerItem(laUiList *uil, laColumn *c, laPropPack *Base, const char *Path, int Height); void laDefault3DViewOverlay(laUiItem *ui); void laDefault2DViewOverlayRight(laUiItem *ui); laUiItem *laShowColumnAdjuster(laUiList *uil, laColumn *c); laUiItem *laShowSymbol(laUiList *uil, laColumn *c, int SymbolID, int Height); laUiItem *laBeginRow(laUiList *uil, laColumn *c, int Expand, int Even); laUiItem *laEndRow(laUiList *uil, laUiItem* Begin); laUiItem *laMakeGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget); laUiItem *laMakeFoldableGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget, int DefaultFolded, int ButtonFlags); laUiItem *laMakeEmptyGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget); void laEndFoldableGroup(laUiList *sub, laUiItem *group); laUiItem *laMakeTab(laUiList *uil, laColumn *c, laWidget* Widget); laUiList *laAddTabPage(laUiItem *ui, const char *Name); laUiItem *laOnConditionThat(laUiList *uil, laColumn *c, laUiConditionNode *Expression); laUiItem *laOnConditionToggle(laUiList *uil, laColumn *col, laUiDefineFunc define, int Remove, laPropPack *ExtraBase, laPropPack *ExtraThis, laWidget* Widget); laUiItem *laEndCondition(laUiList *uil, laUiItem *Beginner); laUiItem *laElse(laUiList *uil, laUiItem *Beginner); laUiList *laMakeMenuPage(laUiList *uil, laColumn *c, const char *Title); laUiItem *laShowSeparator(laUiList *uil, laColumn *widest); void laFixHeight(laUiList *uil, short Rows); void la_ConditionerInit(laUiItem *ui, laUiConditionNode *Expression); void laMakeExtraColumns(laUiItem *ui, u8bit HowMany, ...); int la_UiInBoundEx(laUiItem *ui, laUiListDraw *uild); void la_DestroyUiRange(laUiList *uil, laUiItem *Begin, laUiItem *End); void la_ClearUiSpecificData(laUiItem *ui); laUiItem *la_UpdatePropDisplay(laUiItem *ui, laPropPack *Base, const char *Path, laUiDefineFunc Template, laWidget* Widget, char* instructions); laUiItem *la_UpdateLabelDisplay(laUiItem *ui, laUiDefineFunc Template, char *Content); laUiItem *la_ShowGeneralPropItem(laUiList *uil, laColumn *c, laPropPack *Base, laProp *GeneralProp, laProp *p, laUiDefineFunc Template, laWidget* Widget); void laFinalizeUiTemplates(); laUiTemplate *laFindUiTemplate(char *Identifier); void la_DestroyUiTemplate(laUiTemplate* uit); void la_DestroyCanvasTemplate(laCanvasTemplate* uit); laUiTemplate *laRegisterUiTemplate(char *Identifier, char* Title, laUiDefineFunc func,laPanelDetachedPropFunc PropFunc, laUiDefineFunc header, char* NewCategory); laCanvasTemplate *laRegisterCanvasTemplate(char *Identifier, char *ForContainer, laModalFunc ExtraModal, laCanvasDrawFunc Func, laUiDrawFunc SecondDraw, laUiInitFunc CustomInit, laUiDestroyFunc CustomDestroy); void laGet2DViewRange(laCanvasExtra *e, int *L, int *R, int *U, int *B); void laGet2DViewRanged(laCanvasExtra *e, real *L, real *R, real *U, real *B); void laGet2DViewRangeW(laCanvasExtra *e, int *L, int *R); void laGet2DViewRangeWd(laCanvasExtra *e, real *L, real *R); void la_DestroyTheme(laTheme* t); laTheme *laDesignTheme(const char *Name, const char *AuthorName); laBoxedTheme *laDesignBoxedTheme(laTheme *t, const char *Name, laBoxedTheme** BackRef, real NormalY,real ActiveY,real BorderY,real TextY,real TextActiveY, real Alpha, real TopMargin, real LeftMargin, real RightMargin, real BottomMargin, real TopPadding, real LeftPadding, real RightPadding, real BottomPadding); laBoxedTheme *laGetTheme(const char *ThemeName); laBoxedTheme *laGetBoxedTheme(const char *ThemeName, const char *BoxName); real* laThemeColor(laBoxedTheme* bt, int which); real* laAccentColor(int which); void la_RefreshBoxedThemeColor(laBoxedTheme* bt); void la_RefreshThemeColorSelf(laTheme* th); void la_RefreshThemeColor(laTheme* th); #define LA_COLOR4(c) (c)[0], (c)[1], (c)[2], (c)[3] #define LA_COLOR3(c) (c)[0], (c)[1], (c)[2] #define LA_VEC2(c) (c)[0], (c)[1] #define LA_SET3(c, a1,a2,a3) { (c)[0]=a1; (c)[1]=a2; (c)[2]=a3; } int laIsInUiItem(laUiItem *ui, int x, int y); int laIsInBound(int x, int y, int l, int r, int u, int b); laUiItem *la_DetectUiItemRecursive(laUiList *uil, int x, int y, int LimB, laListHandle *LocalBuf, int Deep); laUiItem *la_DetectSocketRecursive(laUiList* uil, int x, int y, int LimB, laPropContainer* PCInOrOut); laUiList *la_DetectUiListRecursive(laUiList *uil, int x, int y, int LimH, laUiItem **ParentUi, laUiList **ScrollUil, laUiList **ContainerParent, int InToContainerUI, laUiItem *Exception); laUiList *la_DetectUiListRecursiveDeep(laUiList *uil, int x, int y, int LimH, laUiItem **ParentUi, laUiList **ScrollUil, laUiList **ContainerParent, int InToContainerUI, laUiItem *Exception, laListHandle* levels); int laStartWindow(laWindow *w); void laSetMenuBarTemplates(laUiDefineFunc MenuButtons, laUiDefineFunc MenuExtras, const char* ProgramName); void laMainLoop(); void la_DestroyOperatorType(laOperatorType* at); laOperatorType *laCreateOperatorType(const char *ID, const char *Name, const char *Description, laCheckFunc Check, laInitFunc Init, laExitFunc Exit, laInvokeFunc Invoke, laModalFunc Modal, uint32_t IconID, int ExtraMark); laPropContainer* laDefineOperatorProps(laOperatorType* ot, int HyperLevel); laNodeOutSocket* laCreateOutSocket(void* NodeParentOptional, char* label, int DataType); laNodeInSocket* laCreateInSocket(char* label, int DataType); void laDestroyInSocket(laNodeInSocket* s); void laDestroyOutSocket(laNodeOutSocket* s); laNodeCategory* laAddNodeCategory(char* Name,laUiDefineFunc* Ui,int ForRackTypes); void laNodeCategoryAddNodeTypes(laNodeCategory* nc, ...); void laFreeKeyMapItem(laKeyMapItem* kmi); laKeyMapItem *laAssignNewKey(laKeyMapper *km, char *Path, char *Operation, char SelectBase, int SpecialKeyBits, int EventType, int Key, char *ExtraInstructions); int laKeyMapExecuteEvent(laOperator *from, laKeyMapper *km, laEvent *e); int laKeyMapExecuteEventEx(laOperator *from, laPropPack *UiExtra, laKeyMapper *km, laEvent *e); laOperatorType *laGetOperatorType(const char *ID); void laSetOperatorLocalizer(void *ToPanel); int laOperatorAvailable(char *ID, laPropPack *This, laStringSplitor *Instructions); int laOperatorAvailableP(laOperatorType *at, laPropPack *This, laStringSplitor *Instructions); int laOperatorAvailableSafe(char *ID, laPropPack *This, void *Real_FromInstance, laStringSplitor *Instructions); int laOperatorAvailablePSafe(laOperatorType *at, laPropPack *This, void *Real_FromInstance, laStringSplitor *Instructions); void laSendOperatorTriggerEvent(); void laRetriggerOperators(); int la_GenericTopPanelProcessing(laOperator* a, laEvent* e); int OPMOD_FinishOnData(laOperator* a, laEvent* e); int la_UiOperatorExists(void *inst); int laOperatorExistsT(laOperatorType* at); int laOperatorExists(const char* ID); int laInvokeUi(laOperator *From, char *ID, laEvent *e, void *inst, laListHandle *Locals, int IgnoreLocals); int laInvokeUiP(laOperator *From, laOperatorType *at, laEvent *e, void *inst, laListHandle *Locals, int IgnoreLocals); int laInvoke(laOperator *From, char *ID, laEvent *e, laPropPack *This, char *args, char *args2); int laInvokeP(laOperator *From, laOperatorType *at, laEvent *e, laPropPack *This, char *args, char *args2); int laInvokePCreateThis(laOperator *From, laOperatorType *at, laEvent *e, laPropPack *OrigionalThis, void *FromInstance, char *args, char *args2); void laRequestDelayEvent(real Seconds); int la_UiStillInService(void *UiInstance); void la_StopUiOperatorService(void *UiInstance); void la_StopAllOperators(); int la_ProcessTextEdit(laEvent *e, laStringEdit *se, laUiItem* ui); void laConfirmInt(laOperator *a, int Data, int mode); void laConfirmFloat(laOperator *a, real Data, int mode); void laConfirmString(laOperator *a, char *Str, int mode); int laConfirmSameDataIfAny(laOperator *a); void laConfirmUserData(laOperator *a, void *UserData, laConfirmDataDestroyFunc Destroy, int mode); int laGetConfirmInt(laOperator *a); real laGetConfirmFloat(laOperator *a); void laGetConfirmString(laOperator *a, char *buf); void *laGetConfirmUserData(laOperator *a); //int laInvokeSub(laProp* From, char * ID, laEvent* e, void* inst); void laFinalizeOperators(); int laWaitFor(laOperator *Who, int State); void la_PrintOperatorStack(); void laui_DefaultPanelTitleBar(laUiList *uil, laPropPack *Base, laPropPack *Extra, laUiDefineFunc header); void laui_DefaultOperatorPanelTitleBar(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context);; void laui_DefaultSubWindowMenuBarActual(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context);; void laui_DefaultMenuBarActual(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context);; void laui_DefaultMenuBar(laWindow *w); void laui_DefaultSubWindowMenuBar(laWindow *w); void laui_DefaultPropUiDefine(laUiList *uil, laPropPack *This, laPropPack *OperatorProps, laColumn *UNUSED, int context);; int laCopyToClipboard(unsigned char * text); extern laUiType *_LA_UI_FIXED_GROUP; extern laUiType *_LA_UI_TAB; extern laUiType _LA_UI_CONDITION; //NO PTR extern laUiType _LA_UI_CONDITION_END; //NO PTR extern laUiType _LA_UI_CONDITION_ELSE; //NO PTR extern laUiType _LA_UI_ROW_BEGIN; //NO PTR extern laUiType _LA_UI_ROW_END; //NO PTR extern laUiType *_LA_UI_COLLECTION; extern laUiType *_LA_UI_COLLECTION_ITEM; extern laUiType *_LA_UI_COLLECTION_SELECTOR; extern laUiType *_LA_UI_COLLECTION_SINGLE; extern laUiType *_LA_UI_BUTTON; extern laUiType *_LA_UI_LABEL; extern laUiType *_LA_UI_INT; extern laUiType *_LA_UI_VALUE_METER; extern laUiType *_LA_UI_VALUE_METER_2D; extern laUiType *_LA_UI_FLOAT; extern laUiType *_LA_UI_FLOAT_COLOR; extern laUiType *_LA_UI_FLOAT_COLOR_HCY; extern laUiType *_LA_UI_ENUM_SELECTOR; extern laUiType *_LA_UI_MENU_ROOT; extern laUiType *_LA_UI_CONDITION_TOGGLE; extern laUiType *_LA_UI_STRING; extern laUiType *_LA_UI_STRING_MULTI; extern laUiType *_LA_UI_ALIGN; extern laUiType *_LA_UI_CANVAS; extern laUiType *_LA_UI_COLUMN_ADJUSTER; extern laUiType *_LA_UI_SYMBOL; extern laUiType *_LA_UI_COLUMN_VIEWER; extern laUiType *_LA_UI_NODE_SOCKET; extern laUiType *_LA_UI_HEIGHT_ADJUSTER; extern laUiType *_LA_UI_RAW; extern laUiDescriptor _LA_UI_DESCRIPTOR_REF_UI; extern laUiDescriptor _LA_UI_DESCRIPTOR_REF_UIE; extern laUiDescriptor _LA_UI_DESCRIPTOR_REF_P; extern laUiDescriptor _LA_UI_DESCRIPTOR_REF_PE; extern laUiDescriptor _LA_UI_DESCRIPTOR_REF_BASE; extern laUiDescriptor _LA_UI_DESCRIPTOR_REF_ACT; extern laUiDefineFunc _LA_SUBPROP_DONT_CARE; extern laBoxedTheme *_LA_THEME_PANEL; extern laBoxedTheme *_LA_THEME_VALUATOR; extern laBoxedTheme *_LA_THEME_BUTTON; extern laBoxedTheme *_LA_THEME_STRING; extern laBoxedTheme *_LA_THEME_SELECTOR; extern laBoxedTheme *_LA_THEME_COLLECTION_SELECTOR; extern laBoxedTheme *_LA_THEME_LABEL; extern laBoxedTheme *_LA_THEME_TAB; extern laBoxedTheme *_LA_THEME_COLLECTION_GROUP; extern laBoxedTheme *_LA_THEME_COLLECTION_ITEM; extern laBoxedTheme *_LA_THEME_FLOATING_PANEL; extern laBoxedTheme *_LA_THEME_3D_VIEW; extern laBoxedTheme *_LA_THEME_2D_VIEW; extern laBoxedTheme *_LA_THEME_SOCKET; extern laProp *_LA_PROP_PANEL; extern laProp *_LA_PROP_BLOCK; extern laProp *_LA_PROP_WINDOW; extern laProp *_LA_PROP_UI_ITEM; extern laProp *_LA_PROP_FAILED_ITEM; extern laProp *_LA_PROP_TRASH_ITEM; extern laProp *_LA_PROP_NODE_GRAPH; extern laPropContainer *_LA_PROP_3D_EXTRA; extern laPropContainer *_LA_PROP_2D_EXTRA; extern laPropContainer *_LA_PROP_FILE_BROWSER; extern laProp _P_LA_USE_INSTANCE_ONLY; #define _LA_USE_INSTANCE_ONLY (&_P_LA_USE_INSTANCE_ONLY) #define LA_CARE_ALL64 (~(0ull)) #define LA_CARE_ALL32 (~(0ull)) #define LA_MATCH_INSTANCE (1ull << 63) #define LA_IN_USER_PREF (1ull << 62) #define LA_IN_LIVE_EDIT (1ull << 61) #define LA_IN_PANEL (1ull << 60) #define LA_IN_WINDOW (1ull << 59) #define LA_IN_LAYOUT (1ull << 58) #define LA_USER_THEME (1ull << 63) #define LA_USER_THEME_SIZE (1ull << 62) #define LA_USER_THEME_COLOR (1ull << 61) #define LA_USER_DISPLAY (1ull << 60) #define LA_LIVE_PATH (1ull << 63) #define LA_LIVE_TYPE (1ull << 62) #define LA_LIVE_THEME (1ull << 61) #define LA_LIVE_EXTRA (1ull << 60) #define LA_WINDOW_INFO (1ull << 63) #define LA_LAYOUT_INFO (1ull << 63) #define LA_UI_INTERNAL_BUTTON 1 #define LA_UI_INTERNAL_WATCHER 2 #define LA_UI_INTERNAL_GROUP 3 #define LA_UI_INTERNAL_TAB 4 #define LA_UI_INTERNAL_LABEL 5 #define LA_UI_INTERNAL_3D_VIEW 6 #define LA_UI_INTERNAL_2D_VIEW 7 #define LA_UI_INTERNAL_ADJUSTER 8 #define LA_UI_INTERNAL_BRACKET_BEGIN 9 #define LA_UI_INTERNAL_BRACKET_ELSE 10 #define LA_UI_INTERNAL_FOLDER_BEGIN 11 #define LA_UI_INTERNAL_BRACKET_END 12 #define LA_UI_INTERNAL_ALIGNER 13 #define LA_UI_INTERNAL_MENU 14 #define LA_UI_INTERNAL_SYMBOL 15 #define LA_RH0 (MAIN.UiRowHeight) #define LA_RH (MAIN.ScaledUiRowHeight) #define LA_2RH (MAIN.ScaledUiRowHeight*2) #define LA_RH2 ((int)(MAIN.ScaledUiRowHeight/2)) #define LA_SCROLL_W ((int)(MAIN.ScaledUiRowHeight * 0.67)) #define LA_SEAM_W ((int)(MAIN.ScaledUiRowHeight * 0.15))