diff --git a/model_viewer/imgui/fpimgui.pas b/model_viewer/imgui/fpimgui.pas
index 21ba8b8..8020505 100644
--- a/model_viewer/imgui/fpimgui.pas
+++ b/model_viewer/imgui/fpimgui.pas
@@ -1,6 +1,6 @@
{
Bindings for dear imgui (AKA ImGui) - a bloat-free graphical user interface library for C++
-Based on cimgui+ImGui 1.49/1.50
+Based on ImGui 1.50 + cimgui wrapper
Not all functions were tested.
}
unit fpimgui;
@@ -30,14 +30,7 @@ type
TLongInt3 = array[0..2] of longint;
TLongInt4 = array[0..3] of longint;
- PImDrawData = ^ImDrawData;
- PImFont = ^ImFont;
- PImFontAtlas = ^ImFontAtlas;
- PImFontConfig = ^ImFontConfig;
PImGuiContext = Pointer;
- PImGuiSizeConstraintCallbackData = ^ImGuiSizeConstraintCallbackData;
- PImGuiStorage = ^ImGuiStorage;
- PImGuiTextEditCallbackData = ^ImGuiTextEditCallbackData;
ImVec2 = record
x, y: single;
@@ -50,32 +43,53 @@ type
ImU32 = dword;
ImWchar = word;
+ PImWchar = PWord;
ImTextureID = pointer;
ImGuiID = ImU32;
ImGuiCol = longint;
ImGuiStyleVar = longint;
ImGuiKey = longint;
- ImGuiAlign = longint;
- ImGuiColorEditMode = longint;
- ImGuiMouseCursor = longint;
- ImGuiWindowFlags = longint;
- ImGuiSetCond = longint;
ImGuiInputTextFlags = longint;
ImGuiSelectableFlags = longint;
{ Enums }
- ImGuiTreeNodeFlags = (
- Selected = 1 shl 0,
- Framed = 1 shl 1,
- AllowOverlapMode = 1 shl 2,
- NoTreePushOnOpen = 1 shl 3,
- NoAutoOpenOnLog = 1 shl 4,
- DefaultOpen = 1 shl 5,
- OpenOnDoubleClick = 1 shl 6,
- OpenOnArrow = 1 shl 7,
- Leaf = 1 shl 8,
- Bullet = 1 shl 9
+ ImGuiWindowFlags = longint;
+ ImGuiWindowFlagsEnum = (
+ ImGuiWindowFlags_Default = 0, // Default: 0
+ ImGuiWindowFlags_NoTitleBar = 1 shl 0, // Disable title-bar
+ ImGuiWindowFlags_NoResize = 1 shl 1, // Disable user resizing with the lower-right grip
+ ImGuiWindowFlags_NoMove = 1 shl 2, // Disable user moving the window
+ ImGuiWindowFlags_NoScrollbar = 1 shl 3, // Disable scrollbars (window can still scroll with mouse or programatically)
+ ImGuiWindowFlags_NoScrollWithMouse = 1 shl 4, // Disable user vertically scrolling with mouse wheel
+ ImGuiWindowFlags_NoCollapse = 1 shl 5, // Disable user collapsing window by double-clicking on it
+ ImGuiWindowFlags_AlwaysAutoResize = 1 shl 6, // Resize every window to its content every frame
+ ImGuiWindowFlags_ShowBorders = 1 shl 7, // Show borders around windows and items
+ ImGuiWindowFlags_NoSavedSettings = 1 shl 8, // Never load/save settings in .ini file
+ ImGuiWindowFlags_NoInputs = 1 shl 9, // Disable catching mouse or keyboard inputs
+ ImGuiWindowFlags_MenuBar = 1 shl 10, // Has a menu-bar
+ ImGuiWindowFlags_HorizontalScrollbar = 1 shl 11, // Allow horizontal scrollbar to appear (off by default). You may use SetNextWindowContentSize(ImVec2(width,0.0f)); prior to calling Begin() to specify width. Read code in imgui_demo in the "Horizontal Scrolling" section.
+ ImGuiWindowFlags_NoFocusOnAppearing = 1 shl 12, // Disable taking focus when transitioning from hidden to visible state
+ ImGuiWindowFlags_NoBringToFrontOnFocus = 1 shl 13, // Disable bringing window to front when taking focus (e.g. clicking on it or programatically giving it focus)
+ ImGuiWindowFlags_AlwaysVerticalScrollbar= 1 shl 14, // Always show vertical scrollbar (even if ContentSize.y < Size.y)
+ ImGuiWindowFlags_AlwaysHorizontalScrollbar=1shl 15, // Always show horizontal scrollbar (even if ContentSize.x < Size.x)
+ ImGuiWindowFlags_AlwaysUseWindowPadding = 1 shl 16 // Ensure child windows without border uses style.WindowPadding (ignored by default for non-bordered child windows, because more convenient)
+ );
+
+ // Flags for ImGui::TreeNodeEx(), ImGui::CollapsingHeader*()
+ ImGuiTreeNodeFlags = longint;
+ ImGuiTreeNodeFlagsEnum = (
+ ImGuiTreeNodeFlags_Selected = 1 shl 0,
+ ImGuiTreeNodeFlags_Framed = 1 shl 1,
+ ImGuiTreeNodeFlags_AllowOverlapMode = 1 shl 2,
+ ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 shl 3,
+ ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 shl 4,
+ ImGuiTreeNodeFlags_CollapsingHeader = (1 shl 1) or (1 shl 4), //Framed or NoAutoOpenOnLog
+ ImGuiTreeNodeFlags_DefaultOpen = 1 shl 5,
+ ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 shl 6,
+ ImGuiTreeNodeFlags_OpenOnArrow = 1 shl 7,
+ ImGuiTreeNodeFlags_Leaf = 1 shl 8,
+ ImGuiTreeNodeFlags_Bullet = 1 shl 9
);
ImGuiKey_ = (
@@ -148,7 +162,55 @@ type
//ImGuiCol_COUNT - unnecessary
);
+
+ // Enumeration for PushStyleVar() / PopStyleVar()
+ // NB: the enum only refers to fields of ImGuiStyle() which makes sense to be pushed/poped in UI code. Feel free to add others.
+ ImGuiStyleVar_ = (
+ ImGuiStyleVar_Alpha, // float
+ ImGuiStyleVar_WindowPadding, // ImVec2
+ ImGuiStyleVar_WindowRounding, // float
+ ImGuiStyleVar_WindowMinSize, // ImVec2
+ ImGuiStyleVar_ChildWindowRounding, // float
+ ImGuiStyleVar_FramePadding, // ImVec2
+ ImGuiStyleVar_FrameRounding, // float
+ ImGuiStyleVar_ItemSpacing, // ImVec2
+ ImGuiStyleVar_ItemInnerSpacing, // ImVec2
+ ImGuiStyleVar_IndentSpacing, // float
+ ImGuiStyleVar_GrabMinSize, // float
+ ImGuiStyleVar_ButtonTextAlign // flags ImGuiAlign_*
+ //ImGuiStyleVar_Count_ - unnecessary
+ );
+
+ // Enumeration for ColorEditMode()
+ // FIXME-OBSOLETE: Will be replaced by future color/picker api
+ ImGuiColorEditMode = longint;
+
+ // Enumeration for GetMouseCursor()
+ ImGuiMouseCursor = longint;
+ ImGuiMouseCursorEnum = (
+ ImGuiMouseCursor_None = -1,
+ ImGuiMouseCursor_Arrow = 0,
+ ImGuiMouseCursor_TextInput,
+ ImGuiMouseCursor_Move,
+ ImGuiMouseCursor_ResizeNS,
+ ImGuiMouseCursor_ResizeEW,
+ ImGuiMouseCursor_ResizeNESW,
+ ImGuiMouseCursor_ResizeNWSE
+ //ImGuiMouseCursor_Count_ - unnecessary
+ );
+
+ // Condition flags for ImGui::SetWindow***(), SetNextWindow***(), SetNextTreeNode***() functions
+ // All those functions treat 0 as a shortcut to ImGuiSetCond_Always
+ ImGuiSetCond = longint;
+ ImGuiSetCondEnum = (
+ ImGuiSetCond_Always = 1 shl 0, // Set the variable
+ ImGuiSetCond_Once = 1 shl 1, // Set the variable once per runtime session (only the first call with succeed)
+ ImGuiSetCond_FirstUseEver = 1 shl 2, // Set the variable if the window has no saved data (if doesn't exist in the .ini file)
+ ImGuiSetCond_Appearing = 1 shl 3 // Set the variable if the window is appearing after being hidden/inactive (or the first time)
+ );
+
{ Structs }
+
ImGuiStyle = record
Alpha : single;
WindowPadding : ImVec2;
@@ -177,6 +239,14 @@ type
end;
PImGuiStyle = ^ImGuiStyle;
+ //forward decls for ImGuiIO
+ PImDrawData = ^ImDrawData;
+ PImFont = ^ImFont;
+ PImFontAtlas = ^ImFontAtlas;
+ PImFontConfig = ^ImFontConfig;
+ PImGuiSizeConstraintCallbackData = ^ImGuiSizeConstraintCallbackData;
+ PImGuiStorage = ^ImGuiStorage;
+ PImGuiTextEditCallbackData = ^ImGuiTextEditCallbackData;
ImGuiIO = record
DisplaySize : ImVec2;
DeltaTime : single;
@@ -190,6 +260,7 @@ type
KeyRepeatDelay : single;
KeyRepeatRate : single;
UserData : pointer;
+
Fonts : PImFontAtlas;
FontGlobalScale : single;
FontAllowUserScaling : bool;
@@ -197,15 +268,24 @@ type
DisplayFramebufferScale : ImVec2;
DisplayVisibleMin : ImVec2;
DisplayVisibleMax : ImVec2;
+
+ // Advanced/subtle behaviors
OSXBehaviors : bool;
+
+ // User Functions
RenderDrawListsFn : procedure (data:PImDrawData);cdecl;
+
GetClipboardTextFn : function (user_data:pointer):Pchar;cdecl;
SetClipboardTextFn : procedure (user_data:pointer; text:Pchar);cdecl;
ClipboardUserData : pointer;
+
MemAllocFn : function (sz:size_t):pointer;cdecl;
MemFreeFn : procedure (ptr:pointer);cdecl;
+
ImeSetInputScreenPosFn : procedure (x:longint; y:longint);cdecl;
ImeWindowHandle : pointer;
+
+ // Input - Fill before calling NewFrame()
MousePos : ImVec2;
MouseDown : array[0..4] of bool;
MouseWheel : single;
@@ -215,7 +295,9 @@ type
KeyAlt : bool;
KeySuper : bool;
KeysDown : array[0..511] of bool;
- InputCharacters : array[0..(16+1)-1] of ImWchar;
+ InputCharacters : array[0..16] of ImWchar;
+
+ // Output - Retrieve after calling NewFrame()
WantCaptureMouse : bool;
WantCaptureKeyboard : bool;
WantTextInput : bool;
@@ -224,7 +306,11 @@ type
MetricsRenderVertices : longint;
MetricsRenderIndices : longint;
MetricsActiveWindows : longint;
+
MouseDelta : ImVec2;
+
+ // [Private] ImGui will maintain those fields. Forward compatibility not guaranteed!
+ // this part is not included, so be careful when doing sizeof(ImGuiIO) for example
end;
PImGuiIO = ^ImGuiIO;
@@ -273,27 +359,34 @@ type
end;
ImGuiTextEditCallbackData = record
+ //not translated
end;
ImGuiSizeConstraintCallbackData = record
+ //not translated
end;
ImGuiStorage = record
+ //not translated
end;
ImFont = record
+ //not translated
end;
ImFontConfig = record
+ //not translated
end;
ImFontAtlas = record
+ //not translated
end;
-
ImGuiTextEditCallback = function(Data: PImGuiTextEditCallbackData): longint; cdecl;
ImGuiSizeConstraintCallback = procedure(Data: PImGuiSizeConstraintCallbackData); cdecl;
+//binding helpers
+type
TCol3 = array[0..2] of single; //todo : does this work?
TCol4 = array[0..3] of single;
-//binding helpers
function ImVec2Init(const x, y: single): Imvec2; inline;
+function ImIDPtr(const i: integer): pointer; inline;
{ Static ImGui class, wraps external cimgui dll calls
Used for:
@@ -370,13 +463,13 @@ public
class procedure PushFont(font: PImFont); inline;
class procedure PopFont; inline;
class procedure PushStyleColor(idx: ImGuiCol; col: ImVec4); inline;
- class procedure PopStyleColor(Count: longint); inline;
+ class procedure PopStyleColor(count: longint); inline;
class procedure PushStyleVar(idx: ImGuiStyleVar; val: single); inline;
class procedure PushStyleVarVec(idx: ImGuiStyleVar; val: ImVec2); inline;
- class procedure PopStyleVar(Count: longint); inline;
+ class procedure PopStyleVar(count: longint = 1); inline;
class function GetFont(): PImFont; inline;
class function GetFontSize: single; inline;
- class procedure GetFontTexUvWhitePixel(pOut: PImVec2); inline;
+ class function GetFontTexUvWhitePixel(): ImVec2;
class function GetColorU32(idx: ImGuiCol; alpha_mul: single): ImU32; inline;
class function GetColorU32Vec(col: PImVec4): ImU32; inline;
@@ -437,7 +530,6 @@ public
class function GetIdPtr(ptr_id: pointer): ImGuiID; inline;
{ Widgets }
- { Text() wraps TextUnformatted(), not Text() - formatting is done by pascal's Format }
class procedure Text(const text_: string);
class procedure Text(const Fmt: string; const Args: array of Const);
//procedure igTextV(fmt:Pchar; args:va_list);cdecl;external ImguiLibName;
@@ -534,20 +626,17 @@ public
class function InputInt4(_label: PChar; v: TLongInt4; extra_flags: ImGuiInputTextFlags): bool; inline;
{ Widgets: Trees }
- class function TreeNode(_label: PChar): bool; inline;
- class function TreeNodeStr(str_id: PChar; fmt: string; args: array of const): bool; {inline;}
- class function TreeNodeStr(str_id: PChar; fmt: string): bool; inline;
- class function TreeNodePtr(ptr_id: pointer; fmt: string; args: array of const): bool; {inline;}
- class function TreeNodePtr(ptr_id: pointer; fmt: string): bool; inline;
- //todo : vargs
- // function igTreeNodeStrV(str_id:Pchar; fmt:Pchar; args:va_list):bool;cdecl;external ImguiLibName;
- //todo : vargs
- // function igTreeNodePtrV(ptr_id:pointer; fmt:Pchar; args:va_list):bool;cdecl;external ImguiLibName;
+ class function TreeNode(_label: string): bool; inline;
+ class function TreeNode(str_id: string; fmt: string; args: array of const): bool; {inline;}
+ class function TreeNode(str_id: string; fmt: string): bool; inline;
+ class function TreeNode(ptr_id: pointer; fmt: string; args: array of const): bool; {inline;}
+ class function TreeNode(ptr_id: pointer; fmt: string): bool; inline;
+
class function TreeNodeEx(_label: PChar; flags: ImGuiTreeNodeFlags): bool; inline;
- class function TreeNodeExStr(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool; {inline;}
- class function TreeNodeExStr(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string): bool; inline;
- class function TreeNodeExPtr(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool; {inline;}
- class function TreeNodeExPtr(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string): bool; inline;
+ class function TreeNodeEx(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool; {inline;}
+ class function TreeNodeEx(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string): bool; inline;
+ class function TreeNodeEx(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool; {inline;}
+ class function TreeNodeEx(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string): bool; inline;
//todo : vargs
// function igTreeNodeExV(str_id:Pchar; flags:ImGuiTreeNodeFlags; fmt:Pchar; args:va_list):bool;cdecl;external ImguiLibName;
//todo : vargs
@@ -558,8 +647,8 @@ public
class procedure TreeAdvanceToLabelPos; inline;
class function GetTreeNodeToLabelSpacing: single; inline;
class procedure SetNextTreeNodeOpen(opened: bool; cond: ImGuiSetCond = 0); inline;
- class function CollapsingHeader(_label: PChar; flags: ImGuiTreeNodeFlags): bool; inline;
- class function CollapsingHeaderEx(_label: PChar; p_open: Pbool; flags: ImGuiTreeNodeFlags): bool; inline;
+ class function CollapsingHeader(_label: PChar; flags: ImGuiTreeNodeFlags = 0): bool; inline;
+ class function CollapsingHeader(_label: PChar; p_open: Pbool; flags: ImGuiTreeNodeFlags = 0): bool; inline;
{ Widgets: Selectable / Lists }
class function Selectable(_label: string; selected: bool; flags: ImGuiSelectableFlags; size: ImVec2): bool;
@@ -579,7 +668,7 @@ public
class procedure ValueUInt(prefix: PChar; v: dword); inline;
class procedure ValueFloat(prefix: PChar; v: single; float_format: PChar); inline;
class procedure ValueColor(prefix: PChar; v: ImVec4); inline;
- class procedure ValueColor2(prefix: PChar; v: dword); inline;
+ class procedure ValueColor(prefix: PChar; v: ImU32); inline;
{ Tooltip }
class procedure SetTooltip(fmt: string; args: array of const); {inline}
@@ -594,10 +683,10 @@ public
class procedure EndMainMenuBar; inline;
class function BeginMenuBar: bool; inline;
class procedure EndMenuBar; inline;
- class function BeginMenu(_label: PChar; Enabled: bool): bool; inline;
+ class function BeginMenu(_label: PChar; Enabled: bool = true): bool; inline;
class procedure EndMenu; inline;
- class function MenuItem(_label: PChar; shortcut: PChar; selected: bool; Enabled: bool): bool; inline;
- class function MenuItemPtr(_label: PChar; shortcut: PChar; p_selected: Pbool; Enabled: bool): bool; inline;
+ class function MenuItem(_label: PChar; shortcut: PChar; selected: bool; Enabled: bool = true): bool; inline;
+ class function MenuItem(_label: PChar; shortcut: PChar; p_selected: Pbool; Enabled: bool = true): bool; inline;
{ Popup }
class procedure OpenPopup(str_id: PChar); inline;
@@ -626,7 +715,7 @@ public
class function IsItemHovered: bool; inline;
class function IsItemHoveredRect: bool; inline;
class function IsItemActive: bool; inline;
- class function IsItemClicked(mouse_button: longint): bool; inline;
+ class function IsItemClicked(mouse_button: longint = 0): bool; inline;
class function IsItemVisible: bool; inline;
class function IsAnyItemHovered: bool; inline;
class function IsAnyItemActive: bool; inline;
@@ -639,7 +728,9 @@ public
class function IsRootWindowFocused: bool; inline;
class function IsRootWindowOrAnyChildFocused: bool; inline;
class function IsRootWindowOrAnyChildHovered: bool; inline;
- class function IsRectVisible(item_size: ImVec2): bool; inline;
+ class function IsRectVisible(const item_size: ImVec2): bool; inline;
+ class function IsRectVisible(const rect_min, rect_max: PImVec2): bool; inline;
+
class function IsPosHoveringAnyWindow(pos: ImVec2): bool; inline;
class function GetTime: single; inline;
class function GetFrameCount: longint; inline;
@@ -657,9 +748,9 @@ public
class procedure ColorConvertHSVtoRGB(h: single; s: single; v: single; out_r: Psingle; out_g: Psingle; out_b: Psingle); inline;
class function GetKeyIndex(key: ImGuiKey): longint; inline;
- class function IsKeyDown(key_index: longint): bool; inline;
- class function IsKeyPressed(key_index: longint; _repeat: bool): bool; inline;
- class function IsKeyReleased(key_index: longint): bool; inline;
+ class function IsKeyDown(user_key_index: longint): bool; inline;
+ class function IsKeyPressed(user_key_index: longint; _repeat: bool): bool; inline;
+ class function IsKeyReleased(user_key_index: longint): bool; inline;
class function IsMouseDown(_button: longint): bool; inline;
class function IsMouseClicked(_button: longint; _repeat: bool): bool; inline;
class function IsMouseDoubleClicked(_button: longint): bool; inline;
@@ -969,7 +1060,7 @@ procedure igValueInt(prefix: PChar; v: longint); cdecl; external ImguiLibName;
procedure igValueUInt(prefix: PChar; v: dword); cdecl; external ImguiLibName;
procedure igValueFloat(prefix: PChar; v: single; float_format: PChar); cdecl; external ImguiLibName;
procedure igValueColor(prefix: PChar; v: ImVec4); cdecl; external ImguiLibName;
-procedure igValueColor2(prefix: PChar; v: dword); cdecl; external ImguiLibName;
+procedure igValueColor2(prefix: PChar; v: ImU32); cdecl; external ImguiLibName;
{ Tooltip }
procedure igSetTooltip(fmt: PChar; args: array of const); cdecl; external ImguiLibName;
@@ -1029,7 +1120,9 @@ function igIsWindowFocused: bool; cdecl; external ImguiLibName;
function igIsRootWindowFocused: bool; cdecl; external ImguiLibName;
function igIsRootWindowOrAnyChildFocused: bool; cdecl; external ImguiLibName;
function igIsRootWindowOrAnyChildHovered: bool; cdecl; external ImguiLibName;
-function igIsRectVisible(item_size: ImVec2): bool; cdecl; external ImguiLibName;
+function igIsRectVisible(const item_size: ImVec2): bool; cdecl; external ImguiLibName;
+function igIsRectVisible2(const rect_min, rect_max: PImVec2): bool; cdecl; external ImguiLibName;
+
function igIsPosHoveringAnyWindow(pos: ImVec2): bool; cdecl; external ImguiLibName;
function igGetTime: single; cdecl; external ImguiLibName;
function igGetFrameCount: longint; cdecl; external ImguiLibName;
@@ -1047,9 +1140,9 @@ procedure igColorConvertRGBtoHSV(r: single; g: single; b: single; out_h: Psingle
procedure igColorConvertHSVtoRGB(h: single; s: single; v: single; out_r: Psingle; out_g: Psingle; out_b: Psingle); cdecl; external ImguiLibName;
function igGetKeyIndex(key: ImGuiKey): longint; cdecl; external ImguiLibName;
-function igIsKeyDown(key_index: longint): bool; cdecl; external ImguiLibName;
-function igIsKeyPressed(key_index: longint; _repeat: bool): bool; cdecl; external ImguiLibName;
-function igIsKeyReleased(key_index: longint): bool; cdecl; external ImguiLibName;
+function igIsKeyDown(user_key_index: longint): bool; cdecl; external ImguiLibName;
+function igIsKeyPressed(user_key_index: longint; _repeat: bool): bool; cdecl; external ImguiLibName;
+function igIsKeyReleased(user_key_index: longint): bool; cdecl; external ImguiLibName;
function igIsMouseDown(button: longint): bool; cdecl; external ImguiLibName;
function igIsMouseClicked(button: longint; _repeat: bool): bool; cdecl; external ImguiLibName;
function igIsMouseDoubleClicked(button: longint): bool; cdecl; external ImguiLibName;
@@ -1075,23 +1168,34 @@ procedure igSetClipboardText(Text: PChar); cdecl; external ImguiLibName;
{ Internal state access - if you want to share ImGui state between modules (e.g. DLL) or allocate it yourself }
function igGetVersion(): PChar; cdecl; external ImguiLibName;
+function igGetCurrentContext(): PImGuiContext; cdecl; external ImguiLibName;
+procedure igSetCurrentContext(ctx: PImGuiContext); cdecl; external ImguiLibName;
procedure ImFontConfig_DefaultConstructor(config: PImFontConfig); cdecl; external ImguiLibName;
procedure ImFontAtlas_GetTexDataAsRGBA32(atlas: PImFontAtlas; out_pixels: PPByte; out_width, out_height: PInteger; out_bytes_per_pixel: PInteger = nil); cdecl; external ImguiLibName;
procedure ImFontAtlas_GetTexDataAsAlpha8(atlas: PImFontAtlas; out_pixels: PPByte; out_width, out_height: PInteger; out_bytes_per_pixel: PInteger = nil); cdecl; external ImguiLibName;
-procedure ImFontAtlas_SetTexID(atlas: PImFontAtlas; tex: Pointer); cdecl; external ImguiLibName;
+procedure ImFontAtlas_SetTexID(atlas: PImFontAtlas; id: ImTextureID); cdecl; external ImguiLibName;
+
function ImFontAtlas_AddFontDefault(atlas: PImFontAtlas; config: PImFontConfig = nil): PImFont; cdecl; external ImguiLibName;
+function ImFontAtlas_AddFont(atlas: PImFontAtlas; const font_cfg: PImFontConfig): PImFont; cdecl; external ImguiLibName;
+function ImFontAtlas_AddFontFromFileTTF(atlas: PImFontAtlas; const filename: PChar; size_pixels: single; const font_cfg: PImFontConfig; const glyph_ranges: PImWchar): PImFont; cdecl; external ImguiLibName;
{todo
-function ImFontAtlas_AddFont(struct ImFontAtlas* atlas, CONST struct ImFontConfig* font_cfg): PImFont;
-function ImFontAtlas_AddFontFromFileTTF(struct ImFontAtlas* atlas, CONST char* filename, float size_pixels, CONST struct ImFontConfig* font_cfg, CONST ImWchar* glyph_ranges): PImFont;
function ImFontAtlas_AddFontFromMemoryTTF(struct ImFontAtlas* atlas, void* ttf_data, int ttf_size, float size_pixels, CONST struct ImFontConfig* font_cfg, CONST ImWchar* glyph_ranges): PImFont;
function ImFontAtlas_AddFontFromMemoryCompressedTTF(struct ImFontAtlas* atlas, CONST void* compressed_ttf_data, int compressed_ttf_size, float size_pixels, CONST struct ImFontConfig* font_cfg, CONST ImWchar* glyph_ranges): PImFont;
function ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(struct ImFontAtlas* atlas, CONST char* compressed_ttf_data_base85, float size_pixels, CONST struct ImFontConfig* font_cfg, CONST ImWchar* glyph_ranges): PImFont;
}
+
procedure ImFontAtlas_ClearTexData(atlas: PImFontAtlas); cdecl; external ImguiLibName;
procedure ImFontAtlas_Clear(atlas: PImFontAtlas); cdecl; external ImguiLibName;
+function ImFontAtlas_GetGlyphRangesDefault(atlas: PImFontAtlas): PImWchar; cdecl; external ImguiLibName;
+function ImFontAtlas_GetGlyphRangesKorean(atlas: PImFontAtlas): PImWchar; cdecl; external ImguiLibName;
+function ImFontAtlas_GetGlyphRangesJapanese(atlas: PImFontAtlas): PImWchar; cdecl; external ImguiLibName;
+function ImFontAtlas_GetGlyphRangesChinese(atlas: PImFontAtlas): PImWchar; cdecl; external ImguiLibName;
+function ImFontAtlas_GetGlyphRangesCyrillic(atlas: PImFontAtlas): PImWchar; cdecl; external ImguiLibName;
+function ImFontAtlas_GetGlyphRangesThai(atlas: PImFontAtlas): PImWchar; cdecl; external ImguiLibName;
+
procedure ImGuiIO_AddInputCharacter(c: word); cdecl; external ImguiLibName;
procedure ImGuiIO_AddInputCharactersUTF8(utf8_chars: pchar); cdecl; external ImguiLibName;
procedure ImGuiIO_ClearInputCharacters(); cdecl; external ImguiLibName;
@@ -1117,8 +1221,8 @@ procedure ImDrawList_PopTextureID(list: PImDrawList); cdecl; external ImguiLibNa
{ Primitives }
procedure ImDrawList_AddLine(list: PImDrawList; a: ImVec2; b: ImVec2; col: ImU32; thickness: single); cdecl; external ImguiLibName;
-procedure ImDrawList_AddRect(list: PImDrawList; a: ImVec2; b: ImVec2; col: ImU32; rounding: single; rounding_corners: longint; thickness: single); cdecl; external ImguiLibName;
-procedure ImDrawList_AddRectFilled(list: PImDrawList; a: ImVec2; b: ImVec2; col: ImU32; rounding: single; rounding_corners: longint); cdecl; external ImguiLibName;
+procedure ImDrawList_AddRect(list: PImDrawList; a: ImVec2; b: ImVec2; col: ImU32; rounding: single; rounding_corners_flags: longint; thickness: single); cdecl; external ImguiLibName;
+procedure ImDrawList_AddRectFilled(list: PImDrawList; a: ImVec2; b: ImVec2; col: ImU32; rounding: single; rounding_corners_flags: longint); cdecl; external ImguiLibName;
procedure ImDrawList_AddRectFilledMultiColor(list: PImDrawList; a: ImVec2; b: ImVec2; col_upr_left: ImU32; col_upr_right: ImU32;
col_bot_right: ImU32; col_bot_left: ImU32); cdecl; external ImguiLibName;
procedure ImDrawList_AddQuad(list: PImDrawList; a: ImVec2; b: ImVec2; c: ImVec2; d: ImVec2; col: ImU32; thickness: single); cdecl; external ImguiLibName;
@@ -1130,7 +1234,7 @@ procedure ImDrawList_AddCircleFilled(list: PImDrawList; centre: ImVec2; radius:
procedure ImDrawList_AddText(list: PImDrawList; pos: ImVec2; col: ImU32; text_begin: PChar; text_end: PChar); cdecl; external ImguiLibName;
procedure ImDrawList_AddTextExt(list: PImDrawList; font: PImFont; font_size: single; pos: ImVec2; col: ImU32; text_begin: PChar;
text_end: PChar; wrap_width: single; cpu_fine_clip_rect: PImVec4); cdecl; external ImguiLibName;
-procedure ImDrawList_AddImage(list: PImDrawList; user_texture_id: ImTextureID; a: ImVec2; b: ImVec2; uv0: ImVec2; uv1: ImVec2; col: ImU32); cdecl; external ImguiLibName;
+procedure ImDrawList_AddImage(list: PImDrawList; user_texture_id: ImTextureID; a: ImVec2; b: ImVec2; uva: ImVec2; uvb: ImVec2; col: ImU32); cdecl; external ImguiLibName;
procedure ImDrawList_AddPolyline(list: PImDrawList; points: PImVec2; num_points: longint; col: ImU32; closed: bool; thickness: single;
anti_aliased: bool); cdecl; external ImguiLibName;
procedure ImDrawList_AddConvexPolyFilled(list: PImDrawList; points: PImVec2; num_points: longint; col: ImU32; anti_aliased: bool); cdecl; external ImguiLibName;
@@ -1141,13 +1245,13 @@ procedure ImDrawList_AddBezierCurve(list: PImDrawList; pos0: ImVec2; cp0: ImVec2
procedure ImDrawList_PathClear(list: PImDrawList); cdecl; external ImguiLibName;
procedure ImDrawList_PathLineTo(list: PImDrawList; pos: ImVec2); cdecl; external ImguiLibName;
procedure ImDrawList_PathLineToMergeDuplicate(list: PImDrawList; pos: ImVec2); cdecl; external ImguiLibName;
-procedure ImDrawList_PathFill(list: PImDrawList; col: ImU32); cdecl; external ImguiLibName;
+procedure ImDrawList_PathFillConvex(list: PImDrawList; col: ImU32); cdecl; external ImguiLibName;
procedure ImDrawList_PathStroke(list: PImDrawList; col: ImU32; closed: bool; thickness: single); cdecl; external ImguiLibName;
procedure ImDrawList_PathArcTo(list: PImDrawList; centre: ImVec2; radius: single; a_min: single; a_max: single; num_segments: longint); cdecl; external ImguiLibName;
{ Use precomputed angles for a 12 steps circle }
procedure ImDrawList_PathArcToFast(list: PImDrawList; centre: ImVec2; radius: single; a_min_of_12: longint; a_max_of_12: longint); cdecl; external ImguiLibName;
procedure ImDrawList_PathBezierCurveTo(list: PImDrawList; p1: ImVec2; p2: ImVec2; p3: ImVec2; num_segments: longint); cdecl; external ImguiLibName;
-procedure ImDrawList_PathRect(list: PImDrawList; rect_min: ImVec2; rect_max: ImVec2; rounding: single; rounding_corners: longint); cdecl; external ImguiLibName;
+procedure ImDrawList_PathRect(list: PImDrawList; rect_min: ImVec2; rect_max: ImVec2; rounding: single; rounding_corners_flags: longint); cdecl; external ImguiLibName;
{ Channels }
procedure ImDrawList_ChannelsSplit(list: PImDrawList; channels_count: longint); cdecl; external ImguiLibName;
@@ -1181,6 +1285,12 @@ begin
result.y := y;
end;
+//Replacement for (void*)(intptr_t) int cast, used for IDs. Generates warnings
+function ImIDPtr(const i: integer): pointer;
+begin
+ result := pointer( IntPtr(i) )
+end;
+
{ ImGui
Keep functions short, they're mostly just wrappers. Inlining begin/end with trivial function body is ok
}
@@ -1296,20 +1406,20 @@ class procedure ImGui.PopFont;
begin igPopFont end;
class procedure ImGui.PushStyleColor(idx: ImGuiCol; col: ImVec4);
begin igPushStyleColor(idx, col) end;
-class procedure ImGui.PopStyleColor(Count: longint);
+class procedure ImGui.PopStyleColor(count: longint);
begin igPopStyleColor(Count) end;
class procedure ImGui.PushStyleVar(idx: ImGuiStyleVar; val: single);
begin igPushStyleVar(idx, val) end;
class procedure ImGui.PushStyleVarVec(idx: ImGuiStyleVar; val: ImVec2);
begin igPushStyleVarVec(idx, val) end;
-class procedure ImGui.PopStyleVar(Count: longint);
- begin igPopStyleVar(Count) end;
+class procedure ImGui.PopStyleVar(count: longint);
+ begin igPopStyleVar(count) end;
class function ImGui.GetFont(): PImFont;
begin result := igGetFont end;
class function ImGui.GetFontSize: single;
begin result := igGetFontSize end;
-class procedure ImGui.GetFontTexUvWhitePixel(pOut: PImVec2);
- begin igGetFontTexUvWhitePixel(pOut) end;
+class function ImGui.GetFontTexUvWhitePixel():ImVec2;
+ begin igGetFontTexUvWhitePixel(@result); end;
class function ImGui.GetColorU32(idx: ImGuiCol; alpha_mul: single): ImU32;
begin result := igGetColorU32(idx, alpha_mul) end;
class function ImGui.GetColorU32Vec(col: PImVec4): ImU32;
@@ -1419,9 +1529,9 @@ class function ImGui.GetIdPtr(ptr_id: pointer): ImGuiID;
{ Widgets }
class procedure ImGui.Text(const text_: string);
- begin TextUnformatted(text_) end;
+ begin igText(Pchar(text_)) end;
class procedure ImGui.Text(const Fmt: string; const Args: array of const);
- begin TextUnformatted(Format(fmt, args)) end;
+ begin Text(Format(fmt, args)) end;
class procedure ImGui.TextColored(col: ImVec4; fmt: PChar; args: array of const);
begin TextColored(col, Format(fmt, args)) end;
class procedure ImGui.TextColored(col: ImVec4; const fmt: string);
@@ -1564,25 +1674,26 @@ class function ImGui.InputInt4(_label: PChar; v: TLongInt4; extra_flags: ImGuiIn
begin result := igInputInt4(_label, v, extra_flags) end;
{ Widgets: Trees }
-class function ImGui.TreeNode(_label: PChar): bool;
- begin result := igTreeNode(_label) end;
-class function ImGui.TreeNodeStr(str_id: PChar; fmt: string; args: array of const): bool;
- begin result := TreeNodeStr(str_id, Format(fmt, args)) end;
-class function ImGui.TreeNodeStr(str_id: PChar; fmt: string): bool;
- begin result := igTreeNodeStr(str_id, pchar(fmt)) end;
-class function ImGui.TreeNodePtr(ptr_id: pointer; fmt: string; args: array of const): bool;
- begin result := TreeNodePtr(ptr_id, Format(fmt, args)) end;
-class function ImGui.TreeNodePtr(ptr_id: pointer; fmt: string): bool;
+class function ImGui.TreeNode(_label: string): bool;
+ begin result := igTreeNode(pchar(_label)) end;
+class function ImGui.TreeNode(str_id: string; fmt: string; args: array of const): bool;
+ begin result := TreeNode(str_id, Format(fmt, args)) end;
+class function ImGui.TreeNode(str_id: string; fmt: string): bool;
+ begin result := igTreeNodeStr(pchar(str_id), pchar(fmt)) end;
+class function ImGui.TreeNode(ptr_id: pointer; fmt: string; args: array of const): bool;
+ begin result := TreeNode(ptr_id, Format(fmt, args)) end;
+class function ImGui.TreeNode(ptr_id: pointer; fmt: string): bool;
begin result := igTreeNodePtr(ptr_id, pchar(fmt)) end;
+
class function ImGui.TreeNodeEx(_label: PChar; flags: ImGuiTreeNodeFlags): bool;
begin result := igTreeNodeEx(_label, flags) end;
-class function ImGui.TreeNodeExStr(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool;
- begin result := TreeNodeExStr(str_id, flags, Format(fmt, args)) end;
-class function ImGui.TreeNodeExStr(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string): bool;
+class function ImGui.TreeNodeEx(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool;
+ begin result := TreeNodeEx(str_id, flags, Format(fmt, args)) end;
+class function ImGui.TreeNodeEx(str_id: PChar; flags: ImGuiTreeNodeFlags; fmt: string): bool;
begin result := igTreeNodeExStr(str_id, flags, pchar(fmt)) end;
-class function ImGui.TreeNodeExPtr(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool;
- begin result := TreeNodeExPtr(ptr_id, flags, Format(fmt, args)) end;
-class function ImGui.TreeNodeExPtr(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string): bool;
+class function ImGui.TreeNodeEx(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string; args: array of const): bool;
+ begin result := TreeNodeEx(ptr_id, flags, Format(fmt, args)) end;
+class function ImGui.TreeNodeEx(ptr_id: pointer; flags: ImGuiTreeNodeFlags; fmt: string): bool;
begin result := igTreeNodeExPtr(ptr_id, flags, pchar(fmt)) end;
class procedure ImGui.TreePushStr(str_id: PChar);
begin igTreePushStr(str_id) end;
@@ -1598,7 +1709,7 @@ class procedure ImGui.SetNextTreeNodeOpen(opened: bool; cond: ImGuiSetCond = 0);
begin igSetNextTreeNodeOpen(opened, cond) end;
class function ImGui.CollapsingHeader(_label: PChar; flags: ImGuiTreeNodeFlags): bool;
begin result := igCollapsingHeader(_label, flags) end;
-class function ImGui.CollapsingHeaderEx(_label: PChar; p_open: Pbool; flags: ImGuiTreeNodeFlags): bool;
+class function ImGui.CollapsingHeader(_label: PChar; p_open: Pbool; flags: ImGuiTreeNodeFlags): bool;
begin result := igCollapsingHeaderEx(_label, p_open, flags) end;
{ Widgets: Selectable / Lists }
@@ -1628,7 +1739,7 @@ class procedure ImGui.ValueFloat(prefix: PChar; v: single; float_format: PChar);
begin igValueFloat(prefix, v, float_format) end;
class procedure ImGui.ValueColor(prefix: PChar; v: ImVec4);
begin igValueColor(prefix, v) end;
-class procedure ImGui.ValueColor2(prefix: PChar; v: dword);
+class procedure ImGui.ValueColor(prefix: PChar; v: ImU32);
begin igValueColor2(prefix, v) end;
{ Tooltip }
@@ -1656,7 +1767,7 @@ class procedure ImGui.EndMenu;
begin igEndMenu end;
class function ImGui.MenuItem(_label: PChar; shortcut: PChar; selected: bool; Enabled: bool): bool;
begin result := igMenuItem(_label, shortcut, selected, Enabled) end;
-class function ImGui.MenuItemPtr(_label: PChar; shortcut: PChar; p_selected: Pbool; Enabled: bool): bool;
+class function ImGui.MenuItem(_label: PChar; shortcut: PChar; p_selected: Pbool; Enabled: bool): bool;
begin result := igMenuItemPtr(_label, shortcut, p_selected, Enabled) end;
{ Popup }
@@ -1732,8 +1843,10 @@ class function ImGui.IsRootWindowOrAnyChildFocused: bool;
begin result := igIsRootWindowOrAnyChildFocused end;
class function ImGui.IsRootWindowOrAnyChildHovered: bool;
begin result := igIsRootWindowOrAnyChildHovered end;
-class function ImGui.IsRectVisible(item_size: ImVec2): bool;
+class function ImGui.IsRectVisible(const item_size: ImVec2): bool;
begin result := igIsRectVisible(item_size) end;
+class function ImGui.IsRectVisible(const rect_min, rect_max: PImVec2): bool;
+ begin result := igIsRectVisible2(rect_min, rect_max) end;
class function ImGui.IsPosHoveringAnyWindow(pos: ImVec2): bool;
begin result := igIsPosHoveringAnyWindow(pos) end;
class function ImGui.GetTime: single;
@@ -1766,12 +1879,12 @@ class procedure ImGui.ColorConvertHSVtoRGB(h: single; s: single; v: single; out_
class function ImGui.GetKeyIndex(key: ImGuiKey): longint;
begin result := igGetKeyIndex(key) end;
-class function ImGui.IsKeyDown(key_index: longint): bool;
- begin result := igIsKeyDown(key_index) end;
-class function ImGui.IsKeyPressed(key_index: longint; _repeat: bool): bool;
- begin result := igIsKeyPressed(key_index, _repeat) end;
-class function ImGui.IsKeyReleased(key_index: longint): bool;
- begin result := igIsKeyReleased(key_index) end;
+class function ImGui.IsKeyDown(user_key_index: longint): bool;
+ begin result := igIsKeyDown(user_key_index) end;
+class function ImGui.IsKeyPressed(user_key_index: longint; _repeat: bool): bool;
+ begin result := igIsKeyPressed(user_key_index, _repeat) end;
+class function ImGui.IsKeyReleased(user_key_index: longint): bool;
+ begin result := igIsKeyReleased(user_key_index) end;
class function ImGui.IsMouseDown(_button: longint): bool;
begin result := igIsMouseDown(_button) end;
class function ImGui.IsMouseClicked(_button: longint; _repeat: bool): bool;
diff --git a/model_viewer/model_viewer.lpi b/model_viewer/model_viewer.lpi
index a315cc1..ebe7996 100644
--- a/model_viewer/model_viewer.lpi
+++ b/model_viewer/model_viewer.lpi
@@ -58,6 +58,7 @@
+
diff --git a/model_viewer/model_viewer.pas b/model_viewer/model_viewer.pas
index b80beef..f8e91b1 100644
--- a/model_viewer/model_viewer.pas
+++ b/model_viewer/model_viewer.pas
@@ -418,7 +418,7 @@ begin
Imgui.Checkbox('textures', @view.opts.textures);
Imgui.Checkbox('vertex colors', @view.opts.vcolors);
if g_model <> nil then
- if Imgui.Button('Export to obj', ImVec2Init(0,0)) then
+ if Imgui.Button('Export to obj') then
g_model.ExportObj('rs_exported.obj');
Imgui.End_;
diff --git a/model_viewer/sdl2/LICENSE b/model_viewer/sdl2/LICENSE
deleted file mode 100644
index 65c5ca8..0000000
--- a/model_viewer/sdl2/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/model_viewer/sdl2/sdl2-LICENSE b/model_viewer/sdl2/sdl2-LICENSE
new file mode 100644
index 0000000..14e2f77
--- /dev/null
+++ b/model_viewer/sdl2/sdl2-LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/model_viewer/sdl2/sdl2.pas b/model_viewer/sdl2/sdl2.pas
index b404f75..818730c 100644
--- a/model_viewer/sdl2/sdl2.pas
+++ b/model_viewer/sdl2/sdl2.pas
@@ -1,5 +1,6 @@
unit SDL2;
-
+//sdl2 unit build, 4.6.2017
+//source: https://github.com/ev1313/Pascal-SDL-2-Headers, 11.5.2017, #3820ac1c55c563cfc4a2bcb8eadb8addc7806abe
{
Simple DirectMedia Layer
Copyright (C) 1997-2013 Sam Lantinga
@@ -585,6 +586,7 @@ unit SDL2;
{$IFDEF FPC}
{$H+}
{$PACKRECORDS C} // Added for record
+ {$PACKENUM DEFAULT} // Added for c-like enumerators
{$MACRO ON} // Added For OpenGL
{$DEFINE Delphi}
{$DEFINE UseAT}
@@ -663,18 +665,14 @@ interface
Windows;
{$ENDIF}
- {$IFDEF LINUX}
+ {$IFDEF UNIX}
uses
+ {$IFDEF DARWIN}
+ CocoaAll,
+ {$ENDIF}
X,
XLib;
{$ENDIF}
-
- {$IFDEF DARWIN}
- uses
- X,
- XLib,
- CocoaAll;
- {$ENDIF}
const
@@ -2030,15 +2028,15 @@ function SDL_PointInRect(const p: PSDL_Point; const r: PSDL_Rect): Boolean; Inli
* Returns true if the rectangle has no area.
*}
- //changed from variant(b�����h!) to TSDL_Rect
+ //changed from variant(b�����h!) to TSDL_Rect
//maybe PSDL_Rect?
-function SDL_RectEmpty(X: TSDL_Rect): Boolean;
+function SDL_RectEmpty(const r: PSDL_Rect): Boolean; inline;
{**
* Returns true if the two rectangles are equal.
*}
-function SDL_RectEquals(A: TSDL_Rect; B: TSDL_Rect): Boolean;
+function SDL_RectEquals(const a, b: PSDL_Rect): Boolean; inline;
{**
* Determine whether two rectangles intersect.
@@ -2046,7 +2044,7 @@ function SDL_RectEquals(A: TSDL_Rect; B: TSDL_Rect): Boolean;
* SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*}
-function SDL_HasIntersection(const A: PSDL_Rect; const B: PSDL_Rect): TSDL_Bool cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_HasIntersection' {$ENDIF} {$ENDIF};
+function SDL_HasIntersection(const a, b: PSDL_Rect): TSDL_Bool cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_HasIntersection' {$ENDIF} {$ENDIF};
{**
* Calculate the intersection of two rectangles.
@@ -2054,13 +2052,13 @@ function SDL_HasIntersection(const A: PSDL_Rect; const B: PSDL_Rect): TSDL_Bool
* SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*}
-function SDL_IntersectRect(const A: PSDL_Rect; const B: PSDL_Rect; result: PSDL_Rect): TSDL_Bool cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_IntersectRect' {$ENDIF} {$ENDIF};
+function SDL_IntersectRect(const A, B: PSDL_Rect; result: PSDL_Rect): TSDL_Bool cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_IntersectRect' {$ENDIF} {$ENDIF};
{**
* Calculate the union of two rectangles.
*}
-procedure SDL_UnionRect(const A: PSDL_Rect; const B: PSDL_Rect; result: PSDL_Rect) cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_UnionRect' {$ENDIF} {$ENDIF};
+procedure SDL_UnionRect(const A, B: PSDL_Rect; result: PSDL_Rect) cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_UnionRect' {$ENDIF} {$ENDIF};
{**
* Calculate a minimal rectangle enclosing a set of points
@@ -2076,7 +2074,7 @@ function SDL_EnclosePoints(const points: PSDL_Point; count: SInt32; const clip:
* SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*}
-function SDL_IntersectRectAndLine(const rect: PSDL_Rect; X1: PInt; Y1: PInt; X2: PInt; Y2: PInt): TSDL_Bool cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_IntersectRectAndLine' {$ENDIF} {$ENDIF};
+function SDL_IntersectRectAndLine(const rect: PSDL_Rect; X1, Y1, X2, Y2: PInt): TSDL_Bool cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_IntersectRectAndLine' {$ENDIF} {$ENDIF};
{ included sdlrwops.inc}
//from "sdl_rwops"
@@ -4583,8 +4581,9 @@ function SDL_GL_GetCurrentContext: TSDL_GLContext cdecl; external SDL_LibName {$
* SDL_GetWindowSize()
* SDL_CreateWindow()
*}
-
+
procedure SDL_GL_GetDrawableSize(window: PSDL_Window; w: PInt; h: PInt); cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GL_GetDrawableSize' {$ENDIF} {$ENDIF};
+
{**
* Set the swap interval for the current OpenGL context.
*
@@ -4672,8 +4671,9 @@ procedure SDL_GL_DeleteContext(context: TSDL_GLContext) cdecl; external SDL_LibN
*/
}
+const
-(**
+{/**
* \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
*
* SDL can try to accelerate the SDL screen surface by using streaming
@@ -4687,8 +4687,7 @@ procedure SDL_GL_DeleteContext(context: TSDL_GLContext) cdecl; external SDL_LibN
*
* By default SDL tries to make a best guess for each platform whether
* to use acceleration or not.
- *)
-const
+ */}
SDL_HINT_FRAMEBUFFER_ACCELERATION = 'SDL_FRAMEBUFFER_ACCELERATION';
{/**
@@ -4721,29 +4720,29 @@ SDL_HINT_RENDER_DRIVER = 'SDL_RENDER_DRIVER';
*/}
SDL_HINT_RENDER_OPENGL_SHADERS = 'SDL_RENDER_OPENGL_SHADERS';
- {**
- * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
- *
- * This variable can be set to the following values:
- * "0" - Thread-safety is not enabled (faster)
- * "1" - Thread-safety is enabled
- *
- * By default the Direct3D device is created with thread-safety disabled.
- *}
+{/**
+ * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
+ *
+ * This variable can be set to the following values:
+ * "0" - Thread-safety is not enabled (faster)
+ * "1" - Thread-safety is enabled
+ *
+ * By default the Direct3D device is created with thread-safety disabled.
+ */}
SDL_HINT_RENDER_DIRECT3D_THREADSAFE = 'SDL_RENDER_DIRECT3D_THREADSAFE';
- {**
- * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
- *
- * This variable does not have any effect on the Direct3D 9 based renderer.
- *
- * This variable can be set to the following values:
- * "0" - Disable Debug Layer use
- * "1" - Enable Debug Layer use
- *
- * By default, SDL does not use Direct3D Debug Layer.
- *}
-SDL_HINT_RENDER_DIRECT3D11_DEBUG = 'SDL_HINT_RENDER_DIRECT3D11_DEBUG';
+{/**
+ * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
+ *
+ * This variable does not have any effect on the Direct3D 9 based renderer.
+ *
+ * This variable can be set to the following values:
+ * "0" - Disable Debug Layer use
+ * "1" - Enable Debug Layer use
+ *
+ * By default, SDL does not use Direct3D Debug Layer.
+ */}
+SDL_HINT_RENDER_DIRECT3D11_DEBUG = 'SDL_RENDER_DIRECT3D11_DEBUG';
{/**
* \brief A variable controlling the scaling quality
@@ -4812,6 +4811,42 @@ SDL_HINT_VIDEO_X11_XINERAMA = 'SDL_VIDEO_X11_XINERAMA';
*/}
SDL_HINT_VIDEO_X11_XRANDR = 'SDL_VIDEO_X11_XRANDR';
+{/**
+ * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
+ *
+ * This variable can be set to the following values:
+ * "0" - Disable _NET_WM_PING
+ * "1" - Enable _NET_WM_PING
+ *
+ * By default SDL will use _NET_WM_PING, but for applications that know they
+ * will not always be able to respond to ping requests in a timely manner they can
+ * turn it off to avoid the window manager thinking the app is hung.
+ * The hint is checked in CreateWindow.
+ */}
+SDL_HINT_VIDEO_X11_NET_WM_PING = 'SDL_VIDEO_X11_NET_WM_PING';
+
+{/**
+ * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
+ *
+ * This variable can be set to the following values:
+ * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
+ * "1" - The window frame is interactive when the cursor is hidden
+ *
+ * By default SDL will allow interaction with the window frame when the cursor is hidden
+ */}
+SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN = 'SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN';
+
+{/**
+ * \brief A variable controlling whether the windows message loop is processed by SDL
+ *
+ * This variable can be set to the following values:
+ * "0" - The window message loop is not run
+ * "1" - The window message loop is processed in SDL_PumpEvents()
+ *
+ * By default SDL will process the windows message loop
+ */}
+SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP = 'SDL_WINDOWS_ENABLE_MESSAGELOOP';
+
{/**
* \brief A variable controlling whether grabbing input grabs the keyboard
*
@@ -4834,13 +4869,23 @@ SDL_HINT_GRAB_KEYBOARD = 'SDL_GRAB_KEYBOARD';
*/}
SDL_HINT_MOUSE_RELATIVE_MODE_WARP = 'SDL_MOUSE_RELATIVE_MODE_WARP';
+{/**
+ * \brief Allow mouse click events when clicking to focus an SDL window
+ *
+ * This variable can be set to the following values:
+ * "0" - Ignore mouse clicks that activate a window
+ * "1" - Generate events for mouse clicks that activate a window
+ *
+ * By default SDL will ignore mouse clicks that activate a window
+ */}
+SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH = 'SDL_MOUSE_FOCUS_CLICKTHROUGH';
+
{/**
* \brief Minimize your SDL_Window if it loses key focus when in Fullscreen mode. Defaults to true.
*
*/}
SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS = 'SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS';
-
{/**
* \brief A variable controlling whether the idle timer is disabled on iOS.
*
@@ -4849,6 +4894,9 @@ SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS = 'SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS';
* this is problematic. This functionality can be disabled by setting this
* hint.
*
+ * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
+ * accomplish the same thing on iOS. They should be preferred over this hint.
+ *
* This variable can be set to the following values:
* "0" - Enable idle timer
* "1" - Disable idle timer
@@ -4867,8 +4915,37 @@ SDL_HINT_IDLE_TIMER_DISABLED = 'SDL_IOS_IDLE_TIMER_DISABLED';
SDL_HINT_ORIENTATIONS = 'SDL_IOS_ORIENTATIONS';
{/**
- * \brief A variable controlling whether an Android built-in accelerometer should be
- * listed as a joystick device, rather than listing actual joysticks only.
+ * \brief A variable controlling whether controllers used with the Apple TV
+ * generate UI events.
+ *
+ * When UI events are generated by controller input, the app will be
+ * backgrounded when the Apple TV remote's menu button is pressed, and when the
+ * pause or B buttons on gamepads are pressed.
+ *
+ * More information about properly making use of controllers for the Apple TV
+ * can be found here:
+ * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
+ *
+ * This variable can be set to the following values:
+ * "0" - Controller input does not generate UI events (the default).
+ * "1" - Controller input generates UI events.
+ */}
+SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS = 'SDL_APPLE_TV_CONTROLLER_UI_EVENTS';
+
+{/**
+ * \brief A variable controlling whether the Apple TV remote's joystick axes
+ * will automatically match the rotation of the remote.
+ *
+ * This variable can be set to the following values:
+ * "0" - Remote orientation does not affect joystick axes (the default).
+ * "1" - Joystick axes are based on the orientation of the remote.
+ */}
+SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION = 'SDL_APPLE_TV_REMOTE_ALLOW_ROTATION';
+
+{/**
+ * \brief A variable controlling whether the Android / iOS built-in
+ * accelerometer should be listed as a joystick device, rather than listing
+ * actual joysticks only.
*
* This variable can be set to the following values:
* "0" - List only real joysticks and accept input from them
@@ -4886,15 +4963,13 @@ SDL_HINT_ACCELEROMETER_AS_JOYSTICK = 'SDL_ACCELEROMETER_AS_JOYSTICK';
SDL_HINT_XINPUT_ENABLED = 'SDL_XINPUT_ENABLED';
{**
- * \brief A hint that specifies that SDL should use the old axis and button mapping for XInput devices.
- *
- * The variable can be set to the following values:
- * 0 use the old axis and button mapping for XInput devices
- * 1 do not use old axis and button mapping for XInput devices
- *
- * By default SDL does not use the old axis and button mapping for XInput devices.
+ * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices.
+ *
+ * This hint is for backwards compatibility only and will be removed in SDL 2.1
+ *
+ * The default value is "0". This hint must be set before SDL_Init()
*}
-SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING = 'SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING';
+SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING = 'SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING';
{/**
* \brief A variable that lets you manually hint extra gamecontroller db entries
@@ -4906,7 +4981,6 @@ SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING = 'SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAP
*/}
SDL_HINT_GAMECONTROLLERCONFIG = 'SDL_GAMECONTROLLERCONFIG';
-
{/**
* \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
*
@@ -4920,7 +4994,6 @@ SDL_HINT_GAMECONTROLLERCONFIG = 'SDL_GAMECONTROLLERCONFIG';
*/}
SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS = 'SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS';
-
{/**
* \brief If set to 0 then never set the top most bit on a SDL Window, even if the video mode expects it.
* This is a debugging aid for developers and not expected to be used by end users. The default is "1"
@@ -4931,7 +5004,6 @@ SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS = 'SDL_JOYSTICK_ALLOW_BACKGROUND_EVENT
*/}
SDL_HINT_ALLOW_TOPMOST = 'SDL_ALLOW_TOPMOST';
-
{/**
* \brief A variable that controls the timer resolution, in milliseconds.
*
@@ -4948,29 +5020,30 @@ SDL_HINT_ALLOW_TOPMOST = 'SDL_ALLOW_TOPMOST';
*/}
SDL_HINT_TIMER_RESOLUTION = 'SDL_TIMER_RESOLUTION';
-{**
- * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac)
- *}
+{/**
+ * \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
+ *
+ * Use this hint in case you need to set SDL's threads stack size to other than the default.
+ * This is specially useful if you build SDL against a non glibc libc library (such as musl) which
+ * provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
+ * Support for this hint is currently available only in the pthread, Windows, and PSP backend.
+ */}
+SDL_HINT_THREAD_STACK_SIZE = 'SDL_THREAD_STACK_SIZE';
+
+{/**
+ * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
+ */}
SDL_HINT_VIDEO_HIGHDPI_DISABLED = 'SDL_VIDEO_HIGHDPI_DISABLED';
-{**
- * \brief A hint that specifies if the SDL app should not be forced to become a foreground process on Mac OS X.
- *
- * Possible values:
- * 0 force the SDL app to become a foreground process (default)
- * 1 do not force the SDL app to become a foreground process
- *}
-SDL_HINT_MAC_BACKGROUND_APP = 'SDL_HINT_MAC_BACKGROUND_APP';
-
-{**
+{/**
* \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
- *
+ *
* If present, holding ctrl while left clicking will generate a right click
* event when on Mac.
- *}
+ */}
SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK = 'SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK';
-{**
+{/**
* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
*
* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
@@ -4983,7 +5056,7 @@ SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK = 'SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_
* "d3dcompiler_43.dll" - for XP support.
* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
*
- *}
+ */}
SDL_HINT_VIDEO_WIN_D3DCOMPILER = 'SDL_VIDEO_WIN_D3DCOMPILER';
{/**
@@ -4993,7 +5066,7 @@ SDL_HINT_VIDEO_WIN_D3DCOMPILER = 'SDL_VIDEO_WIN_D3DCOMPILER';
* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly
* created SDL_Window:
*
- * 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
+ * 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
* needed for example when sharing an OpenGL context across multiple windows.
*
* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
@@ -5005,190 +5078,218 @@ SDL_HINT_VIDEO_WIN_D3DCOMPILER = 'SDL_VIDEO_WIN_D3DCOMPILER';
*/}
SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT = 'SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT';
- {**
- * \brief A URL to a WinRT app's privacy policy
- *
- * All network-enabled WinRT apps must make a privacy policy available to its
- * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
- * be available in the Windows Settings charm, as accessed from within the app.
- * SDL provides code to add a URL-based link there, which can point to the app's
- * privacy policy.
- *
- * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
- * before calling any SDL_Init functions. The contents of the hint should
- * be a valid URL. For example, "http://www.example.com".
- *
- * The default value is "", which will prevent SDL from adding a privacy policy
- * link to the Settings charm. This hint should only be set during app init.
- *
- * The label text of an app's "Privacy Policy" link may be customized via another
- * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- * Please note that on Windows Phone, Microsoft does not provide standard UI
- * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
- * will not get used on that platform. Network-enabled phone apps should display
- * their privacy policy through some other, in-app means.
- *}
-SDL_HINT_WINRT_PRIVACY_POLICY_URL = 'SDL_HINT_WINRT_PRIVACY_POLICY_URL';
+{/**
+ * \brief A URL to a WinRT app's privacy policy
+ *
+ * All network-enabled WinRT apps must make a privacy policy available to its
+ * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
+ * be available in the Windows Settings charm, as accessed from within the app.
+ * SDL provides code to add a URL-based link there, which can point to the app's
+ * privacy policy.
+ *
+ * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
+ * before calling any SDL_Init() functions. The contents of the hint should
+ * be a valid URL. For example, "http://www.example.com".
+ *
+ * The default value is "", which will prevent SDL from adding a privacy policy
+ * link to the Settings charm. This hint should only be set during app init.
+ *
+ * The label text of an app's "Privacy Policy" link may be customized via another
+ * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
+ *
+ * Please note that on Windows Phone, Microsoft does not provide standard UI
+ * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
+ * will not get used on that platform. Network-enabled phone apps should display
+ * their privacy policy through some other, in-app means.
+ */}
+SDL_HINT_WINRT_PRIVACY_POLICY_URL = 'SDL_WINRT_PRIVACY_POLICY_URL';
- {**
- * \brief Label text for a WinRT app's privacy policy link
- *
- * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT,
- * Microsoft mandates that this policy be available via the Windows Settings charm.
- * SDL provides code to add a link there, with it's label text being set via the
- * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- * Please note that a privacy policy's contents are not set via this hint. A separate
- * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
- * policy.
- *
- * The contents of this hint should be encoded as a UTF8 string.
- *
- * The default value is "Privacy Policy". This hint should only be set during app
- * initialization, preferably before any calls to SDL_Init.
- *
- * For additional information on linking to a privacy policy, see the documentation for
- * SDL_HINT_WINRT_PRIVACY_POLICY_URL.
- *}
-SDL_HINT_WINRT_PRIVACY_POLICY_LABEL = 'SDL_HINT_WINRT_PRIVACY_POLICY_LABEL';
+{/**
+ * \brief Label text for a WinRT app's privacy policy link
+ *
+ * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT,
+ * Microsoft mandates that this policy be available via the Windows Settings charm.
+ * SDL provides code to add a link there, with its label text being set via the
+ * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
+ *
+ * Please note that a privacy policy's contents are not set via this hint. A separate
+ * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
+ * policy.
+ *
+ * The contents of this hint should be encoded as a UTF8 string.
+ *
+ * The default value is "Privacy Policy". This hint should only be set during app
+ * initialization, preferably before any calls to SDL_Init().
+ *
+ * For additional information on linking to a privacy policy, see the documentation for
+ * SDL_HINT_WINRT_PRIVACY_POLICY_URL.
+ */}
+SDL_HINT_WINRT_PRIVACY_POLICY_LABEL = 'SDL_WINRT_PRIVACY_POLICY_LABEL';
- {**
- * \brief If set to 1, back button press events on Windows Phone 8+ will be marked as handled.
- *
- * TODO, WinRT: document SDL_HINT_WINRT_HANDLE_BACK_BUTTON need and use
- * For now, more details on why this is needed can be found at the
- * beginning of the following web page:
- * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
- *}
-SDL_HINT_WINRT_HANDLE_BACK_BUTTON = 'SDL_HINT_WINRT_HANDLE_BACK_BUTTON';
+{/**
+ * \brief Allows back-button-press events on Windows Phone to be marked as handled
+ *
+ * Windows Phone devices typically feature a Back button. When pressed,
+ * the OS will emit back-button-press events, which apps are expected to
+ * handle in an appropriate manner. If apps do not explicitly mark these
+ * events as 'Handled', then the OS will invoke its default behavior for
+ * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
+ * terminate the app (and attempt to switch to the previous app, or to the
+ * device's home screen).
+ *
+ * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
+ * to mark back-button-press events as Handled, if and when one is sent to
+ * the app.
+ *
+ * Internally, Windows Phone sends back button events as parameters to
+ * special back-button-press callback functions. Apps that need to respond
+ * to back-button-press events are expected to register one or more
+ * callback functions for such, shortly after being launched (during the
+ * app's initialization phase). After the back button is pressed, the OS
+ * will invoke these callbacks. If the app's callback(s) do not explicitly
+ * mark the event as handled by the time they return, or if the app never
+ * registers one of these callback, the OS will consider the event
+ * un-handled, and it will apply its default back button behavior (terminate
+ * the app).
+ *
+ * SDL registers its own back-button-press callback with the Windows Phone
+ * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
+ * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
+ * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
+ * If the hint's value is set to "1", the back button event's Handled
+ * property will get set to 'true'. If the hint's value is set to something
+ * else, or if it is unset, SDL will leave the event's Handled property
+ * alone. (By default, the OS sets this property to 'false', to note.)
+ *
+ * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
+ * back button is pressed, or can set it in direct-response to a back button
+ * being pressed.
+ *
+ * In order to get notified when a back button is pressed, SDL apps should
+ * register a callback function with SDL_AddEventWatch(), and have it listen
+ * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
+ * (Alternatively, SDL_KEYUP events can be listened-for. Listening for
+ * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
+ * set by such a callback, will be applied to the OS' current
+ * back-button-press event.
+ *
+ * More details on back button behavior in Windows Phone apps can be found
+ * at the following page, on Microsoft's developer site:
+ * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
+ */}
+SDL_HINT_WINRT_HANDLE_BACK_BUTTON = 'SDL_WINRT_HANDLE_BACK_BUTTON';
- {**
- * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X.
- *
- * This hint only applies to Mac OS X.
- *
- * The variable can be set to the following values:
- * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
- * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
- * button on their titlebars).
- * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
- * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
- * button on their titlebars.
- *
- * The default value is "1". Spaces are disabled regardless of this hint if
- * the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
- * any windows are created.
- *}
+{/**
+ * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X.
+ *
+ * This hint only applies to Mac OS X.
+ *
+ * The variable can be set to the following values:
+ * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
+ * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
+ * button on their titlebars).
+ * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
+ * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
+ * button on their titlebars).
+ *
+ * The default value is "1". Spaces are disabled regardless of this hint if
+ * the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
+ * any windows are created.
+ */}
SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES = 'SDL_VIDEO_MAC_FULLSCREEN_SPACES';
-{**
- * \brief A hint that specifies the Android APK expansion main file version.
- *
- * The variable should specify the Android APK expansion main file version (a string number like "1", "2" etc.).
- * This hint must be set together with the hint SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- * By default this hint is not set and the APK expansion files are not searched.
- *}
-SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION = 'SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION';
-
-{**
- * \brief A hint that specifies the Android APK expansion patch file version.
- *
- * The variable should specify the Android APK expansion patch file version (a string number like "1", "2" etc.).
- * This hint must be set together with the hint SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- * By default this hint is not set and the APK expansion files are not searched.
- *}
-SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION = 'SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION';
-
-{**
- * \brief A hint that specifies a variable to control whether mouse and touch events are to be treated together or separately.
- *
- * Possible values:
- * 0 mouse events will be handled as touch events and touch will raise fake mouse events
- * 1 mouse events will be handled separately from pure touch events
- *
- * By default mouse events will be handled as touch events and touch will raise fake mouse events.
- * The value of this hint is used at runtime, so it can be changed at any time.
- *}
-SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH = 'SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH';
-
-{**
- * \brief A hint that specifies a value to override the binding element for keyboard inputs for Emscripten builds.
- *
- * Possible values:
- * #window the JavaScript window object (this is the default)
- * #document the JavaScript document object
- * #screen the JavaScript window.screen object
- * #canvas the default WebGL canvas element
- *
- * Any other string without a leading # sign applies to the element on the page with that ID.
- * This hint only applies to the Emscripten platform.
- *}
-SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT = 'SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT';
-
-{**
- * \brief A hint that specifies whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
- *
- * Possible values:
- * 0 SDL_TEXTEDITING events are sent, and it is the application's responsibility
- * to render the text from these events and differentiate it somehow from committed text. (default)
+{/**
+ * \brief When set don't force the SDL app to become a foreground process
*
- * 1 If supported by the IME then SDL_TEXTEDITING events are not sent,
- * and text that is being composed will be rendered in its own UI.
- *}
-SDL_HINT_IME_INTERNAL_EDITING = 'SDL_HINT_IME_INTERNAL_EDITING';
-
-{**
- * \brief A hint that specifies not to catch the SIGINT or SIGTERM signals.
+ * This hint only applies to Mac OS X.
*
- * Possible values:
- * 0 SDL will install a SIGINT and SIGTERM handler, and when it catches a signal, convert it into an SDL_QUIT event (default)
- * 1 SDL will not install a signal handler at all
- *
- * This hint only applies to Unix-like platforms.
- *}
-SDL_HINT_NO_SIGNAL_HANDLERS = 'SDL_HINT_NO_SIGNAL_HANDLERS';
+ */}
+SDL_HINT_MAC_BACKGROUND_APP = 'SDL_MAC_BACKGROUND_APP';
-{**
- * \brief A hint that specifies a variable specifying SDL's threads stack size in bytes or "0" for the backend's default size.
- *
- * Possible values for this hint are:
- * 0 use the backend's default threads stack size (default)
- * X use the provided positive threads stack size
- *
- * Use this hint in case you need to set SDL's threads stack size to other than the default.
- * This is specially useful if you build SDL against a non glibc libc library (such as musl)
- * which provides a relatively small default thread stack size (a few kilobytes versus the default 8 MB glibc uses).
+{/**
+ * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
*
- * Support for this hint is currently available only in the pthread backend.
- *}
-SDL_HINT_THREAD_STACK_SIZE = 'SDL_HINT_THREAD_STACK_SIZE';
+ * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
+ *
+ * If both hints were set then SDL_RWFromFile() will look into expansion files
+ * after a given relative path was not found in the internal storage and assets.
+ *
+ * By default this hint is not set and the APK expansion files are not searched.
+ */}
+SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION = 'SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION';
-{**
- * \brief A hint that specifies whether the windows message loop is processed by SDL.
- *
- * Possible values for this hint:
- * 0 the window message loop is not run
- * 1 the window message loop is processed in SDL_PumpEvents() [default]
- *}
-SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP = 'SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP';
+{/**
+ * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
+ *
+ * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
+ *
+ * If both hints were set then SDL_RWFromFile() will look into expansion files
+ * after a given relative path was not found in the internal storage and assets.
+ *
+ * By default this hint is not set and the APK expansion files are not searched.
+ */}
+SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION = 'SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION';
-{**
- * \brief A hint that specifies that SDL should not to generate SDL_WINDOWEVENT_CLOSE events for Alt+F4 on Microsoft Windows.
- *
- * Possible values for this hint:
- * 0 generate an SDL_WINDOWEVENT_CLOSE event for Alt+F4 (default)
- * 1 do not generate event and only do normal key handling for Alt+F4
- *}
-SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 = 'SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4';
+{/**
+ * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
+ *
+ * The variable can be set to the following values:
+ * "0" - SDL_TEXTEDITING events are sent, and it is the application's
+ * responsibility to render the text from these events and
+ * differentiate it somehow from committed text. (default)
+ * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent,
+ * and text that is being composed will be rendered in its own UI.
+ */}
+SDL_HINT_IME_INTERNAL_EDITING = 'SDL_IME_INTERNAL_EDITING';
-{**
+{/**
+ * \brief A variable to control whether mouse and touch events are to be treated together or separately
+ *
+ * The variable can be set to the following values:
+ * "0" - Mouse events will be handled as touch events, and touch will raise fake mouse
+ * events. This is the behaviour of SDL <= 2.0.3. (default)
+ * "1" - Mouse events will be handled separately from pure touch events.
+ *
+ * The value of this hint is used at runtime, so it can be changed at any time.
+ */}
+SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH = 'SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH';
+
+{/**
+ * \brief override the binding element for keyboard inputs for Emscripten builds
+ *
+ * This hint only applies to the emscripten platform
+ *
+ * The variable can be one of
+ * "#window" - The javascript window object (this is the default)
+ * "#document" - The javascript document object
+ * "#screen" - the javascript window.screen object
+ * "#canvas" - the WebGL canvas element
+ * any other string without a leading # sign applies to the element on the page with that ID.
+ */}
+SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT = 'SDL_EMSCRIPTEN_KEYBOARD_ELEMENT';
+
+{/**
+ * \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
+ *
+ * This hint only applies to Unix-like platforms.
+ *
+ * The variable can be set to the following values:
+ * "0" - SDL will install a SIGINT and SIGTERM handler, and when it
+ * catches a signal, convert it into an SDL_QUIT event.
+ * "1" - SDL will not install a signal handler at all.
+ */}
+SDL_HINT_NO_SIGNAL_HANDLERS = 'SDL_NO_SIGNAL_HANDLERS';
+
+{/**
+ * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
+ *
+ * The variable can be set to the following values:
+ * "0" - SDL will generate a window-close event when it sees Alt+F4.
+ * "1" - SDL will only do normal key handling for Alt+F4.
+ */}
+SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 = 'SDL_WINDOWS_NO_CLOSE_ON_ALT_F4';
+
+{/**
* \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
*
* The bitmap header version 4 is required for proper alpha channel support and
@@ -5204,10 +5305,10 @@ SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 = 'SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4';
* will be in the file, but applications are going to ignore it.
*
* The default value is "0".
- *}
+ */}
SDL_HINT_BMP_SAVE_LEGACY_FORMAT = 'SDL_BMP_SAVE_LEGACY_FORMAT';
-{**
+{/**
* \brief Tell SDL not to name threads on Windows.
*
* The variable can be set to the following values:
@@ -5215,25 +5316,23 @@ SDL_HINT_BMP_SAVE_LEGACY_FORMAT = 'SDL_BMP_SAVE_LEGACY_FORMAT';
* This is the default behavior of SDL <= 2.0.4. (default)
* "1" - SDL will not raise this exception, and threads will be unnamed.
* For .NET languages this is required when running under a debugger.
- *}
+ */}
SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING = 'SDL_WINDOWS_DISABLE_THREAD_NAMING';
-{**
- * \brief A hint that specifies whether the window frame and title bar are interactive when the cursor is hidden.
- *
- * Possible values for this hint:
- * 0 the window frame is not interactive when the cursor is hidden (no move, resize, etc)
- * 1 the window frame is interactive when the cursor is hidden
- *
- * By default SDL will allow interaction with the window frame when the cursor is hidden.
- *}
-SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN = 'SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN';
+
+{/**
+ * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
+ *
+ * Also known as Z-order. The variable can take a negative or positive value.
+ * The default is 10000.
+ */}
+SDL_HINT_RPI_VIDEO_LAYER = 'SDL_RPI_VIDEO_LAYER';
+
+type
{/**
* \brief An enumeration of hint priorities
*/}
-type
- SDL_HintPriority = (SDL_HINT_DEFAULT, SDL_HINT_NORMAL, SDL_HINT_OVERRIDE);
-
+SDL_HintPriority = (SDL_HINT_DEFAULT, SDL_HINT_NORMAL, SDL_HINT_OVERRIDE);
{/**
* \brief Set a hint with a specific priority
@@ -5244,29 +5343,30 @@ type
*
* \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
*/}
-function SDL_SetHintWithPriority( const name: PChar; const value: PChar; priority: SDL_HintPriority) : boolean; cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_SetHintWithPriority' {$ENDIF} {$ENDIF};
+function SDL_SetHintWithPriority(const name: PChar; const value: PChar; priority: SDL_HintPriority) : boolean; cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_SetHintWithPriority' {$ENDIF} {$ENDIF};
-// extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
-// const char *value,
-// SDL_HintPriority priority);
{/**
* \brief Set a hint with normal priority
*
* \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
*/}
- function SDL_SetHint( const name: PChar; const value: PChar) : boolean; cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_SetHint' {$ENDIF} {$ENDIF};
-
- //extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
- // const char *value);
+function SDL_SetHint(const name: PChar; const value: PChar): boolean; cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_SetHint' {$ENDIF} {$ENDIF};
{/**
* \brief Get a hint
*
* \return The string value of a hint variable.
*/}
-function SDL_GetHint( const name: PChar): PChar; cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetHint' {$ENDIF} {$ENDIF};
- //extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
+function SDL_GetHint(const name: PChar): PChar; cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetHint' {$ENDIF} {$ENDIF};
+{/**
+ * \brief Get a hint
+ *
+ * \return The boolean value of a hint variable.
+ */}
+function SDL_GetHintBoolean(const name: PChar; default_value: boolean): boolean; cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetHintBoolean' {$ENDIF} {$ENDIF};
+
+type
{/**
* \brief Add a function to watch a particular hint
@@ -5275,13 +5375,9 @@ function SDL_GetHint( const name: PChar): PChar; cdecl; external SDL_LibName {$I
* \param callback The function to call when the hint value changes
* \param userdata A pointer to pass to the callback function
*/}
-type
TSDL_HintCallback = procedure(userdata: Pointer; const name: PChar; const oldValue: PChar; const newValue: PChar);
+
procedure SDL_AddHintCallback(const name: PChar; callback: TSDL_HintCallback; userdata: Pointer); cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_AddHintCallback' {$ENDIF} {$ENDIF};
- //typedef void (*SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
-//extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
-// SDL_HintCallback callback,
-// void *userdata);
{/**
* \brief Remove a function watching a particular hint
@@ -5291,19 +5387,14 @@ procedure SDL_AddHintCallback(const name: PChar; callback: TSDL_HintCallback; us
* \param userdata A pointer being passed to the callback function
*/}
procedure SDL_DelHintCallback(const name: PChar; callback: TSDL_HintCallback; userdata: Pointer); cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_DelHintCallback' {$ENDIF} {$ENDIF};
-//extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
-// SDL_HintCallback callback,
-// void *userdata);
{/**
* \brief Clear all hints
*
* This function is called during SDL_Quit() to free stored hints.
*/}
-//extern DECLSPEC void SDLCALL SDL_ClearHints(void);
procedure SDL_ClearHints(); cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_ClearHints' {$ENDIF} {$ENDIF};
-
{ included sdlloadso.inc}
//from sdl_loadso.h
@@ -6420,11 +6511,11 @@ const
SDL_SCANCODE_INTERNATIONAL7 = 141;
SDL_SCANCODE_INTERNATIONAL8 = 142;
SDL_SCANCODE_INTERNATIONAL9 = 143;
- SDL_SCANCODE_LANG1 = 144; {**< Hangul/English toggle *}
+ SDL_SCANCODE_LANG1 = 144; {**< Hangul{English toggle *}
SDL_SCANCODE_LANG2 = 145; {**< Hanja conversion *}
SDL_SCANCODE_LANG3 = 146; {**< Katakana *}
SDL_SCANCODE_LANG4 = 147; {**< Hiragana *}
- SDL_SCANCODE_LANG5 = 148; {**< Zenkaku/Hankaku *}
+ SDL_SCANCODE_LANG5 = 148; {**< Zenkaku{Hankaku *}
SDL_SCANCODE_LANG6 = 149; {**< reserved *}
SDL_SCANCODE_LANG7 = 150; {**< reserved *}
SDL_SCANCODE_LANG8 = 151; {**< reserved *}
@@ -6540,7 +6631,7 @@ const
SDL_SCANCODE_BRIGHTNESSDOWN = 275;
SDL_SCANCODE_BRIGHTNESSUP = 276;
- SDL_SCANCODE_DISPLAYSWITCH = 277; {**< display mirroring/dual display
+ SDL_SCANCODE_DISPLAYSWITCH = 277; {**< display mirroring{dual display
switch; video mode switch *}
SDL_SCANCODE_KBDILLUMTOGGLE = 278;
SDL_SCANCODE_KBDILLUMDOWN = 279;
@@ -7256,6 +7347,12 @@ type
*}
function SDL_GetCursor: PSDL_Cursor cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetCursor' {$ENDIF}{$ENDIF};
+
+ {**
+ * Return the default cursor.
+ *}
+
+ function SDL_GetDefaultCursor: PSDL_Cursor cdecl; external SDL_LibName {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GetDefaultCursor' {$ENDIF}{$ENDIF};
{**
* Frees a cursor created with SDL_CreateCursor().
@@ -9018,6 +9115,15 @@ function SDL_LoadDollarTemplates(touchId: TSDL_TouchID; src: PSDL_RWops): SInt32
{$DEFINE SDL_VIDEO_DRIVER_COCOA}
{$ENDIF}
+{$IFDEF ANDROID}
+ {$DEFINE SDL_VIDEO_DRIVER_ANDROID}
+{$ENDIF}
+
+{$IFDEF VIVANTE}
+ {$DEFINE SDL_VIDEO_DRIVER_VIVANTE}
+{$ENDIF}
+
+
{**
* These are the various supported windowing subsystems
*}
@@ -9042,7 +9148,7 @@ Type
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
__SYSWM_WINDOWS = record
hwnd: HWND; {**< The window for the message }
- msg: uInt; {**< The type of message *}
+ msg: uInt; {**< The type of message *}
wParam: WPARAM; {**< WORD message parameter *}
lParam: LPARAM; {**< WORD message parameter *}
end;
@@ -9060,11 +9166,19 @@ Type
{$IFDEF SDL_VIDEO_DRIVER_COCOA}
__SYSWM_COCOA = record
(* No Cocoa window events yet *)
+ dummy: integer;
end;
{$ENDIF}
{$IFDEF SDL_VIDEO_DRIVER_UIKIT}
__SYSWM_UIKIT = record
(* No UIKit window events yet *)
+ dummy: integer;
+ end;
+{$ENDIF}
+{$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
+ __SYSWM_VIVANTE = record
+ (* No Vivante window events yet *)
+ dummy: integer;
end;
{$ENDIF}
@@ -9074,24 +9188,23 @@ Type
PSDL_SysWMmsg = ^TSDL_SysWMmsg;
TSDL_SysWMmsg = record
version: TSDL_version;
- Case subsystem: TSDL_SYSWM_TYPE of
- (* Cannot have empty record case *)
- SDL_SYSWM_UNKNOWN: (dummy: sInt32);
- {$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
- SDL_SYSWM_WINDOWS: (win: __SYSWM_WINDOWS);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_X11}
- SDL_SYSWM_X11: (x11: __SYSWM_X11);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
- SDL_SYSWM_DIRECTFB: (dfb: __SYSWM_DIRECTFB);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_COCOA}
- SDL_SYSWM_COCOA: (cocoa: __SYSWM_COCOA);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_UIKIT}
- SDL_SYSWM_UIKIT: (uikit: __SYSWM_UIKIT);
- {$ENDIF}
+ subsystem: TSDL_SYSWM_TYPE;
+ {$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
+ win: __SYSWM_WINDOWS;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_X11}
+ x11: __SYSWM_X11;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
+ dfb: __SYSWM_DIRECTFB;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_COCOA}
+ cocoa: __SYSWM_COCOA;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_UIKIT}
+ uikit: __SYSWM_UIKIT;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
+ vivante: __SYSWM_VIVANTE;
+ {$ELSE}
+ (* Cannot have empty record case *)
+ dummy: integer;
+ {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF}
end;
/// Once again, sdl_syswm.h uses anonymous structs, declared right in SDL_SysWMinfo.
@@ -9099,6 +9212,7 @@ Type
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
__WMINFO_WINDOWS = record
window: HWND; {**< The window handle *}
+ hdc: HDC; {**< The window device context *}
end;
{$ENDIF}
{$IFDEF SDL_VIDEO_DRIVER_WINRT} // Since SDL 2.0.3
@@ -9109,7 +9223,7 @@ Type
{$IFDEF SDL_VIDEO_DRIVER_X11}
__WMINFO_X11 = record
display: PDisplay; {**< The X11 display *}
- window: TWindow; {**< The X11 window *}
+ window: TWindow; {**< The X11 window *}
end;
{$ENDIF}
{$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
@@ -9126,7 +9240,10 @@ Type
{$ENDIF}
{$IFDEF SDL_VIDEO_DRIVER_UIKIT}
__WMINFO_UIKIT = record
- window: UIWindow; {* The UIKit window *}
+ window: UIWindow; {* The UIKit window *}
+ framebuffer: GLuint; {* The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. *}
+ colorbuffer: GLuint; {* The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. *}
+ resolveFramebuffer: GLuint; {* The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. *}
end;
{$ENDIF}
{$IFDEF SDL_VIDEO_DRIVER_WAYLAND} // Since SDL 2.0.2
@@ -9142,12 +9259,18 @@ Type
surface: PMirSurface; {**< Mir surface *}
end;
{$ENDIF}
-{$IFDEF SDL_VIDEO_DRIVER_ANDROID} // Planned for SDL 2.0.4
+{$IFDEF SDL_VIDEO_DRIVER_ANDROID}
__WMINFO_ANDROID = record
- window : PANativeWindow;
+ window: PANativeWindow;
surface: PEGLSurface;
end;
{$ENDIF}
+{$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
+ __WMINFO_VIVANTE = record
+ display: EGLNativeDisplayType;
+ window: EGLNativeWindowType;
+ end;
+{$ENDIF}
{**
* The custom window manager information structure.
@@ -9158,33 +9281,31 @@ Type
PSDL_SysWMinfo = ^TSDL_SysWMinfo;
TSDL_SysWMinfo = record
version: TSDL_version;
- Case subsystem: TSDL_SYSWM_TYPE of
- (* Cannot have empty record case *)
- SDL_SYSWM_UNKNOWN: (dummy: sInt32);
- {$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
- SDL_SYSWM_WINDOWS: (win : __WMINFO_WINDOWS);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_WINRT}
- SDL_SYSWM_WINRT: (winrt : __WMINFO_WINRT);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_X11}
- SDL_SYSWM_X11: (x11 : __WMINFO_X11);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
- SDL_SYSWM_DIRECTFB: (dfb : __WMINFO_DFB);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_COCOA}
- SDL_SYSWM_COCOA: (cocoa : __WMINFO_COCOA);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_UIKIT}
- SDL_SYSWM_UIKIT: (uikit : __WMINFO_UIKIT);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_WAYLAND}
- SDL_SYSWM_WAYLAND: (wl : __WMINFO_WAYLAND);
- {$ENDIF}
- {$IFDEF SDL_VIDEO_DRIVER_MIR}
- SDL_SYSWM_MIR: (mir : __WMINFO_MIR);
- {$ENDIF}
+ subsystem: TSDL_SYSWM_TYPE;
+ {$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
+ win : __WMINFO_WINDOWS;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_WINRT}
+ winrt : __WMINFO_WINRT;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_X11}
+ x11 : __WMINFO_X11;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
+ dfb : __WMINFO_DFB;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_COCOA}
+ cocoa : __WMINFO_COCOA;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_UIKIT}
+ uikit : __WMINFO_UIKIT;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_WAYLAND}
+ wl : __WMINFO_WAYLAND;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_MIR}
+ mir : __WMINFO_MIR;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_ANDROID}
+ android: __WMINFO_ANDROID;
+ {$ELSE} {$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
+ vivante: __WMINFO_VIVANTE;
+ {$ELSE}
+ (* Cannot have empty record case *)
+ dummy: integer;
+ {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF}
end;
{* Function prototypes *}
@@ -10480,17 +10601,17 @@ end;
{$ENDIF}
//from "sdl_rect.h"
-function SDL_RectEmpty(X: TSDL_Rect): Boolean;
+function SDL_RectEmpty(const r: PSDL_Rect): Boolean;
begin
- Result := (X.w <= 0) or (X.h <= 0);
+ Result := (r^.w <= 0) or (r^.h <= 0);
end;
-function SDL_RectEquals(A: TSDL_Rect; B: TSDL_Rect): Boolean;
+function SDL_RectEquals(const a, b: PSDL_Rect): Boolean;
begin
- Result := (A.x = B.x) and (A.y = B.y) and (A.w = B.w) and (A.h = B.h);
+ Result := (a^.x = b^.x) and (a^.y = b^.y) and (a^.w = b^.w) and (a^.h = b^.h);
end;
-function SDL_PointInRect(const p: PSDL_Point; const r: PSDL_Rect): Boolean; Inline;
+function SDL_PointInRect(const p: PSDL_Point; const r: PSDL_Rect): Boolean;
begin
Result :=
(p^.x >= r^.x) and (p^.x < (r^.x + r^.w))
@@ -10658,3 +10779,4 @@ begin
end;
end.
+