carb/simplegui/ISimpleGui.h
File members: carb/simplegui/ISimpleGui.h
// Copyright (c) 2021-2023, NVIDIA CORPORATION. All rights reserved.
//
// NVIDIA CORPORATION and its licensors retain all intellectual property
// and proprietary rights in and to this software, related documentation
// and any modifications thereto. Any use, reproduction, disclosure or
// distribution of this software and related documentation without an express
// license agreement from NVIDIA CORPORATION is strictly prohibited.
//
#pragma once
#include "SimpleGuiTypes.h"
#include "../Interface.h"
namespace carb
{
namespace simplegui
{
struct ISimpleGui
{
CARB_PLUGIN_INTERFACE("carb::simplegui::ISimpleGui", 1, 2)
Context*(CARB_ABI* createContext)(const ContextDesc& desc);
void(CARB_ABI* destroyContext)(Context* ctx);
void(CARB_ABI* setCurrentContext)(Context* ctx);
Context*(CARB_ABI* getCurrentContext)();
void(CARB_ABI* newFrame)();
void(CARB_ABI* render)(float elapsedTime);
void(CARB_ABI* setDisplaySize)(Float2 size);
Float2(CARB_ABI* getDisplaySize)();
Style*(CARB_ABI* getStyle)();
void(CARB_ABI* showDemoWindow)(bool* open);
void(CARB_ABI* showMetricsWindow)(bool* open);
void(CARB_ABI* showStyleEditor)(Style* style);
bool(CARB_ABI* showStyleSelector)(const char* label);
void(CARB_ABI* showFontSelector)(const char* label);
void(CARB_ABI* showUserGuide)();
const char*(CARB_ABI* getImGuiVersion)();
void(CARB_ABI* setStyleColors)(Style* style, StyleColorsPreset preset);
bool(CARB_ABI* begin)(const char* label, bool* open, WindowFlags flags);
void(CARB_ABI* end)();
bool(CARB_ABI* beginChild)(const char* strId, Float2 size, bool border, WindowFlags flags);
bool(CARB_ABI* beginChildId)(uint32_t id, Float2 size, bool border, WindowFlags flags);
void(CARB_ABI* endChild)();
bool(CARB_ABI* isWindowAppearing)();
bool(CARB_ABI* isWindowCollapsed)();
bool(CARB_ABI* isWindowFocused)(FocusedFlags flags);
bool(CARB_ABI* isWindowHovered)(HoveredFlags flags);
DrawList*(CARB_ABI* getWindowDrawList)();
float(CARB_ABI* getWindowDpiScale)();
Float2(CARB_ABI* getWindowPos)();
Float2(CARB_ABI* getWindowSize)();
float(CARB_ABI* getWindowWidth)();
float(CARB_ABI* getWindowHeight)();
Float2(CARB_ABI* getContentRegionMax)();
Float2(CARB_ABI* getContentRegionAvail)();
float(CARB_ABI* ContentRegionAvailWidth)();
Float2(CARB_ABI* getWindowContentRegionMin)();
Float2(CARB_ABI* getWindowContentRegionMax)();
float(CARB_ABI* getWindowContentRegionWidth)();
void(CARB_ABI* setNextWindowPos)(Float2 position, Condition cond, Float2 pivot);
void(CARB_ABI* setNextWindowSize)(Float2 size, Condition cond);
void(CARB_ABI* setNextWindowSizeConstraints)(const Float2& sizeMin, const Float2& sizeMax);
void(CARB_ABI* setNextWindowContentSize)(const Float2& size);
void(CARB_ABI* setNextWindowCollapsed)(bool collapsed, Condition cond);
void(CARB_ABI* setNextWindowFocus)();
void(CARB_ABI* setNextWindowBgAlpha)(float alpha);
void(CARB_ABI* setWindowFontScale)(float scale);
void(CARB_ABI* setWindowPos)(const char* name, const Float2& pos, Condition cond);
void(CARB_ABI* setWindowSize)(const char* name, const Float2& size, Condition cond);
void(CARB_ABI* setWindowCollapsed)(const char* name, bool collapsed, Condition cond);
void(CARB_ABI* setWindowFocus)(const char* name);
float(CARB_ABI* getScrollX)();
float(CARB_ABI* getScrollY)();
float(CARB_ABI* getScrollMaxX)();
float(CARB_ABI* getScrollMaxY)();
void(CARB_ABI* setScrollX)(float scrollX);
void(CARB_ABI* setScrollY)(float scrollY);
void(CARB_ABI* setScrollHereY)(float centerYRatio);
void(CARB_ABI* setScrollFromPosY)(float posY, float centerYRatio);
void(CARB_ABI* pushFont)(Font* font);
void(CARB_ABI* popFont)();
void(CARB_ABI* pushStyleColor)(StyleColor styleColorIndex, Float4 color);
void(CARB_ABI* popStyleColor)();
void(CARB_ABI* pushStyleVarFloat)(StyleVar styleVarIndex, float value);
void(CARB_ABI* pushStyleVarFloat2)(StyleVar styleVarIndex, Float2 value);
void(CARB_ABI* popStyleVar)();
const Float4&(CARB_ABI* getStyleColorVec4)(StyleColor colorIndex);
Font*(CARB_ABI* getFont)();
float(CARB_ABI* getFontSize)();
Float2(CARB_ABI* getFontTexUvWhitePixel)();
uint32_t(CARB_ABI* getColorU32StyleColor)(StyleColor colorIndex, float alphaMul);
uint32_t(CARB_ABI* getColorU32Vec4)(Float4 color);
uint32_t(CARB_ABI* getColorU32)(uint32_t color);
void(CARB_ABI* pushItemWidth)(float width);
void(CARB_ABI* popItemWidth)();
carb::Float2(CARB_ABI* calcItemSize)(carb::Float2 size, float defaultX, float defaultY);
float(CARB_ABI* calcItemWidth)();
void(CARB_ABI* pushItemFlag)(ItemFlags option, bool enabled);
void(CARB_ABI* popItemFlag)();
void(CARB_ABI* pushTextWrapPos)(float wrapPosX);
void(CARB_ABI* popTextWrapPos)();
void(CARB_ABI* pushAllowKeyboardFocus)(bool allow);
void(CARB_ABI* popAllowKeyboardFocus)();
void(CARB_ABI* pushButtonRepeat)(bool repeat);
void(CARB_ABI* popButtonRepeat)();
void(CARB_ABI* separator)();
void sameLine();
void(CARB_ABI* sameLineEx)(float posX, float spacingW);
void(CARB_ABI* newLine)();
void(CARB_ABI* spacing)();
void(CARB_ABI* dummy)(Float2 size);
void(CARB_ABI* indent)();
void(CARB_ABI* indentEx)(float indentWidth);
void(CARB_ABI* unindent)();
void(CARB_ABI* beginGroup)();
void(CARB_ABI* endGroup)();
Float2(CARB_ABI* getCursorPos)();
float(CARB_ABI* getCursorPosX)();
float(CARB_ABI* getCursorPosY)();
void(CARB_ABI* setCursorPos)(const Float2& localPos);
void(CARB_ABI* setCursorPosX)(float x);
void(CARB_ABI* setCursorPosY)(float y);
Float2(CARB_ABI* getCursorStartPos)();
Float2(CARB_ABI* getCursorScreenPos)();
void(CARB_ABI* setCursorScreenPos)(const Float2& pos);
void(CARB_ABI* alignTextToFramePadding)();
float(CARB_ABI* getTextLineHeight)();
float(CARB_ABI* getTextLineHeightWithSpacing)();
float(CARB_ABI* getFrameHeight)();
float(CARB_ABI* getFrameHeightWithSpacing)();
void(CARB_ABI* pushIdString)(const char* id);
void(CARB_ABI* pushIdStringBeginEnd)(const char* idBegin, const char* idEnd);
void(CARB_ABI* pushIdInt)(int id);
void(CARB_ABI* pushIdPtr)(const void* id);
void(CARB_ABI* popId)();
uint32_t(CARB_ABI* getIdString)(const char* id);
uint32_t(CARB_ABI* getIdStringBeginEnd)(const char* idBegin, const char* idEnd);
uint32_t(CARB_ABI* getIdPtr)(const void* id);
void(CARB_ABI* textUnformatted)(const char* text);
void(CARB_ABI* text)(const char* fmt, ...);
void(CARB_ABI* textColored)(const Float4& color, const char* fmt, ...);
void(CARB_ABI* textDisabled)(const char* fmt, ...);
void(CARB_ABI* textWrapped)(const char* fmt, ...);
void(CARB_ABI* labelText)(const char* label, const char* fmt, ...);
void(CARB_ABI* bulletText)(const char* fmt, ...);
bool(CARB_ABI* buttonEx)(const char* label, const Float2& size);
bool button(const char* label);
bool(CARB_ABI* smallButton)(const char* label);
bool(CARB_ABI* invisibleButton)(const char* id, const Float2& size);
bool(CARB_ABI* arrowButton)(const char* id, Direction dir);
void(CARB_ABI* image)(TextureId userTextureId,
const Float2& size,
const Float2& uv0,
const Float2& uv1,
const Float4& tintColor,
const Float4& borderColor);
bool(CARB_ABI* imageButton)(TextureId userTextureId,
const Float2& size,
const Float2& uv0,
const Float2& uv1,
int framePadding,
const Float4& bgColor,
const Float4& tintColor);
bool(CARB_ABI* checkbox)(const char* label, bool* value);
bool(CARB_ABI* checkboxFlags)(const char* label, uint32_t* flags, uint32_t flagsValue);
bool(CARB_ABI* radioButton)(const char* label, bool active);
bool(CARB_ABI* radioButtonEx)(const char* label, int* v, int vButton);
void(CARB_ABI* progressBar)(float fraction, Float2 size, const char* overlay);
void(CARB_ABI* bullet)();
bool(CARB_ABI* beginCombo)(const char* label, const char* previewValue, ComboFlags flags);
void(CARB_ABI* endCombo)();
bool(CARB_ABI* combo)(const char* label, int* currentItem, const char* const* items, int itemCount);
bool(CARB_ABI* dragFloat)(
const char* label, float* v, float vSpeed, float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* dragFloat2)(
const char* label, float v[2], float vSpeed, float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* dragFloat3)(
const char* label, float v[3], float vSpeed, float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* dragFloat4)(
const char* label, float v[4], float vSpeed, float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* dragFloatRange2)(const char* label,
float* vCurrentMin,
float* vCurrentMax,
float vSpeed,
float vMin,
float vMax,
const char* displayFormat,
const char* displayFormatMax,
float power);
bool(CARB_ABI* dragInt)(const char* label, int* v, float vSpeed, int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* dragInt2)(const char* label, int v[2], float vSpeed, int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* dragInt3)(const char* label, int v[3], float vSpeed, int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* dragInt4)(const char* label, int v[4], float vSpeed, int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* dragIntRange2)(const char* label,
int* vCurrentMin,
int* vCurrentMax,
float vSpeed,
int vMin,
int vMax,
const char* displayFormat,
const char* displayFormatMax);
bool(CARB_ABI* dragScalar)(const char* label,
DataType dataType,
void* v,
float vSpeed,
const void* vMin,
const void* vMax,
const char* displayFormat,
float power);
bool(CARB_ABI* dragScalarN)(const char* label,
DataType dataType,
void* v,
int components,
float vSpeed,
const void* vMin,
const void* vMax,
const char* displayFormat,
float power);
bool(CARB_ABI* sliderFloat)(const char* label, float* v, float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* sliderFloat2)(
const char* label, float v[2], float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* sliderFloat3)(
const char* label, float v[3], float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* sliderFloat4)(
const char* label, float v[4], float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* sliderAngle)(const char* label, float* vRad, float vDegreesMin, float vDegreesMax);
bool(CARB_ABI* sliderInt)(const char* label, int* v, int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* sliderInt2)(const char* label, int v[2], int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* sliderInt3)(const char* label, int v[3], int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* sliderInt4)(const char* label, int v[4], int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* sliderScalar)(const char* label,
DataType dataType,
void* v,
const void* vMin,
const void* vMax,
const char* displayFormat,
float power);
bool(CARB_ABI* sliderScalarN)(const char* label,
DataType dataType,
void* v,
int components,
const void* vMin,
const void* vMax,
const char* displayFormat,
float power);
bool(CARB_ABI* vSliderFloat)(
const char* label, const Float2& size, float* v, float vMin, float vMax, const char* displayFormat, float power);
bool(CARB_ABI* vSliderInt)(const char* label, const Float2& size, int* v, int vMin, int vMax, const char* displayFormat);
bool(CARB_ABI* vSliderScalar)(const char* label,
const Float2& size,
DataType dataType,
void* v,
const void* vMin,
const void* vMax,
const char* displayFormat,
float power);
bool(CARB_ABI* inputText)(
const char* label, char* buf, size_t bufSize, InputTextFlags flags, TextEditCallback callback, void* userData);
bool(CARB_ABI* inputTextMultiline)(const char* label,
char* buf,
size_t bufSize,
const Float2& size,
InputTextFlags flags,
TextEditCallback callback,
void* userData);
bool(CARB_ABI* inputFloat)(
const char* label, float* v, float step, float stepFast, int decimalPrecision, InputTextFlags extraFlags);
bool(CARB_ABI* inputFloat2)(const char* label, float v[2], int decimalPrecision, InputTextFlags extraFlags);
bool(CARB_ABI* inputFloat3)(const char* label, float v[3], int decimalPrecision, InputTextFlags extraFlags);
bool(CARB_ABI* inputFloat4)(const char* label, float v[4], int decimalPrecision, InputTextFlags extraFlags);
bool(CARB_ABI* inputInt)(const char* label, int* v, int step, int stepFast, InputTextFlags extraFlags);
bool(CARB_ABI* inputInt2)(const char* label, int v[2], InputTextFlags extraFlags);
bool(CARB_ABI* inputInt3)(const char* label, int v[3], InputTextFlags extraFlags);
bool(CARB_ABI* inputInt4)(const char* label, int v[4], InputTextFlags extraFlags);
bool(CARB_ABI* inputDouble)(
const char* label, double* v, double step, double stepFast, const char* displayFormat, InputTextFlags extraFlags);
bool(CARB_ABI* inputScalar)(const char* label,
DataType dataType,
void* v,
const void* step,
const void* stepFast,
const char* displayFormat,
InputTextFlags extraFlags);
bool(CARB_ABI* inputScalarN)(const char* label,
DataType dataType,
void* v,
int components,
const void* step,
const void* stepFast,
const char* displayFormat,
InputTextFlags extraFlags);
bool(CARB_ABI* colorEdit3)(const char* label, float col[3], ColorEditFlags flags);
bool(CARB_ABI* colorEdit4)(const char* label, float col[4], ColorEditFlags flags);
bool(CARB_ABI* colorPicker3)(const char* label, float col[3], ColorEditFlags flags);
bool(CARB_ABI* colorPicker4)(const char* label, float col[4], ColorEditFlags flags, const float* refCol);
bool(CARB_ABI* colorButton)(const char* descId, const Float4& col, ColorEditFlags flags, Float2 size);
void(CARB_ABI* setColorEditOptions)(ColorEditFlags flags);
bool(CARB_ABI* treeNode)(const char* label);
bool(CARB_ABI* treeNodeString)(const char* strId, const char* fmt, ...);
bool(CARB_ABI* treeNodePtr)(const void* ptrId, const char* fmt, ...);
bool(CARB_ABI* treeNodeEx)(const char* label, TreeNodeFlags flags);
bool(CARB_ABI* treeNodeStringEx)(const char* strId, TreeNodeFlags flags, const char* fmt, ...);
bool(CARB_ABI* treeNodePtrEx)(const void* ptrId, TreeNodeFlags flags, const char* fmt, ...);
void(CARB_ABI* treePushString)(const char* strId);
void(CARB_ABI* treePushPtr)(const void* ptrId);
void(CARB_ABI* treePop)();
void(CARB_ABI* treeAdvanceToLabelPos)();
float(CARB_ABI* getTreeNodeToLabelSpacing)();
void(CARB_ABI* setNextTreeNodeOpen)(bool isOpen, Condition cond);
bool(CARB_ABI* collapsingHeader)(const char* label, TreeNodeFlags flags);
bool(CARB_ABI* collapsingHeaderEx)(const char* label, bool* open, TreeNodeFlags flags);
bool(CARB_ABI* selectable)(const char* label,
bool selected /* = false*/,
SelectableFlags flags /* = 0*/,
const Float2& size /* = Float2(0,0)*/);
bool(CARB_ABI* selectableEx)(const char* label,
bool* selected,
SelectableFlags flags /* = 0*/,
const Float2& size /* = Float2(0,0)*/);
bool(CARB_ABI* listBox)(
const char* label, int* currentItem, const char* const items[], int itemCount, int heightInItems /* = -1*/);
bool(CARB_ABI* listBoxEx)(const char* label,
int* currentItem,
bool (*itemsGetterFn)(void* data, int idx, const char** out_text),
void* data,
int itemCount,
int heightInItems /* = -1*/);
bool(CARB_ABI* listBoxHeader)(const char* label, const Float2& size /* = Float2(0,0)*/);
bool(CARB_ABI* listBoxHeaderEx)(const char* label, int itemCount, int heightInItems /* = -1*/);
void(CARB_ABI* listBoxFooter)();
void(CARB_ABI* plotLines)(const char* label,
const float* values,
int valuesCount,
int valuesOffset,
const char* overlayText,
float scaleMin,
float scaleMax,
Float2 graphSize,
int stride);
void(CARB_ABI* plotLinesEx)(const char* label,
float (*valuesGetterFn)(void* data, int idx),
void* data,
int valuesCount,
int valuesOffset,
const char* overlayText,
float scaleMin,
float scaleMax,
Float2 graphSize);
void(CARB_ABI* plotHistogram)(const char* label,
const float* values,
int valuesCount,
int valuesOffset,
const char* overlayText,
float scaleMin,
float scaleMax,
Float2 graphSize,
int stride);
void(CARB_ABI* plotHistogramEx)(const char* label,
float (*valuesGetterFn)(void* data, int idx),
void* data,
int valuesCount,
int valuesOffset,
const char* overlayText,
float scaleMin,
float scaleMax,
Float2 graphSize);
void(CARB_ABI* valueBool)(const char* prefix, bool b);
void(CARB_ABI* valueInt)(const char* prefix, int v);
void(CARB_ABI* valueUInt32)(const char* prefix, uint32_t v);
void(CARB_ABI* valueFloat)(const char* prefix, float v, const char* floatFormat /* = nullptr*/);
bool(CARB_ABI* beginMainMenuBar)();
void(CARB_ABI* endMainMenuBar)();
bool(CARB_ABI* beginMenuBar)();
void(CARB_ABI* endMenuBar)();
bool(CARB_ABI* beginMenu)(const char* label, bool enabled /* = true*/);
void(CARB_ABI* endMenu)();
bool(CARB_ABI* menuItem)(const char* label,
const char* shortcut /* = NULL*/,
bool selected /* = false*/,
bool enabled /* = true*/);
bool(CARB_ABI* menuItemEx)(const char* label, const char* shortcut, bool* pSelected, bool enabled /* = true*/);
void(CARB_ABI* setTooltip)(const char* fmt, ...);
void(CARB_ABI* beginTooltip)();
void(CARB_ABI* endTooltip)();
void(CARB_ABI* openPopup)(const char* strId);
bool(CARB_ABI* beginPopup)(const char* strId, WindowFlags flags /* = 0*/);
bool(CARB_ABI* beginPopupContextItem)(const char* strId /* = NULL*/, int mouseButton /* = 1*/);
bool(CARB_ABI* beginPopupContextWindow)(const char* strId /* = NULL*/,
int mouseButton /* = 1*/,
bool alsoOverItems /* = true*/);
bool(CARB_ABI* beginPopupContextVoid)(const char* strId /* = NULL*/, int mouseButton /* = 1*/);
bool(CARB_ABI* beginPopupModal)(const char* name, bool* open /* = NULL*/, WindowFlags flags /* = 0*/);
void(CARB_ABI* endPopup)();
bool(CARB_ABI* openPopupOnItemClick)(const char* strId /* = NULL*/, int mouseButton /* = 1*/);
bool(CARB_ABI* isPopupOpen)(const char* strId);
void(CARB_ABI* closeCurrentPopup)();
void(CARB_ABI* columns)(int count /* = 1*/, const char* id /* = NULL*/, bool border /* = true*/);
void(CARB_ABI* nextColumn)();
int(CARB_ABI* getColumnIndex)();
float(CARB_ABI* getColumnWidth)(int columnIndex /* = -1*/);
void(CARB_ABI* setColumnWidth)(int columnIndex, float width);
float(CARB_ABI* getColumnOffset)(int columnIndex /* = -1*/);
void(CARB_ABI* setColumnOffset)(int columnIndex, float offsetX);
int(CARB_ABI* getColumnsCount)();
bool(CARB_ABI* beginTabBar)(const char* strId, TabBarFlags flags);
void(CARB_ABI* endTabBar)();
bool(CARB_ABI* beginTabItem)(const char* label, bool* open, TabItemFlags flags);
void(CARB_ABI* endTabItem)();
void(CARB_ABI* setTabItemClosed)(const char* tabOrDockedWindowLabel);
void(CARB_ABI* dockSpace)(uint32_t id, const Float2& size, DockNodeFlags flags, const WindowClass* windowClass);
uint32_t(CARB_ABI* dockSpaceOverViewport)(Viewport* viewport,
DockNodeFlags dockspaceFlags,
const WindowClass* windowClass);
void(CARB_ABI* setNextWindowDockId)(uint32_t dockId, Condition cond);
void(CARB_ABI* setNextWindowClass)(const WindowClass* windowClass);
uint32_t(CARB_ABI* getWindowDockId)();
bool(CARB_ABI* isWindowDocked)();
bool(CARB_ABI* beginDragDropSource)(DragDropFlags flags);
bool(CARB_ABI* setDragDropPayload)(const char* type, const void* data, size_t size, Condition cond);
void(CARB_ABI* endDragDropSource)();
bool(CARB_ABI* beginDragDropTarget)();
const Payload*(CARB_ABI* acceptDragDropPayload)(const char* type, DragDropFlags flags);
void(CARB_ABI* endDragDropTarget)();
const Payload*(CARB_ABI* getDragDropPayload)();
void(CARB_ABI* pushClipRect)(const Float2& clipRectMin, const Float2& clipRectMax, bool intersectWithCurrentClipRect);
void(CARB_ABI* popClipRect)();
void(CARB_ABI* setItemDefaultFocus)();
void(CARB_ABI* setKeyboardFocusHere)(int offset /* = 0*/);
void(CARB_ABI* clearActiveId)();
bool(CARB_ABI* isItemHovered)(HoveredFlags flags /* = 0*/);
bool(CARB_ABI* isItemActive)();
bool(CARB_ABI* isItemFocused)();
bool(CARB_ABI* isItemClicked)(int mouseButton /* = 0*/);
bool(CARB_ABI* isItemVisible)();
bool(CARB_ABI* isItemEdited)();
bool(CARB_ABI* isItemDeactivated)();
bool(CARB_ABI* isItemDeactivatedAfterEdit)();
bool(CARB_ABI* isAnyItemHovered)();
bool(CARB_ABI* isAnyItemActive)();
bool(CARB_ABI* isAnyItemFocused)();
bool(CARB_ABI* isItemIdActive)(uint32_t id);
Float2(CARB_ABI* getItemRectMin)();
Float2(CARB_ABI* getItemRectMax)();
Float2(CARB_ABI* getItemRectSize)();
void(CARB_ABI* setItemAllowOverlap)();
bool(CARB_ABI* isRectVisible)(const Float2& size);
bool(CARB_ABI* isRectVisibleEx)(const Float2& rectMin, const Float2& rectMax);
float(CARB_ABI* getTime)();
int(CARB_ABI* getFrameCount)();
DrawList*(CARB_ABI* getOverlayDrawList)();
const char*(CARB_ABI* getStyleColorName)(StyleColor color);
Float2(CARB_ABI* calcTextSize)(const char* text,
const char* textEnd /* = nullptr*/,
bool hideTextAfterDoubleHash /* = false*/,
float wrap_width /* = -1.0f*/);
void(CARB_ABI* calcListClipping)(int itemCount, float itemsHeight, int* outItemsDisplayStart, int* outItemsDisplayEnd);
bool(CARB_ABI* beginChildFrame)(uint32_t id, const Float2& size, WindowFlags flags /* = 0*/);
void(CARB_ABI* endChildFrame)();
Float4(CARB_ABI* colorConvertU32ToFloat4)(uint32_t in);
uint32_t(CARB_ABI* colorConvertFloat4ToU32)(const Float4& in);
void(CARB_ABI* colorConvertRGBtoHSV)(float r, float g, float b, float& outH, float& outS, float& outV);
void(CARB_ABI* colorConvertHSVtoRGB)(float h, float s, float v, float& outR, float& outG, float& outB);
int(CARB_ABI* getKeyIndex)(int imguiKey);
bool(CARB_ABI* isKeyDown)(int userKeyIndex);
bool(CARB_ABI* isKeyPressed)(int userKeyIndex, bool repeat /* = true*/);
bool(CARB_ABI* isKeyReleased)(int userKeyIndex);
int(CARB_ABI* getKeyPressedAmount)(int keyIndex, float repeatDelay, float rate);
KeyModifiers(CARB_ABI* getKeyModifiers)();
bool(CARB_ABI* isMouseDown)(int button);
bool(CARB_ABI* isAnyMouseDown)();
bool(CARB_ABI* isMouseClicked)(int button, bool repeat /* = false*/);
bool(CARB_ABI* isMouseDoubleClicked)(int button);
bool(CARB_ABI* isMouseReleased)(int button);
bool(CARB_ABI* isMouseDragging)(int button /* = 0*/, float lockThreshold /* = -1.0f*/);
bool(CARB_ABI* isMouseHoveringRect)(const Float2& rMin, const Float2& rMax, bool clip /* = true*/);
bool(CARB_ABI* isMousePosValid)(const Float2* mousePos /* = nullptr*/);
Float2(CARB_ABI* getMousePos)();
Float2(CARB_ABI* getMousePosOnOpeningCurrentPopup)();
Float2(CARB_ABI* getMouseDragDelta)(int button /* = 0*/, float lockThreshold /* = -1.0f*/);
void(CARB_ABI* resetMouseDragDelta)(int button /* = 0*/);
carb::Float2(CARB_ABI* getMouseWheel)();
MouseCursor(CARB_ABI* getMouseCursor)();
void(CARB_ABI* setMouseCursor)(MouseCursor type);
void(CARB_ABI* captureKeyboardFromApp)(bool capture /* = true*/);
void(CARB_ABI* captureMouseFromApp)(bool capture /* = true*/);
const char*(CARB_ABI* getClipboardText)();
void(CARB_ABI* setClipboardText)(const char* text);
bool(CARB_ABI* getWantSaveIniSettings)();
void(CARB_ABI* setWantSaveIniSettings)(bool wantSaveIniSettings);
void(CARB_ABI* loadIniSettingsFromMemory)(const char* iniData, size_t iniSize);
const char*(CARB_ABI* saveIniSettingsToMemory)(size_t* iniSize);
Viewport*(CARB_ABI* getMainViewport)();
void(CARB_ABI* dockBuilderDockWindow)(const char* windowName, uint32_t nodeId);
DockNode*(CARB_ABI* dockBuilderGetNode)(uint32_t nodeId);
void(CARB_ABI* dockBuilderAddNode)(uint32_t nodeId, DockNodeFlags flags);
void(CARB_ABI* dockBuilderRemoveNode)(uint32_t nodeId);
void(CARB_ABI* dockBuilderRemoveNodeDockedWindows)(uint32_t nodeId, bool clearPersistentDockingReferences);
void(CARB_ABI* dockBuilderRemoveNodeChildNodes)(uint32_t nodeId);
uint32_t(CARB_ABI* dockBuilderSplitNode)(
uint32_t nodeId, Direction splitDir, float sizeRatioForNodeAtDir, uint32_t* outIdDir, uint32_t* outIdOther);
void(CARB_ABI* dockBuilderFinish)(uint32_t nodeId);
Font*(CARB_ABI* addFont)(const FontConfig* fontConfig);
Font*(CARB_ABI* addFontDefault)(const FontConfig* fontConfig /* = NULL */);
Font*(CARB_ABI* addFontFromFileTTF)(const char* filename,
float sizePixels,
const FontConfig* fontCfg /*= NULL */,
const Wchar* glyphRanges /*= NULL*/);
Font*(CARB_ABI* addFontFromMemoryTTF)(void* fontData,
int fontSize,
float sizePixels,
const FontConfig* fontCfg /* = NULL */,
const Wchar* glyphRanges /* = NULL */);
Font*(CARB_ABI* addFontFromMemoryCompressedTTF)(const void* compressedFontData,
int compressedFontSize,
float sizePixels,
const FontConfig* fontCfg /* = NULL */,
const Wchar* glyphRanges /*= NULL */);
Font*(CARB_ABI* addFontFromMemoryCompressedBase85TTF)(const char* compressedFontDataBase85,
float sizePixels,
const FontConfig* fontCfg /* = NULL */,
const Wchar* glyphRanges /* = NULL */);
int(CARB_ABI* addFontCustomRectGlyph)(
Font* font, Wchar id, int width, int height, float advanceX, const carb::Float2& offset /* (0, 0) */);
const FontCustomRect*(CARB_ABI* getFontCustomRectByIndex)(int index);
bool(CARB_ABI* buildFont)();
bool(CARB_ABI* isFontBuilt)();
void(CARB_ABI* getFontTexDataAsAlpha8)(unsigned char** outPixels, int* outWidth, int* outHeight);
void(CARB_ABI* clearFontInputData)();
void(CARB_ABI* clearFontTexData)();
void(CARB_ABI* clearFonts)();
void(CARB_ABI* clearFontInputOutput)();
const Wchar*(CARB_ABI* getFontGlyphRangesDefault)();
const Wchar*(CARB_ABI* getFontGlyphRangesKorean)();
const Wchar*(CARB_ABI* getFontGlyphRangesJapanese)();
const Wchar*(CARB_ABI* getFontGlyphRangesChineseFull)();
const Wchar*(CARB_ABI* getGlyphRangesChineseSimplifiedCommon)();
const Wchar*(CARB_ABI* getFontGlyphRangesCyrillic)();
const Wchar*(CARB_ABI* getFontGlyphRangesThai)();
void(CARB_ABI* setFontGlobalScale)(float scale);
void(CARB_ABI* addWindowDrawCallback)(DrawCallback callback, void* userData);
void(CARB_ABI* addLine)(DrawList* drawList, const carb::Float2& a, const carb::Float2& b, uint32_t col, float thickness);
void(CARB_ABI* addRect)(DrawList* drawList,
const carb::Float2& a,
const carb::Float2& b,
uint32_t col,
float rounding,
DrawCornerFlags roundingCornersFlags,
float thickness);
void(CARB_ABI* addRectFilled)(DrawList* drawList,
const carb::Float2& a,
const carb::Float2& b,
uint32_t col,
float rounding,
DrawCornerFlags roundingCornersFlags);
void(CARB_ABI* addRectFilledMultiColor)(DrawList* drawList,
const carb::Float2& a,
const carb::Float2& b,
uint32_t colUprLeft,
uint32_t colUprRight,
uint32_t colBotRight,
uint32_t colBotLeft);
void(CARB_ABI* addQuad)(DrawList* drawList,
const carb::Float2& a,
const carb::Float2& b,
const carb::Float2& c,
const carb::Float2& d,
uint32_t col,
float thickness);
void(CARB_ABI* addQuadFilled)(DrawList* drawList,
const carb::Float2& a,
const carb::Float2& b,
const carb::Float2& c,
const carb::Float2& d,
uint32_t col);
void(CARB_ABI* addTriangle)(DrawList* drawList,
const carb::Float2& a,
const carb::Float2& b,
const carb::Float2& c,
uint32_t col,
float thickness);
void(CARB_ABI* addTriangleFilled)(
DrawList* drawList, const carb::Float2& a, const carb::Float2& b, const carb::Float2& c, uint32_t col);
void(CARB_ABI* addCircle)(
DrawList* drawList, const carb::Float2& centre, float radius, uint32_t col, int32_t numSegments, float thickness);
void(CARB_ABI* addCircleFilled)(
DrawList* drawList, const carb::Float2& centre, float radius, uint32_t col, int32_t numSegments);
void(CARB_ABI* addText)(
DrawList* drawList, const carb::Float2& pos, uint32_t col, const char* textBegin, const char* textEnd);
void(CARB_ABI* addTextEx)(DrawList* drawList,
const Font* font,
float fontSize,
const carb::Float2& pos,
uint32_t col,
const char* textBegin,
const char* textEnd,
float wrapWidth,
const carb::Float4* cpuFineClipRect);
void(CARB_ABI* addImage)(DrawList* drawList,
TextureId textureId,
const carb::Float2& a,
const carb::Float2& b,
const carb::Float2& uvA,
const carb::Float2& uvB,
uint32_t col);
void(CARB_ABI* addImageQuad)(DrawList* drawList,
TextureId textureId,
const carb::Float2& a,
const carb::Float2& b,
const carb::Float2& c,
const carb::Float2& d,
const carb::Float2& uvA,
const carb::Float2& uvB,
const carb::Float2& uvC,
const carb::Float2& uvD,
uint32_t col);
void(CARB_ABI* addImageRounded)(DrawList* drawList,
TextureId textureId,
const carb::Float2& a,
const carb::Float2& b,
const carb::Float2& uvA,
const carb::Float2& uvB,
uint32_t col,
float rounding,
DrawCornerFlags roundingCorners);
void(CARB_ABI* addPolyline)(DrawList* drawList,
const carb::Float2* points,
const int32_t numPoints,
uint32_t col,
bool closed,
float thickness);
void(CARB_ABI* addConvexPolyFilled)(DrawList* drawList,
const carb::Float2* points,
const int32_t numPoints,
uint32_t col);
void(CARB_ABI* addBezierCurve)(DrawList* drawList,
const carb::Float2& pos0,
const carb::Float2& cp0,
const carb::Float2& cp1,
const carb::Float2& pos1,
uint32_t col,
float thickness,
int32_t numSegments);
ListClipper*(CARB_ABI* createListClipper)(int32_t itemsCount, float itemsHeight);
bool(CARB_ABI* stepListClipper)(ListClipper* listClipper);
void(CARB_ABI* destroyListClipper)(ListClipper* listClipper);
bool(CARB_ABI* feedKeyboardEvent)(Context* ctx, const input::KeyboardEvent& event);
bool(CARB_ABI* feedMouseEvent)(Context* ctx, const input::MouseEvent& event);
void(CARB_ABI* enumerateFonts)(FontEnumFn func, void* user);
const char*(CARB_ABI* getFontName)(const Font* font);
Font*(CARB_ABI* getDefaultFont)();
Font*(CARB_ABI* setDefaultFont)(Font* font);
};
inline void ISimpleGui::sameLine()
{
sameLineEx(0, -1.0f);
}
inline bool ISimpleGui::button(const char* label)
{
return buttonEx(label, { 0, 0 });
}
} // namespace simplegui
} // namespace carb