const int NUI_DIRECTION_HORIZONTAL = 0; const int NUI_DIRECTION_VERTICAL = 1; const int NUI_MOUSE_BUTTON_LEFT = 0; const int NUI_MOUSE_BUTTON_MIDDLE = 1; const int NUI_MOUSE_BUTTON_RIGHT = 2; const int NUI_SCROLLBARS_NONE = 0; const int NUI_SCROLLBARS_X = 1; const int NUI_SCROLLBARS_Y = 2; const int NUI_SCROLLBARS_BOTH = 3; const int NUI_SCROLLBARS_AUTO = 4; const int NUI_ASPECT_FIT = 0; const int NUI_ASPECT_FILL = 1; const int NUI_ASPECT_FIT100 = 2; const int NUI_ASPECT_EXACT = 3; const int NUI_ASPECT_EXACTSCALED = 4; const int NUI_ASPECT_STRETCH = 5; const int NUI_HALIGN_CENTER = 0; const int NUI_HALIGN_LEFT = 1; const int NUI_HALIGN_RIGHT = 2; const int NUI_VALIGN_MIDDLE = 0; const int NUI_VALIGN_TOP = 1; const int NUI_VALIGN_BOTTOM = 2; // ----------------------- // Style const float NUI_STYLE_PRIMARY_WIDTH = 150.0; const float NUI_STYLE_PRIMARY_HEIGHT = 50.0; const float NUI_STYLE_SECONDARY_WIDTH = 150.0; const float NUI_STYLE_SECONDARY_HEIGHT = 35.0; const float NUI_STYLE_TERTIARY_WIDTH = 100.0; const float NUI_STYLE_TERTIARY_HEIGHT = 30.0; const float NUI_STYLE_ROW_HEIGHT = 25.0; // ----------------------- // Window // Special cases: // * Set the window title to JsonBool(FALSE), Collapse to JsonBool(FALSE) and bClosable to FALSE // to hide the title bar. // Note: You MUST provide a way to close the window some other way, or the user will be stuck with it. json // Window NuiWindow( json jRoot, // Layout-ish (NuiRow, NuiCol, NuiGroup) json jTitle, // Bind:String json jGeometry, // Bind:Rect Set x and/or y to -1.0 to center the window on that axis // Set x and/or y to -2.0 to position the window's top left at the mouse cursor's position of that axis // Set x and/or y to -3.0 to center the window on the mouse cursor's position of that axis json jResizable, // Bind:Bool Set to JsonBool(TRUE) or JsonNull() to let user resize without binding. json jCollapsed, // Bind:Bool Set to a static value JsonBool(FALSE) to disable collapsing. // Set to JsonNull() to let user collapse without binding. // For better UX, leave collapsing on. json jClosable, // Bind:Bool You must provide a way to close the window if you set this to FALSE. // For better UX, handle the window "closed" event. json jTransparent, // Bind:Bool Do not render background json jBorder, // Bind:Bool Do not render border json jAcceptsInput = // Bind:Bool Set JsonBool(FALSE) to disable all input. JSON_TRUE // All hover, clicks and keypresses will fall through. ); // ----------------------- // Values // Create a dynamic bind. Unlike static values, these can change at runtime: // NuiBind("mybindlabel"); // NuiSetBind(.., "mybindlabel", JsonString("hi")); // To create static values, just use the json types directly: // JsonString("hi"); json // Bind NuiBind( string sId ); // Tag the given element with a id. // Only tagged elements will send events to the server. json // Element NuiId( json jElem, // Element string sId // String ); // A shim/helper that can be used to render or bind a strref where otherwise // a string value would go. json NuiStrRef( int nStrRef // STRREF ); // ----------------------- // Layout // A column will auto-space all elements inside of it and advise the parent // about it's desired size. json // Layout NuiCol( json jList // Layout[] or Element[] ); // A row will auto-space all elements inside of it and advise the parent // about it's desired size. json // Layout NuiRow( json jList // Layout[] or Element[] ); // A group, usually with a border and some padding, holding a single element. Can scroll. // Will not advise parent of size, so you need to let it fill a span (col/row) as if it was // a element. json // Layout NuiGroup( json jChild, // Layout or Element int bBorder = TRUE, int nScroll = NUI_SCROLLBARS_AUTO ); // Modifiers/Attributes: These are all static and cannot be bound, since the UI system // cannot easily reflow once the layout is set up. You need to swap the layout if you // want to change element geometry. json // Element NuiWidth( json jElem, // Element float fWidth // Float: Element width in pixels (strength=required). ); json // Element NuiHeight( json jElem, // Element float fHeight // Float: Height in pixels (strength=required). ); json // Element NuiAspect( json jElem, // Element float fAspect // Float: Ratio of x/y. ); // Set a margin on the widget. The margin is the spacing outside of the widget. json // Element NuiMargin( json jElem, // Element float fMargin // Float ); // Set padding on the widget. The margin is the spacing inside of the widget. json // Element NuiPadding( json jElem, // Element float fPadding // Float ); // Disabled elements are non-interactive and greyed out. json // Element NuiEnabled( json jElem, // Element json jEnabler // Bind:Bool ); // Invisible elements do not render at all, but still take up layout space. json // Element NuiVisible( json jElem, // Element json jVisible // Bind:Bool ); // Tooltips show on mouse hover. json // Element NuiTooltip( json jElem, // Element json jTooltip // Bind:String ); // Tooltips for disabled elements show on mouse hover. json // Element NuiDisabledTooltip( json jElem, // Element json jTooltip // Bind:String ); // Encouraged elements have a breathing animated glow inside of it. json // Element NuiEncouraged( json jElem, // Element json jEncouraged // Bind:Bool ); // ----------------------- // Props & Style json // Vec2 NuiVec(float x, float y); json // Rect NuiRect(float x, float y, float w, float h); json // Color NuiColor(int r, int g, int b, int a = 255); // Style the foreground color of the widget. This is dependent on the widget // in question and only supports solid/full colors right now (no texture skinning). // For example, labels would style their text color; progress bars would style the bar. json // Element NuiStyleForegroundColor( json jElem, // Element json jColor // Bind:Color ); // ----------------------- // Widgets // A special widget that just takes up layout space. // If you add multiple spacers to a span, they will try to size equally. // e.g.: [ ] will try to center the button. json // Element NuiSpacer(); // Create a label field. Labels are single-line stylable non-editable text fields. json // Element NuiLabel( json jValue, // Bind:String json jHAlign, // Bind:Int:NUI_HALIGN_* json jVAlign // Bind:Int:NUI_VALIGN_* ); // Create a non-editable text field. Note: This text field internally implies a NuiGroup wrapped // around it, which is providing the optional border and scrollbars. json // Element NuiText( json jValue, // Bind:String int bBorder = TRUE, // Bool int nScroll = NUI_SCROLLBARS_AUTO // Int:NUI_SCROLLBARS_* ); // A clickable button with text as the label. // Sends "click" events on click. json // Element NuiButton( json jLabel // Bind:String ); // A clickable button with an image as the label. // Sends "click" events on click. json // Element NuiButtonImage( json jResRef // Bind:ResRef ); // A clickable button with text as the label. // Same as the normal button, but this one is a toggle. // Sends "click" events on click. json // Element NuiButtonSelect( json jLabel, // Bind:String json jValue // Bind:Bool ); // A checkbox with a label to the right of it. json // Element NuiCheck( json jLabel, // Bind:String json jBool // Bind:Bool ); // A image, with no border or padding. json // Element NuiImage( json jResRef, // Bind:ResRef json jAspect, // Bind:Int:NUI_ASPECT_* json jHAlign, // Bind:Int:NUI_HALIGN_* json jVAlign // Bind:Int:NUI_VALIGN_* ); // Optionally render only subregion of jImage. // jRegion is a NuiRect (x, y, w, h) to indicate the render region inside the image. json // NuiImage NuiImageRegion( json jImage, // NuiImage json jRegion // Bind:NuiRect ); // A combobox/dropdown. json // Element NuiCombo( json jElements, // Bind:ComboEntry[] json jSelected // Bind:Int (index into jElements) ); json // ComboEntry NuiComboEntry( string sLabel, int nValue ); // A floating-point slider. A good step size for normal-sized sliders is 0.01. json // Element NuiSliderFloat( json jValue, // Bind:Float json jMin, // Bind:Float json jMax, // Bind:Float json jStepSize // Bind:Float ); // A integer/discrete slider. json // Element NuiSlider( json jValue, // Bind:Int json jMin, // Bind:Int json jMax, // Bind:Int json jStepSize // Bind:Int ); // A progress bar. Progress is always from 0.0 to 1.0. json // Element NuiProgress( json jValue // Bind:Float (0.0->1.0) ); // A editable text field. json // Element NuiTextEdit( json jPlaceholder, // Bind:String json jValue, // Bind:String int nMaxLength, // UInt >= 1, <= 65535 int bMultiline, // Bool int bWordWrap = TRUE // Bool ); // Creates a list view of elements. // jTemplate needs to be an array of NuiListTemplateCell instances. // All binds referenced in jTemplate should be arrays of rRowCount size; // e.g. when rendering a NuiLabel(), the bound label String should be an array of strings. // You can pass in one of the template jRowCount into jSize as a convenience. The array // size will be uses as the Int bind. // jRowHeight defines the height of the rendered rows. json // Element NuiList( json jTemplate, // NuiListTemplateCell[] (max: 16) json jRowCount, // Bind:Int float fRowHeight = NUI_STYLE_ROW_HEIGHT, int bBorder = TRUE, int nScroll = NUI_SCROLLBARS_Y // Note: Cannot be AUTO. ); json // NuiListTemplateCell NuiListTemplateCell( json jElem, // Element float fWidth, // Float:0 = auto, >1 = pixel width int bVariable // Bool:Cell can grow if space is available; otherwise static ); // A simple color picker, with no border or spacing. json // Element NuiColorPicker( json jColor // Bind:Color ); // A list of options (radio buttons). Only one can be selected // at a time. jValue is updated every time a different element is // selected. The special value -1 means "nothing". json // Element NuiOptions( int nDirection, // NUI_DIRECTION_* json jElements, // JsonArray of string labels json jValue // Bind:Int ); // A group of buttons. Only one can be selected at a time. jValue // is updated every time a different button is selected. The special // value -1 means "nothing". json // Element NuiToggles( int nDirection, // NUI_DIRECTION_* json jElements, // JsonArray of string labels json jValue // Bind:Int ); const int NUI_CHART_TYPE_LINES = 0; const int NUI_CHART_TYPE_COLUMN = 1; json // NuiChartSlot NuiChartSlot( int nType, // Int:NUI_CHART_TYPE_* json jLegend, // Bind:String json jColor, // Bind:NuiColor json jData // Bind:Float[] ); // Renders a chart. // Currently, min and max values are determined automatically and // cannot be influenced. json // Element NuiChart( json jSlots // NuiChartSlot[] ); // ----------------------- // Draw Lists // Draw lists are raw painting primitives on top of widgets. // They are anchored to the widget x/y coordinates, and are always // painted in order of definition, without culling. You cannot bind // the draw_list itself, but most parameters on individual draw_list // entries can be bound. const int NUI_DRAW_LIST_ITEM_TYPE_POLYLINE = 0; const int NUI_DRAW_LIST_ITEM_TYPE_CURVE = 1; const int NUI_DRAW_LIST_ITEM_TYPE_CIRCLE = 2; const int NUI_DRAW_LIST_ITEM_TYPE_ARC = 3; const int NUI_DRAW_LIST_ITEM_TYPE_TEXT = 4; const int NUI_DRAW_LIST_ITEM_TYPE_IMAGE = 5; const int NUI_DRAW_LIST_ITEM_TYPE_LINE = 6; // You can order draw list items to be painted either before, or after the // builtin render of the widget in question. This enables you to paint "behind" // a widget. const int NUI_DRAW_LIST_ITEM_ORDER_BEFORE = -1; const int NUI_DRAW_LIST_ITEM_ORDER_AFTER = 1; // Always render draw list item (default). const int NUI_DRAW_LIST_ITEM_RENDER_ALWAYS = 0; // Only render when NOT hovering. const int NUI_DRAW_LIST_ITEM_RENDER_MOUSE_OFF = 1; // Only render when mouse is hovering. const int NUI_DRAW_LIST_ITEM_RENDER_MOUSE_HOVER = 2; // Only render while LMB is held down. const int NUI_DRAW_LIST_ITEM_RENDER_MOUSE_LEFT = 3; // Only render while RMB is held down. const int NUI_DRAW_LIST_ITEM_RENDER_MOUSE_RIGHT = 4; // Only render while MMB is held down. const int NUI_DRAW_LIST_ITEM_RENDER_MOUSE_MIDDLE = 5; json // DrawListItem NuiDrawListPolyLine( json jEnabled, // Bind:Bool json jColor, // Bind:Color json jFill, // Bind:Bool json jLineThickness, // Bind:Float json jPoints, // Bind:Float[] Always provide points in pairs int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, // Int:NUI_DRAW_LIST_ITEM_ORDER_* int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS // Int:NUI_DRAW_LIST_ITEM_RENDER_* ); json // DrawListItem NuiDrawListCurve( json jEnabled, // Bind:Bool json jColor, // Bind:Color json jLineThickness, // Bind:Float json jA, // Bind:Vec2 json jB, // Bind:Vec2 json jCtrl0, // Bind:Vec2 json jCtrl1, // Bind:Vec2 int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, // Int:NUI_DRAW_LIST_ITEM_ORDER_* int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS // Int:NUI_DRAW_LIST_ITEM_RENDER_* ); json // DrawListItem NuiDrawListCircle( json jEnabled, // Bind:Bool json jColor, // Bind:Color json jFill, // Bind:Bool json jLineThickness, // Bind:Float json jRect, // Bind:Rect int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, // Int:NUI_DRAW_LIST_ITEM_ORDER_* int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS // Int:NUI_DRAW_LIST_ITEM_RENDER_* ); json // DrawListItem NuiDrawListArc( json jEnabled, // Bind:Bool json jColor, // Bind:Color json jFill, // Bind:Bool json jLineThickness, // Bind:Float json jCenter, // Bind:Vec2 json jRadius, // Bind:Float json jAMin, // Bind:Float json jAMax, // Bind:Float int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, // Int:NUI_DRAW_LIST_ITEM_ORDER_* int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS // Int:NUI_DRAW_LIST_ITEM_RENDER_* ); json // DrawListItem NuiDrawListText( json jEnabled, // Bind:Bool json jColor, // Bind:Color json jRect, // Bind:Rect json jText, // Bind:String int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, // Int:NUI_DRAW_LIST_ITEM_ORDER_* int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS // Int:NUI_DRAW_LIST_ITEM_RENDER_* ); json // DrawListItem NuiDrawListImage( json jEnabled, // Bind:Bool json jResRef, // Bind:ResRef json jPos, // Bind:Rect json jAspect, // Bind:Int:NUI_ASPECT_* json jHAlign, // Bind:Int:NUI_HALIGN_* json jVAlign, // Bind:Int:NUI_VALIGN_* int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, // Int:NUI_DRAW_LIST_ITEM_ORDER_* int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS // Int:NUI_DRAW_LIST_ITEM_RENDER_* ); json // DrawListItemImage NuiDrawListImageRegion( json jDrawListImage, // DrawListItemImage json jRegion // Bind:NuiRect ); json // DrawListItem NuiDrawListLine( json jEnabled, // Bind:Bool json jColor, // Bind:Color json jLineThickness, // Bind:Float json jA, // Bind:Vec2 json jB, // Bind:Vec2 int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, // Int:NUI_DRAW_LIST_ITEM_ORDER_* int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS // Int:NUI_DRAW_LIST_ITEM_RENDER_* ); json // Element NuiDrawList( json jElem, // Element json jScissor, // Bind:Bool Constrain painted elements to widget bounds. json jList // DrawListItem[] ); // ----------------------- // Implementation json NuiWindow( json jRoot, json jTitle, json jGeometry, json jResizable, json jCollapsed, json jClosable, json jTransparent, json jBorder, json jAcceptsInput ) { json ret = JsonObject(); // Currently hardcoded and here to catch backwards-incompatible data in the future. ret = JsonObjectSet(ret, "version", JsonInt(1)); ret = JsonObjectSet(ret, "title", jTitle); ret = JsonObjectSet(ret, "root", jRoot); ret = JsonObjectSet(ret, "geometry", jGeometry); ret = JsonObjectSet(ret, "resizable", jResizable); ret = JsonObjectSet(ret, "collapsed", jCollapsed); ret = JsonObjectSet(ret, "closable", jClosable); ret = JsonObjectSet(ret, "transparent", jTransparent); ret = JsonObjectSet(ret, "border", jBorder); ret = JsonObjectSet(ret, "accepts_input", jAcceptsInput); return ret; } json NuiElement( string sType, json jLabel, json jValue ) { json ret = JsonObject(); ret = JsonObjectSet(ret, "type", JsonString(sType)); ret = JsonObjectSet(ret, "label", jLabel); ret = JsonObjectSet(ret, "value", jValue); return ret; } json NuiBind( string sId ) { return JsonObjectSet(JsonObject(), "bind", JsonString(sId)); } json NuiId( json jElem, string sId ) { return JsonObjectSet(jElem, "id", JsonString(sId)); } json NuiStrRef( int nStrRef ) { json ret = JsonObject(); ret = JsonObjectSet(ret, "strref", JsonInt(nStrRef)); return ret; } json NuiCol( json jList ) { return JsonObjectSet(NuiElement("col", JsonNull(), JsonNull()), "children", jList); } json NuiRow( json jList ) { return JsonObjectSet(NuiElement("row", JsonNull(), JsonNull()), "children", jList); } json NuiGroup( json jChild, int bBorder = TRUE, int nScroll = NUI_SCROLLBARS_AUTO ) { json ret = NuiElement("group", JsonNull(), JsonNull()); ret = JsonObjectSet(ret, "children", JsonArrayInsert(JsonArray(), jChild)); ret = JsonObjectSet(ret, "border", JsonBool(bBorder)); ret = JsonObjectSet(ret, "scrollbars", JsonInt(nScroll)); return ret; } json NuiWidth(json jElem, float fWidth) { return JsonObjectSet(jElem, "width", JsonFloat(fWidth)); } json NuiHeight(json jElem, float fHeight) { return JsonObjectSet(jElem, "height", JsonFloat(fHeight)); } json NuiAspect(json jElem, float fAspect) { return JsonObjectSet(jElem, "aspect", JsonFloat(fAspect)); } json NuiMargin( json jElem, float fMargin ) { return JsonObjectSet(jElem, "margin", JsonFloat(fMargin)); } json NuiPadding( json jElem, float fPadding ) { return JsonObjectSet(jElem, "padding", JsonFloat(fPadding)); } json NuiEnabled( json jElem, json jEnabler ) { return JsonObjectSet(jElem, "enabled", jEnabler); } json NuiVisible( json jElem, json jVisible ) { return JsonObjectSet(jElem, "visible", jVisible); } json NuiTooltip( json jElem, json jTooltip ) { return JsonObjectSet(jElem, "tooltip", jTooltip); } json NuiDisabledTooltip( json jElem, json jTooltip ) { return JsonObjectSet(jElem, "disabled_tooltip", jTooltip); } json NuiEncouraged( json jElem, json jEncouraged ) { return JsonObjectSet(jElem, "encouraged", jEncouraged); } json NuiVec(float x, float y) { json ret = JsonObject(); ret = JsonObjectSet(ret, "x", JsonFloat(x)); ret = JsonObjectSet(ret, "y", JsonFloat(y)); return ret; } json NuiRect(float x, float y, float w, float h) { json ret = JsonObject(); ret = JsonObjectSet(ret, "x", JsonFloat(x)); ret = JsonObjectSet(ret, "y", JsonFloat(y)); ret = JsonObjectSet(ret, "w", JsonFloat(w)); ret = JsonObjectSet(ret, "h", JsonFloat(h)); return ret; } json NuiColor(int r, int g, int b, int a = 255) { json ret = JsonObject(); ret = JsonObjectSet(ret, "r", JsonInt(r)); ret = JsonObjectSet(ret, "g", JsonInt(g)); ret = JsonObjectSet(ret, "b", JsonInt(b)); ret = JsonObjectSet(ret, "a", JsonInt(a)); return ret; } json NuiStyleForegroundColor( json jElem, json jColor ) { return JsonObjectSet(jElem, "foreground_color", jColor); } json NuiSpacer() { return NuiElement("spacer", JsonNull(), JsonNull()); } json NuiLabel( json jValue, json jHAlign, json jVAlign ) { json ret = NuiElement("label", JsonNull(), jValue); ret = JsonObjectSet(ret, "text_halign", jHAlign); ret = JsonObjectSet(ret, "text_valign", jVAlign); return ret; } json NuiText( json jValue, int bBorder = TRUE, int nScroll = NUI_SCROLLBARS_AUTO ) { json ret = NuiElement("text", JsonNull(), jValue); ret = JsonObjectSet(ret, "border", JsonBool(bBorder)); ret = JsonObjectSet(ret, "scrollbars", JsonInt(nScroll)); return ret; } json NuiButton( json jLabel ) { return NuiElement("button", jLabel, JsonNull()); } json NuiButtonImage( json jResRef ) { return NuiElement("button_image", jResRef, JsonNull()); } json NuiButtonSelect( json jLabel, json jValue ) { return NuiElement("button_select", jLabel, jValue); } json NuiCheck( json jLabel, json jBool ) { return NuiElement("check", jLabel, jBool); } json NuiImage( json jResRef, json jAspect, json jHAlign, json jVAlign ) { json img = NuiElement("image", JsonNull(), jResRef); img = JsonObjectSet(img, "image_aspect", jAspect); img = JsonObjectSet(img, "image_halign", jHAlign); img = JsonObjectSet(img, "image_valign", jVAlign); return img; } json NuiImageRegion( json jImage, json jRegion ) { return JsonObjectSet(jImage, "image_region", jRegion); } json NuiCombo( json jElements, json jSelected ) { return JsonObjectSet(NuiElement("combo", JsonNull(), jSelected), "elements", jElements); } json NuiComboEntry( string sLabel, int nValue ) { return JsonArrayInsert(JsonArrayInsert(JsonArray(), JsonString(sLabel)), JsonInt(nValue)); } json NuiSliderFloat( json jValue, json jMin, json jMax, json jStepSize ) { json ret = NuiElement("sliderf", JsonNull(), jValue); ret = JsonObjectSet(ret, "min", jMin); ret = JsonObjectSet(ret, "max", jMax); ret = JsonObjectSet(ret, "step", jStepSize); return ret; } json NuiSlider( json jValue, json jMin, json jMax, json jStepSize ) { json ret = NuiElement("slider", JsonNull(), jValue); ret = JsonObjectSet(ret, "min", jMin); ret = JsonObjectSet(ret, "max", jMax); ret = JsonObjectSet(ret, "step", jStepSize); return ret; } json NuiProgress( json jValue ) { return NuiElement("progress", JsonNull(), jValue); } json NuiTextEdit( json jPlaceholder, json jValue, int nMaxLength, int bMultiline, int bWordWrap = TRUE ) { json ret = NuiElement("textedit", jPlaceholder, jValue); ret = JsonObjectSet(ret, "max", JsonInt(nMaxLength)); ret = JsonObjectSet(ret, "multiline", JsonBool(bMultiline)); ret = JsonObjectSet(ret, "wordwrap", JsonBool(bWordWrap)); return ret; } json NuiList( json jTemplate, json jRowCount, float fRowHeight = NUI_STYLE_ROW_HEIGHT, int bBorder = TRUE, int nScroll = NUI_SCROLLBARS_Y ) { json ret = NuiElement("list", JsonNull(), JsonNull()); ret = JsonObjectSet(ret, "row_template", jTemplate); ret = JsonObjectSet(ret, "row_count", jRowCount); ret = JsonObjectSet(ret, "row_height", JsonFloat(fRowHeight)); ret = JsonObjectSet(ret, "border", JsonBool(bBorder)); ret = JsonObjectSet(ret, "scrollbars", JsonInt(nScroll)); return ret; } json NuiListTemplateCell( json jElem, float fWidth, int bVariable ) { json ret = JsonArray(); ret = JsonArrayInsert(ret, jElem); ret = JsonArrayInsert(ret, JsonFloat(fWidth)); ret = JsonArrayInsert(ret, JsonBool(bVariable)); return ret; } json NuiColorPicker( json jColor ) { json ret = NuiElement("color_picker", JsonNull(), jColor); return ret; } json NuiOptions( int nDirection, json jElements, json jValue ) { json ret = NuiElement("options", JsonNull(), jValue); ret = JsonObjectSet(ret, "direction", JsonInt(nDirection)); ret = JsonObjectSet(ret, "elements", jElements); return ret; } json NuiToggles( int nDirection, json jElements, json jValue ) { json ret = NuiElement("tabbar", JsonNull(), jValue); ret = JsonObjectSet(ret, "direction", JsonInt(nDirection)); ret = JsonObjectSet(ret, "elements", jElements); return ret; } json NuiChartSlot( int nType, json jLegend, json jColor, json jData ) { json ret = JsonObject(); ret = JsonObjectSet(ret, "type", JsonInt(nType)); ret = JsonObjectSet(ret, "legend", jLegend); ret = JsonObjectSet(ret, "color", jColor); ret = JsonObjectSet(ret, "data", jData); return ret; } json NuiChart( json jSlots ) { json ret = NuiElement("chart", JsonNull(), jSlots); return ret; } json NuiDrawListItem( int nType, json jEnabled, json jColor, json jFill, json jLineThickness, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = JsonObject(); ret = JsonObjectSet(ret, "type", JsonInt(nType)); ret = JsonObjectSet(ret, "enabled", jEnabled); ret = JsonObjectSet(ret, "color", jColor); ret = JsonObjectSet(ret, "fill", jFill); ret = JsonObjectSet(ret, "line_thickness", jLineThickness); ret = JsonObjectSet(ret, "order", JsonInt(nOrder)); ret = JsonObjectSet(ret, "render", JsonInt(nRender)); return ret; } json NuiDrawListPolyLine( json jEnabled, json jColor, json jFill, json jLineThickness, json jPoints, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = NuiDrawListItem(NUI_DRAW_LIST_ITEM_TYPE_POLYLINE, jEnabled, jColor, jFill, jLineThickness, nOrder, nRender); ret = JsonObjectSet(ret, "points", jPoints); return ret; } json NuiDrawListCurve( json jEnabled, json jColor, json jLineThickness, json jA, json jB, json jCtrl0, json jCtrl1, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = NuiDrawListItem(NUI_DRAW_LIST_ITEM_TYPE_CURVE, jEnabled, jColor, JsonBool(0), jLineThickness, nOrder, nRender); ret = JsonObjectSet(ret, "a", jA); ret = JsonObjectSet(ret, "b", jB); ret = JsonObjectSet(ret, "ctrl0", jCtrl0); ret = JsonObjectSet(ret, "ctrl1", jCtrl1); return ret; } json NuiDrawListCircle( json jEnabled, json jColor, json jFill, json jLineThickness, json jRect, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = NuiDrawListItem(NUI_DRAW_LIST_ITEM_TYPE_CIRCLE, jEnabled, jColor, jFill, jLineThickness, nOrder, nRender); ret = JsonObjectSet(ret, "rect", jRect); return ret; } json NuiDrawListArc( json jEnabled, json jColor, json jFill, json jLineThickness, json jCenter, json jRadius, json jAMin, json jAMax, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = NuiDrawListItem(NUI_DRAW_LIST_ITEM_TYPE_ARC, jEnabled, jColor, jFill, jLineThickness, nOrder, nRender); ret = JsonObjectSet(ret, "c", jCenter); ret = JsonObjectSet(ret, "radius", jRadius); ret = JsonObjectSet(ret, "amin", jAMin); ret = JsonObjectSet(ret, "amax", jAMax); return ret; } json NuiDrawListText( json jEnabled, json jColor, json jRect, json jText, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = NuiDrawListItem(NUI_DRAW_LIST_ITEM_TYPE_TEXT, jEnabled, jColor, JsonNull(), JsonNull(), nOrder, nRender); ret = JsonObjectSet(ret, "rect", jRect); ret = JsonObjectSet(ret, "text", jText); return ret; } json NuiDrawListImage( json jEnabled, json jResRef, json jRect, json jAspect, json jHAlign, json jVAlign, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = NuiDrawListItem(NUI_DRAW_LIST_ITEM_TYPE_IMAGE, jEnabled, JsonNull(), JsonNull(), JsonNull(), nOrder, nRender); ret = JsonObjectSet(ret, "image", jResRef); ret = JsonObjectSet(ret, "rect", jRect); ret = JsonObjectSet(ret, "image_aspect", jAspect); ret = JsonObjectSet(ret, "image_halign", jHAlign); ret = JsonObjectSet(ret, "image_valign", jVAlign); return ret; } json NuiDrawListImageRegion( json jDrawListImage, json jRegion ) { return JsonObjectSet(jDrawListImage, "image_region", jRegion); } json NuiDrawListLine( json jEnabled, json jColor, json jLineThickness, json jA, json jB, int nOrder = NUI_DRAW_LIST_ITEM_ORDER_AFTER, int nRender = NUI_DRAW_LIST_ITEM_RENDER_ALWAYS ) { json ret = NuiDrawListItem(NUI_DRAW_LIST_ITEM_TYPE_LINE, jEnabled, jColor, JsonNull(), jLineThickness, nOrder, nRender); ret = JsonObjectSet(ret, "a", jA); ret = JsonObjectSet(ret, "b", jB); return ret; } json NuiDrawList( json jElem, json jScissor, json jList ) { json ret = JsonObjectSet(jElem, "draw_list", jList); ret = JsonObjectSet(ret, "draw_list_scissor", jScissor); return ret; } // json // NuiCanvas( // json jList // ) // { // json ret = NuiElement("canvas", JsonNull(), jList); // return ret; // }