UIAPI.cpp 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828
  1. //
  2. // Copyright (c) 2008-2017 the Urho3D project.
  3. //
  4. // Permission is hereby granted, free of charge, to any person obtaining a copy
  5. // of this software and associated documentation files (the "Software"), to deal
  6. // in the Software without restriction, including without limitation the rights
  7. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. // copies of the Software, and to permit persons to whom the Software is
  9. // furnished to do so, subject to the following conditions:
  10. //
  11. // The above copyright notice and this permission notice shall be included in
  12. // all copies or substantial portions of the Software.
  13. //
  14. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. // THE SOFTWARE.
  21. //
  22. #include "../Precompiled.h"
  23. #include "../AngelScript/APITemplates.h"
  24. #include "../Input/Input.h"
  25. #include "../UI/CheckBox.h"
  26. #include "../UI/DropDownList.h"
  27. #include "../UI/FileSelector.h"
  28. #include "../UI/Font.h"
  29. #include "../UI/LineEdit.h"
  30. #include "../UI/ListView.h"
  31. #include "../UI/MessageBox.h"
  32. #include "../UI/ProgressBar.h"
  33. #include "../UI/ScrollBar.h"
  34. #include "../UI/Slider.h"
  35. #include "../UI/Sprite.h"
  36. #include "../UI/Text.h"
  37. #include "../UI/Text3D.h"
  38. #include "../UI/ToolTip.h"
  39. #include "../UI/UI.h"
  40. #include "../UI/View3D.h"
  41. #include "../DebugNew.h"
  42. namespace Urho3D
  43. {
  44. static bool FontSaveXMLVectorBuffer(VectorBuffer& buffer, int pointSize, bool usedGlyphs, const String& indentation, Font* ptr)
  45. {
  46. return ptr->SaveXML(buffer, pointSize, usedGlyphs, indentation);
  47. }
  48. static bool FontSaveXML(const String& fileName, int pointSize, bool usedGlyphs, const String& indentation, Font* ptr)
  49. {
  50. if (fileName.Empty())
  51. return false;
  52. File file(ptr->GetContext(), fileName, FILE_WRITE);
  53. return ptr->SaveXML(file, pointSize, usedGlyphs, indentation);
  54. }
  55. static bool FontSaveXMLFile(File* file, int pointSize, bool usedGlyphs, const String& indentation, Font* ptr)
  56. {
  57. return ptr->SaveXML(*file, pointSize, usedGlyphs, indentation);
  58. }
  59. static void RegisterFont(asIScriptEngine* engine)
  60. {
  61. engine->RegisterEnum("FontType");
  62. engine->RegisterEnumValue("FontType", "FONT_NONE", FONT_NONE);
  63. engine->RegisterEnumValue("FontType", "FONT_FREETYPE", FONT_FREETYPE);
  64. engine->RegisterEnumValue("FontType", "FONT_BITMAP", FONT_BITMAP);
  65. RegisterResource<Font>(engine, "Font");
  66. engine->RegisterObjectMethod("Font", "bool SaveXML(File@+, int, bool usedGlyphs = false, const String&in indentation = \"\t\")", asFUNCTION(FontSaveXMLFile), asCALL_CDECL_OBJLAST);
  67. engine->RegisterObjectMethod("Font", "bool SaveXML(VectorBuffer&, int, bool usedGlyphs = false, const String&in indentation = \"\t\")", asFUNCTION(FontSaveXMLVectorBuffer), asCALL_CDECL_OBJLAST);
  68. engine->RegisterObjectMethod("Font", "bool SaveXML(const String&in, int, bool usedGlyphs = false, const String&in indentation = \"\t\")", asFUNCTION(FontSaveXML), asCALL_CDECL_OBJLAST);
  69. engine->RegisterObjectMethod("Font", "IntVector2 GetTotalGlyphOffset(float) const", asMETHOD(Font, GetTotalGlyphOffset), asCALL_THISCALL);
  70. engine->RegisterObjectMethod("Font", "void set_absoluteGlyphOffset(const IntVector2&)", asMETHOD(Font, SetAbsoluteGlyphOffset), asCALL_THISCALL);
  71. engine->RegisterObjectMethod("Font", "const IntVector2& get_absoluteGlyphOffset() const", asMETHOD(Font, GetAbsoluteGlyphOffset), asCALL_THISCALL);
  72. engine->RegisterObjectMethod("Font", "void set_scaledGlyphOffset(const Vector2&)", asMETHOD(Font, SetScaledGlyphOffset), asCALL_THISCALL);
  73. engine->RegisterObjectMethod("Font", "const Vector2& get_scaledGlyphOffset() const", asMETHOD(Font, GetScaledGlyphOffset), asCALL_THISCALL);
  74. engine->RegisterObjectMethod("Font", "FontType get_fontType() const", asMETHOD(Font, GetFontType), asCALL_THISCALL);
  75. }
  76. static void RegisterUIElement(asIScriptEngine* engine)
  77. {
  78. engine->RegisterEnum("HorizontalAlignment");
  79. engine->RegisterEnumValue("HorizontalAlignment", "HA_LEFT", HA_LEFT);
  80. engine->RegisterEnumValue("HorizontalAlignment", "HA_CENTER", HA_CENTER);
  81. engine->RegisterEnumValue("HorizontalAlignment", "HA_RIGHT", HA_RIGHT);
  82. engine->RegisterEnumValue("HorizontalAlignment", "HA_CUSTOM", HA_CUSTOM);
  83. engine->RegisterEnum("VerticalAlignment");
  84. engine->RegisterEnumValue("VerticalAlignment", "VA_TOP", VA_TOP);
  85. engine->RegisterEnumValue("VerticalAlignment", "VA_CENTER", VA_CENTER);
  86. engine->RegisterEnumValue("VerticalAlignment", "VA_BOTTOM", VA_BOTTOM);
  87. engine->RegisterEnumValue("VerticalAlignment", "VA_CUSTOM", VA_CUSTOM);
  88. engine->RegisterEnum("Corner");
  89. engine->RegisterEnumValue("Corner", "C_TOPLEFT", C_TOPLEFT);
  90. engine->RegisterEnumValue("Corner", "C_TOPRIGHT", C_TOPRIGHT);
  91. engine->RegisterEnumValue("Corner", "C_BOTTOMLEFT", C_BOTTOMLEFT);
  92. engine->RegisterEnumValue("Corner", "C_BOTTOMRIGHT", C_BOTTOMRIGHT);
  93. engine->RegisterEnum("Orientation");
  94. engine->RegisterEnumValue("Orientation", "O_HORIZONTAL", O_HORIZONTAL);
  95. engine->RegisterEnumValue("Orientation", "O_VERTICAL", O_VERTICAL);
  96. engine->RegisterEnum("FocusMode");
  97. engine->RegisterEnumValue("FocusMode", "FM_NOTFOCUSABLE", FM_NOTFOCUSABLE);
  98. engine->RegisterEnumValue("FocusMode", "FM_RESETFOCUS", FM_RESETFOCUS);
  99. engine->RegisterEnumValue("FocusMode", "FM_FOCUSABLE", FM_FOCUSABLE);
  100. engine->RegisterEnumValue("FocusMode", "FM_FOCUSABLE_DEFOCUSABLE", FM_FOCUSABLE_DEFOCUSABLE);
  101. engine->RegisterEnum("LayoutMode");
  102. engine->RegisterEnumValue("LayoutMode", "LM_FREE", LM_FREE);
  103. engine->RegisterEnumValue("LayoutMode", "LM_HORIZONTAL", LM_HORIZONTAL);
  104. engine->RegisterEnumValue("LayoutMode", "LM_VERTICAL", LM_VERTICAL);
  105. engine->RegisterEnum("TraversalMode");
  106. engine->RegisterEnumValue("TraversalMode", "TM_BREADTH_FIRST", TM_BREADTH_FIRST);
  107. engine->RegisterEnumValue("TraversalMode", "TM_DEPTH_FIRST", TM_DEPTH_FIRST);
  108. engine->RegisterGlobalProperty("const uint DD_DISABLED", (void*)&DD_DISABLED);
  109. engine->RegisterGlobalProperty("const uint DD_SOURCE", (void*)&DD_SOURCE);
  110. engine->RegisterGlobalProperty("const uint DD_TARGET", (void*)&DD_TARGET);
  111. engine->RegisterGlobalProperty("const uint DD_SOURCE_AND_TARGET", (void*)&DD_SOURCE_AND_TARGET);
  112. RegisterUIElement<UIElement>(engine, "UIElement");
  113. // Register TouchState touchedElement property now
  114. engine->RegisterObjectMethod("TouchState", "UIElement@+ get_touchedElement()", asMETHOD(TouchState, GetTouchedElement), asCALL_THISCALL);
  115. }
  116. static void RegisterBorderImage(asIScriptEngine* engine)
  117. {
  118. RegisterBorderImage<BorderImage>(engine, "BorderImage");
  119. }
  120. static void RegisterSprite(asIScriptEngine* engine)
  121. {
  122. RegisterUIElement<Sprite>(engine, "Sprite", true);
  123. engine->RegisterObjectMethod("Sprite", "void SetPosition(float, float)", asMETHODPR(Sprite, SetPosition, (float, float), void), asCALL_THISCALL);
  124. engine->RegisterObjectMethod("Sprite", "void SetHotSpot(int, int)", asMETHODPR(Sprite, SetHotSpot, (int, int), void), asCALL_THISCALL);
  125. engine->RegisterObjectMethod("Sprite", "void SetScale(float, float)", asMETHODPR(Sprite, SetScale, (float, float), void), asCALL_THISCALL);
  126. engine->RegisterObjectMethod("Sprite", "void SetScale(float)", asMETHODPR(Sprite, SetScale, (float), void), asCALL_THISCALL);
  127. engine->RegisterObjectMethod("Sprite", "void SetFullImageRect()", asMETHOD(Sprite, SetFullImageRect), asCALL_THISCALL);
  128. engine->RegisterObjectMethod("Sprite", "void set_position(const Vector2&)", asMETHODPR(Sprite, SetPosition, (const Vector2&), void), asCALL_THISCALL);
  129. engine->RegisterObjectMethod("Sprite", "const Vector2& get_position() const", asMETHODPR(Sprite, GetPosition, () const, const Vector2&), asCALL_THISCALL);
  130. engine->RegisterObjectMethod("Sprite", "void set_hotSpot(const IntVector2&)", asMETHODPR(Sprite, SetHotSpot, (const IntVector2&), void), asCALL_THISCALL);
  131. engine->RegisterObjectMethod("Sprite", "const IntVector2& get_hotSpot() const", asMETHOD(Sprite, GetHotSpot), asCALL_THISCALL);
  132. engine->RegisterObjectMethod("Sprite", "void set_scale(const Vector2&)", asMETHODPR(Sprite, SetScale, (const Vector2&), void), asCALL_THISCALL);
  133. engine->RegisterObjectMethod("Sprite", "const Vector2& get_scale() const", asMETHOD(Sprite, GetScale), asCALL_THISCALL);
  134. engine->RegisterObjectMethod("Sprite", "void set_rotation(float)", asMETHOD(Sprite, SetRotation), asCALL_THISCALL);
  135. engine->RegisterObjectMethod("Sprite", "float get_rotation() const", asMETHOD(Sprite, GetRotation), asCALL_THISCALL);
  136. engine->RegisterObjectMethod("Sprite", "void set_texture(Texture@+)", asMETHOD(Sprite, SetTexture), asCALL_THISCALL);
  137. engine->RegisterObjectMethod("Sprite", "Texture@+ get_texture() const", asMETHOD(Sprite, GetTexture), asCALL_THISCALL);
  138. engine->RegisterObjectMethod("Sprite", "void set_imageRect(const IntRect&in)", asMETHODPR(Sprite, SetImageRect, (const IntRect&), void), asCALL_THISCALL);
  139. engine->RegisterObjectMethod("Sprite", "const IntRect& get_imageRect() const", asMETHOD(Sprite, GetImageRect), asCALL_THISCALL);
  140. engine->RegisterObjectMethod("Sprite", "void set_blendMode(BlendMode)", asMETHOD(Sprite, SetBlendMode), asCALL_THISCALL);
  141. engine->RegisterObjectMethod("Sprite", "BlendMode get_blendMode() const", asMETHOD(Sprite, GetBlendMode), asCALL_THISCALL);
  142. }
  143. static void RegisterCursor(asIScriptEngine* engine)
  144. {
  145. engine->RegisterEnum("CursorShape");
  146. engine->RegisterEnumValue("CursorShape", "CS_NORMAL", CS_NORMAL);
  147. engine->RegisterEnumValue("CursorShape", "CS_IBEAM", CS_IBEAM);
  148. engine->RegisterEnumValue("CursorShape", "CS_CROSS", CS_CROSS);
  149. engine->RegisterEnumValue("CursorShape", "CS_RESIZEVERTICAL", CS_RESIZEVERTICAL);
  150. engine->RegisterEnumValue("CursorShape", "CS_RESIZEDIAGONAL_TOPRIGHT", CS_RESIZEDIAGONAL_TOPRIGHT);
  151. engine->RegisterEnumValue("CursorShape", "CS_RESIZEHORIZONTAL", CS_RESIZEHORIZONTAL);
  152. engine->RegisterEnumValue("CursorShape", "CS_RESIZEDIAGONAL_TOPLEFT", CS_RESIZEDIAGONAL_TOPLEFT);
  153. engine->RegisterEnumValue("CursorShape", "CS_RESIZE_ALL", CS_RESIZE_ALL);
  154. engine->RegisterEnumValue("CursorShape", "CS_ACCEPTDROP", CS_ACCEPTDROP);
  155. engine->RegisterEnumValue("CursorShape", "CS_REJECTDROP", CS_REJECTDROP);
  156. engine->RegisterEnumValue("CursorShape", "CS_BUSY", CS_BUSY);
  157. engine->RegisterEnumValue("CursorShape", "CS_BUSY_ARROW", CS_BUSY_ARROW);
  158. RegisterBorderImage<Cursor>(engine, "Cursor");
  159. engine->RegisterObjectMethod("Cursor", "void DefineShape(const String&in, Texture@+, const IntRect&in, const IntVector2&in)", asMETHODPR(Cursor, DefineShape, (CursorShape, Image*, const IntRect&, const IntVector2&), void), asCALL_THISCALL);
  160. engine->RegisterObjectMethod("Cursor", "void DefineShape(CursorShape, Texture@+, const IntRect&in, const IntVector2&in)", asMETHODPR(Cursor, DefineShape, (const String&, Image*, const IntRect&, const IntVector2&), void), asCALL_THISCALL);
  161. engine->RegisterObjectMethod("Cursor", "void SetShape(const String&in)", asMETHODPR(Cursor, SetShape, (const String&), void), asCALL_THISCALL);
  162. engine->RegisterObjectMethod("Cursor", "void SetShape(CursorShape)", asMETHODPR(Cursor, SetShape, (CursorShape), void), asCALL_THISCALL);
  163. engine->RegisterObjectMethod("Cursor", "void set_shape(const String&in)", asMETHODPR(Cursor, SetShape, (const String&), void), asCALL_THISCALL);
  164. engine->RegisterObjectMethod("Cursor", "const String& get_shape() const", asMETHOD(Cursor, GetShape), asCALL_THISCALL);
  165. engine->RegisterObjectMethod("Cursor", "void set_useSystemShapes(bool)", asMETHOD(Cursor, SetUseSystemShapes), asCALL_THISCALL);
  166. engine->RegisterObjectMethod("Cursor", "bool get_useSystemShapes() const", asMETHOD(Cursor, GetUseSystemShapes), asCALL_THISCALL);
  167. }
  168. static void RegisterButton(asIScriptEngine* engine)
  169. {
  170. RegisterButton<Button>(engine, "Button");
  171. }
  172. static void RegisterCheckBox(asIScriptEngine* engine)
  173. {
  174. RegisterBorderImage<CheckBox>(engine, "CheckBox");
  175. engine->RegisterObjectMethod("CheckBox", "void SetCheckedOffset(int, int)", asMETHODPR(CheckBox, SetCheckedOffset, (int, int), void), asCALL_THISCALL);
  176. engine->RegisterObjectMethod("CheckBox", "void set_checked(bool)", asMETHOD(CheckBox, SetChecked), asCALL_THISCALL);
  177. engine->RegisterObjectMethod("CheckBox", "bool get_checked() const", asMETHOD(CheckBox, IsChecked), asCALL_THISCALL);
  178. engine->RegisterObjectMethod("CheckBox", "void set_checkedOffset(const IntVector2&in)", asMETHODPR(CheckBox, SetCheckedOffset, (const IntVector2&), void), asCALL_THISCALL);
  179. engine->RegisterObjectMethod("CheckBox", "const IntVector2& get_checkedOffset() const", asMETHOD(CheckBox, GetCheckedOffset), asCALL_THISCALL);
  180. }
  181. static void RegisterSlider(asIScriptEngine* engine)
  182. {
  183. RegisterBorderImage<Slider>(engine, "Slider");
  184. engine->RegisterObjectMethod("Slider", "void ChangeValue(float)", asMETHOD(Slider, ChangeValue), asCALL_THISCALL);
  185. engine->RegisterObjectMethod("Slider", "void set_orientation(Orientation)", asMETHOD(Slider, SetOrientation), asCALL_THISCALL);
  186. engine->RegisterObjectMethod("Slider", "Orientation get_orientation() const", asMETHOD(Slider, GetOrientation), asCALL_THISCALL);
  187. engine->RegisterObjectMethod("Slider", "void set_range(float)", asMETHOD(Slider, SetRange), asCALL_THISCALL);
  188. engine->RegisterObjectMethod("Slider", "float get_range() const", asMETHOD(Slider, GetRange), asCALL_THISCALL);
  189. engine->RegisterObjectMethod("Slider", "void set_value(float)", asMETHOD(Slider, SetValue), asCALL_THISCALL);
  190. engine->RegisterObjectMethod("Slider", "float get_value() const", asMETHOD(Slider, GetValue), asCALL_THISCALL);
  191. engine->RegisterObjectMethod("Slider", "BorderImage@+ get_knob() const", asMETHOD(Slider, GetKnob), asCALL_THISCALL);
  192. engine->RegisterObjectMethod("Slider", "void set_repeatRate(float)", asMETHOD(Slider, SetRepeatRate), asCALL_THISCALL);
  193. engine->RegisterObjectMethod("Slider", "float get_repeatRate() const", asMETHOD(Slider, GetRepeatRate), asCALL_THISCALL);
  194. }
  195. static void RegisterScrollBar(asIScriptEngine* engine)
  196. {
  197. RegisterUIElement<ScrollBar>(engine, "ScrollBar");
  198. engine->RegisterObjectMethod("ScrollBar", "void ChangeValue(float)", asMETHOD(ScrollBar, ChangeValue), asCALL_THISCALL);
  199. engine->RegisterObjectMethod("ScrollBar", "void StepBack()", asMETHOD(ScrollBar, StepBack), asCALL_THISCALL);
  200. engine->RegisterObjectMethod("ScrollBar", "void StepForward()", asMETHOD(ScrollBar, StepForward), asCALL_THISCALL);
  201. engine->RegisterObjectMethod("ScrollBar", "void set_orientation(Orientation)", asMETHOD(ScrollBar, SetOrientation), asCALL_THISCALL);
  202. engine->RegisterObjectMethod("ScrollBar", "Orientation get_orientation() const", asMETHOD(ScrollBar, GetOrientation), asCALL_THISCALL);
  203. engine->RegisterObjectMethod("ScrollBar", "void set_range(float)", asMETHOD(ScrollBar, SetRange), asCALL_THISCALL);
  204. engine->RegisterObjectMethod("ScrollBar", "float get_range() const", asMETHOD(ScrollBar, GetRange), asCALL_THISCALL);
  205. engine->RegisterObjectMethod("ScrollBar", "void set_value(float)", asMETHOD(ScrollBar, SetValue), asCALL_THISCALL);
  206. engine->RegisterObjectMethod("ScrollBar", "float get_value() const", asMETHOD(ScrollBar, GetValue), asCALL_THISCALL);
  207. engine->RegisterObjectMethod("ScrollBar", "void set_scrollStep(float)", asMETHOD(ScrollBar, SetScrollStep), asCALL_THISCALL);
  208. engine->RegisterObjectMethod("ScrollBar", "float get_scrollStep() const", asMETHOD(ScrollBar, GetScrollStep), asCALL_THISCALL);
  209. engine->RegisterObjectMethod("ScrollBar", "void set_stepFactor(bool)", asMETHOD(ScrollBar, SetStepFactor), asCALL_THISCALL);
  210. engine->RegisterObjectMethod("ScrollBar", "float get_stepFactor() const", asMETHOD(ScrollBar, GetStepFactor), asCALL_THISCALL);
  211. engine->RegisterObjectMethod("ScrollBar", "float get_effectiveScrollStep() const", asMETHOD(ScrollBar, GetEffectiveScrollStep), asCALL_THISCALL);
  212. engine->RegisterObjectMethod("ScrollBar", "Button@+ get_backButton() const", asMETHOD(ScrollBar, GetBackButton), asCALL_THISCALL);
  213. engine->RegisterObjectMethod("ScrollBar", "Button@+ get_forwardButton() const", asMETHOD(ScrollBar, GetForwardButton), asCALL_THISCALL);
  214. engine->RegisterObjectMethod("ScrollBar", "Slider@+ get_slider() const", asMETHOD(ScrollBar, GetSlider), asCALL_THISCALL);
  215. }
  216. static void RegisterScrollView(asIScriptEngine* engine)
  217. {
  218. RegisterUIElement<ScrollView>(engine, "ScrollView");
  219. engine->RegisterObjectMethod("ScrollView", "void SetViewPosition(int, int)", asMETHODPR(ScrollView, SetViewPosition, (int, int), void), asCALL_THISCALL);
  220. engine->RegisterObjectMethod("ScrollView", "void SetScrollBarsVisible(bool, bool)", asMETHOD(ScrollView, SetScrollBarsVisible), asCALL_THISCALL);
  221. engine->RegisterObjectMethod("ScrollView", "void set_contentElement(UIElement@+)", asMETHOD(ScrollView, SetContentElement), asCALL_THISCALL);
  222. engine->RegisterObjectMethod("ScrollView", "UIElement@+ get_contentElement() const", asMETHOD(ScrollView, GetContentElement), asCALL_THISCALL);
  223. engine->RegisterObjectMethod("ScrollView", "void set_viewPosition(const IntVector2&in)", asMETHODPR(ScrollView, SetViewPosition, (const IntVector2&), void), asCALL_THISCALL);
  224. engine->RegisterObjectMethod("ScrollView", "const IntVector2& get_viewPosition() const", asMETHOD(ScrollView, GetViewPosition), asCALL_THISCALL);
  225. engine->RegisterObjectMethod("ScrollView", "void set_scrollStep(float)", asMETHOD(ScrollView, SetScrollStep), asCALL_THISCALL);
  226. engine->RegisterObjectMethod("ScrollView", "float get_scrollStep() const", asMETHOD(ScrollView, GetScrollStep), asCALL_THISCALL);
  227. engine->RegisterObjectMethod("ScrollView", "void set_pageStep(float)", asMETHOD(ScrollView, SetPageStep), asCALL_THISCALL);
  228. engine->RegisterObjectMethod("ScrollView", "float get_pageStep() const", asMETHOD(ScrollView, GetPageStep), asCALL_THISCALL);
  229. engine->RegisterObjectMethod("ScrollView", "ScrollBar@+ get_horizontalScrollBar() const", asMETHOD(ScrollView, GetHorizontalScrollBar), asCALL_THISCALL);
  230. engine->RegisterObjectMethod("ScrollView", "ScrollBar@+ get_verticalScrollBar() const", asMETHOD(ScrollView, GetVerticalScrollBar), asCALL_THISCALL);
  231. engine->RegisterObjectMethod("ScrollView", "BorderImage@+ get_scrollPanel() const", asMETHOD(ScrollView, GetScrollPanel), asCALL_THISCALL);
  232. engine->RegisterObjectMethod("ScrollView", "void set_scrollBarsAutoVisible(bool)", asMETHOD(ScrollView, SetScrollBarsAutoVisible), asCALL_THISCALL);
  233. engine->RegisterObjectMethod("ScrollView", "bool get_scrollBarsAutoVisible() const", asMETHOD(ScrollView, GetScrollBarsAutoVisible), asCALL_THISCALL);
  234. engine->RegisterObjectMethod("ScrollView", "void set_scrollDeceleration(float)", asMETHOD(ScrollView, SetScrollDeceleration), asCALL_THISCALL);
  235. engine->RegisterObjectMethod("ScrollView", "float get_scrollDeceleration() const", asMETHOD(ScrollView, GetScrollDeceleration), asCALL_THISCALL);
  236. engine->RegisterObjectMethod("ScrollView", "void set_scrollSnapEpsilon(float)", asMETHOD(ScrollView, SetScrollSnapEpsilon), asCALL_THISCALL);
  237. engine->RegisterObjectMethod("ScrollView", "float get_scrollSnapEpsilon() const", asMETHOD(ScrollView, GetScrollSnapEpsilon), asCALL_THISCALL);
  238. engine->RegisterObjectMethod("ScrollView", "void set_autoDisableChildren(bool)", asMETHOD(ScrollView, SetAutoDisableChildren), asCALL_THISCALL);
  239. engine->RegisterObjectMethod("ScrollView", "bool get_autoDisableChildren() const", asMETHOD(ScrollView, GetAutoDisableChildren), asCALL_THISCALL);
  240. engine->RegisterObjectMethod("ScrollView", "void set_autoDisableThreshold(float)", asMETHOD(ScrollView, SetAutoDisableThreshold), asCALL_THISCALL);
  241. engine->RegisterObjectMethod("ScrollView", "float get_autoDisableThreshold() const", asMETHOD(ScrollView, GetAutoDisableThreshold), asCALL_THISCALL);
  242. }
  243. void ListViewSetSelections(CScriptArray* selections, ListView* ptr)
  244. {
  245. unsigned numItems = selections->GetSize();
  246. PODVector<unsigned> dest;
  247. dest.Reserve(numItems);
  248. for (unsigned i = 0; i < numItems; ++i)
  249. dest.Push(*((unsigned*)selections->At(i)));
  250. ptr->SetSelections(dest);
  251. }
  252. static CScriptArray* ListViewGetSelections(ListView* ptr)
  253. {
  254. return VectorToArray<unsigned>(ptr->GetSelections(), "Array<uint>");
  255. }
  256. static CScriptArray* ListViewGetItems(ListView* ptr)
  257. {
  258. PODVector<UIElement*> result = ptr->GetItems();
  259. return VectorToHandleArray<UIElement>(result, "Array<UIElement@>");
  260. }
  261. static CScriptArray* ListViewGetSelectedItems(ListView* ptr)
  262. {
  263. PODVector<UIElement*> result = ptr->GetSelectedItems();
  264. return VectorToHandleArray<UIElement>(result, "Array<UIElement@>");
  265. }
  266. static void RegisterListView(asIScriptEngine* engine)
  267. {
  268. engine->RegisterEnum("HighlightMode");
  269. engine->RegisterEnumValue("HighlightMode", "HM_NEVER", HM_NEVER);
  270. engine->RegisterEnumValue("HighlightMode", "HM_FOCUS", HM_FOCUS);
  271. engine->RegisterEnumValue("HighlightMode", "HM_ALWAYS", HM_ALWAYS);
  272. RegisterUIElement<ListView>(engine, "ListView");
  273. engine->RegisterObjectMethod("ListView", "void SetViewPosition(int, int)", asMETHODPR(ListView, SetViewPosition, (int, int), void), asCALL_THISCALL);
  274. engine->RegisterObjectMethod("ListView", "void SetScrollBarsVisible(bool, bool)", asMETHOD(ListView, SetScrollBarsVisible), asCALL_THISCALL);
  275. engine->RegisterObjectMethod("ListView", "void AddItem(UIElement@+)", asMETHOD(ListView, AddItem), asCALL_THISCALL);
  276. engine->RegisterObjectMethod("ListView", "void InsertItem(uint, UIElement@+, UIElement@+ arg2 = null)", asMETHOD(ListView, InsertItem), asCALL_THISCALL);
  277. engine->RegisterObjectMethod("ListView", "void RemoveItem(UIElement@+, uint index = 0)", asMETHODPR(ListView, RemoveItem, (UIElement*, unsigned), void), asCALL_THISCALL);
  278. engine->RegisterObjectMethod("ListView", "void RemoveItem(uint)", asMETHODPR(ListView, RemoveItem, (unsigned), void), asCALL_THISCALL);
  279. engine->RegisterObjectMethod("ListView", "void RemoveAllItems()", asMETHOD(ListView, RemoveAllItems), asCALL_THISCALL);
  280. engine->RegisterObjectMethod("ListView", "void AddSelection(uint)", asMETHOD(ListView, AddSelection), asCALL_THISCALL);
  281. engine->RegisterObjectMethod("ListView", "void RemoveSelection(uint)", asMETHOD(ListView, RemoveSelection), asCALL_THISCALL);
  282. engine->RegisterObjectMethod("ListView", "void ToggleSelection(uint)", asMETHOD(ListView, ToggleSelection), asCALL_THISCALL);
  283. engine->RegisterObjectMethod("ListView", "void ChangeSelection(int, bool)", asMETHOD(ListView, ChangeSelection), asCALL_THISCALL);
  284. engine->RegisterObjectMethod("ListView", "void SetSelections(Array<uint>@+)", asFUNCTION(ListViewSetSelections), asCALL_CDECL_OBJLAST);
  285. engine->RegisterObjectMethod("ListView", "void ClearSelection()", asMETHOD(ListView, ClearSelection), asCALL_THISCALL);
  286. engine->RegisterObjectMethod("ListView", "void CopySelectedItemsToClipboard()", asMETHOD(ListView, CopySelectedItemsToClipboard), asCALL_THISCALL);
  287. engine->RegisterObjectMethod("ListView", "void Expand(uint, bool, bool arg2 = false)", asMETHOD(ListView, Expand), asCALL_THISCALL);
  288. engine->RegisterObjectMethod("ListView", "void ToggleExpand(uint, bool arg1 = false)", asMETHOD(ListView, ToggleExpand), asCALL_THISCALL);
  289. engine->RegisterObjectMethod("ListView", "bool IsSelected(uint) const", asMETHOD(ListView, IsSelected), asCALL_THISCALL);
  290. engine->RegisterObjectMethod("ListView", "bool IsExpanded(uint) const", asMETHOD(ListView, IsExpanded), asCALL_THISCALL);
  291. engine->RegisterObjectMethod("ListView", "Array<UIElement@>@ GetItems() const", asFUNCTION(ListViewGetItems), asCALL_CDECL_OBJLAST);
  292. engine->RegisterObjectMethod("ListView", "uint FindItem(UIElement@+)", asMETHOD(ListView, FindItem), asCALL_THISCALL);
  293. engine->RegisterObjectMethod("ListView", "void set_viewPosition(const IntVector2&in)", asMETHODPR(ListView, SetViewPosition, (const IntVector2&), void), asCALL_THISCALL);
  294. engine->RegisterObjectMethod("ListView", "const IntVector2& get_viewPosition() const", asMETHOD(ListView, GetViewPosition), asCALL_THISCALL);
  295. engine->RegisterObjectMethod("ListView", "UIElement@+ get_contentElement() const", asMETHOD(ListView, GetContentElement), asCALL_THISCALL);
  296. engine->RegisterObjectMethod("ListView", "ScrollBar@+ get_horizontalScrollBar() const", asMETHOD(ListView, GetHorizontalScrollBar), asCALL_THISCALL);
  297. engine->RegisterObjectMethod("ListView", "ScrollBar@+ get_verticalScrollBar() const", asMETHOD(ListView, GetVerticalScrollBar), asCALL_THISCALL);
  298. engine->RegisterObjectMethod("ListView", "BorderImage@+ get_scrollPanel() const", asMETHOD(ListView, GetScrollPanel), asCALL_THISCALL);
  299. engine->RegisterObjectMethod("ListView", "void set_scrollBarsAutoVisible(bool)", asMETHOD(ListView, SetScrollBarsAutoVisible), asCALL_THISCALL);
  300. engine->RegisterObjectMethod("ListView", "bool get_scrollBarsAutoVisible() const", asMETHOD(ListView, GetScrollBarsAutoVisible), asCALL_THISCALL);
  301. engine->RegisterObjectMethod("ListView", "void set_scrollStep(float)", asMETHOD(ListView, SetScrollStep), asCALL_THISCALL);
  302. engine->RegisterObjectMethod("ListView", "float get_scrollStep() const", asMETHOD(ListView, GetScrollStep), asCALL_THISCALL);
  303. engine->RegisterObjectMethod("ListView", "void set_pageStep(float)", asMETHOD(ListView, SetPageStep), asCALL_THISCALL);
  304. engine->RegisterObjectMethod("ListView", "float get_pageStep() const", asMETHOD(ListView, GetPageStep), asCALL_THISCALL);
  305. engine->RegisterObjectMethod("ListView", "void set_scrollDeceleration(float)", asMETHOD(ListView, SetScrollDeceleration), asCALL_THISCALL);
  306. engine->RegisterObjectMethod("ListView", "float get_scrollDeceleration() const", asMETHOD(ListView, GetScrollDeceleration), asCALL_THISCALL);
  307. engine->RegisterObjectMethod("ListView", "void set_scrollSnapEpsilon(float)", asMETHOD(ListView, SetScrollSnapEpsilon), asCALL_THISCALL);
  308. engine->RegisterObjectMethod("ListView", "float get_scrollSnapEpsilon() const", asMETHOD(ListView, GetScrollSnapEpsilon), asCALL_THISCALL);
  309. engine->RegisterObjectMethod("ListView", "void set_autoDisableChildren(bool)", asMETHOD(ListView, SetAutoDisableChildren), asCALL_THISCALL);
  310. engine->RegisterObjectMethod("ListView", "bool get_autoDisableChildren() const", asMETHOD(ListView, GetAutoDisableChildren), asCALL_THISCALL);
  311. engine->RegisterObjectMethod("ListView", "void set_autoDisableThreshold(float)", asMETHOD(ListView, SetAutoDisableThreshold), asCALL_THISCALL);
  312. engine->RegisterObjectMethod("ListView", "float get_autoDisableThreshold() const", asMETHOD(ListView, GetAutoDisableThreshold), asCALL_THISCALL);
  313. engine->RegisterObjectMethod("ListView", "uint get_numItems() const", asMETHOD(ListView, GetNumItems), asCALL_THISCALL);
  314. engine->RegisterObjectMethod("ListView", "UIElement@+ get_items(uint) const", asMETHOD(ListView, GetItem), asCALL_THISCALL);
  315. engine->RegisterObjectMethod("ListView", "void set_selection(uint)", asMETHOD(ListView, SetSelection), asCALL_THISCALL);
  316. engine->RegisterObjectMethod("ListView", "uint get_selection() const", asMETHOD(ListView, GetSelection), asCALL_THISCALL);
  317. engine->RegisterObjectMethod("ListView", "Array<uint>@ get_selections() const", asFUNCTION(ListViewGetSelections), asCALL_CDECL_OBJLAST);
  318. engine->RegisterObjectMethod("ListView", "UIElement@+ get_selectedItem() const", asMETHOD(ListView, GetSelectedItem), asCALL_THISCALL);
  319. engine->RegisterObjectMethod("ListView", "Array<UIElement@>@ get_selectedItems() const", asFUNCTION(ListViewGetSelectedItems), asCALL_CDECL_OBJLAST);
  320. engine->RegisterObjectMethod("ListView", "void set_highlightMode(HighlightMode)", asMETHOD(ListView, SetHighlightMode), asCALL_THISCALL);
  321. engine->RegisterObjectMethod("ListView", "HighlightMode get_highlightMode() const", asMETHOD(ListView, GetHighlightMode), asCALL_THISCALL);
  322. engine->RegisterObjectMethod("ListView", "void set_multiselect(bool)", asMETHOD(ListView, SetMultiselect), asCALL_THISCALL);
  323. engine->RegisterObjectMethod("ListView", "bool get_multiselect() const", asMETHOD(ListView, GetMultiselect), asCALL_THISCALL);
  324. engine->RegisterObjectMethod("ListView", "void set_hierarchyMode(bool)", asMETHOD(ListView, SetHierarchyMode), asCALL_THISCALL);
  325. engine->RegisterObjectMethod("ListView", "bool get_hierarchyMode() const", asMETHOD(ListView, GetHierarchyMode), asCALL_THISCALL);
  326. engine->RegisterObjectMethod("ListView", "void set_baseIndent(int)", asMETHOD(ListView, SetBaseIndent), asCALL_THISCALL);
  327. engine->RegisterObjectMethod("ListView", "int get_baseIndent() const", asMETHOD(ListView, GetBaseIndent), asCALL_THISCALL);
  328. engine->RegisterObjectMethod("ListView", "void set_clearSelectionOnDefocus(bool)", asMETHOD(ListView, SetClearSelectionOnDefocus), asCALL_THISCALL);
  329. engine->RegisterObjectMethod("ListView", "bool get_clearSelectionOnDefocus() const", asMETHOD(ListView, GetClearSelectionOnDefocus), asCALL_THISCALL);
  330. engine->RegisterObjectMethod("ListView", "void set_selectOnClickEnd(bool)", asMETHOD(ListView, SetSelectOnClickEnd), asCALL_THISCALL);
  331. engine->RegisterObjectMethod("ListView", "bool get_selectOnClickEnd() const", asMETHOD(ListView, GetSelectOnClickEnd), asCALL_THISCALL);
  332. }
  333. static void RegisterText(asIScriptEngine* engine)
  334. {
  335. engine->RegisterEnum("TextEffect");
  336. engine->RegisterEnumValue("TextEffect", "TE_NONE", TE_NONE);
  337. engine->RegisterEnumValue("TextEffect", "TE_SHADOW", TE_SHADOW);
  338. engine->RegisterEnumValue("TextEffect", "TE_STROKE", TE_STROKE);
  339. RegisterUIElement<Text>(engine, "Text");
  340. engine->RegisterObjectMethod("Text", "bool SetFont(const String&in, int)", asMETHODPR(Text, SetFont, (const String&, int), bool), asCALL_THISCALL);
  341. engine->RegisterObjectMethod("Text", "bool SetFont(Font@+, float)", asMETHODPR(Text, SetFont, (Font*, float), bool), asCALL_THISCALL);
  342. engine->RegisterObjectMethod("Text", "void SetSelection(uint, uint arg1 = M_MAX_UNSIGNED)", asMETHOD(Text, SetSelection), asCALL_THISCALL);
  343. engine->RegisterObjectMethod("Text", "void ClearSelection()", asMETHOD(Text, ClearSelection), asCALL_THISCALL);
  344. engine->RegisterObjectMethod("Text", "Font@+ get_font() const", asMETHOD(Text, GetFont), asCALL_THISCALL);
  345. engine->RegisterObjectMethod("Text", "bool set_fontSize(float)", asMETHOD(Text, SetFontSize), asCALL_THISCALL);
  346. engine->RegisterObjectMethod("Text", "float get_fontSize() const", asMETHOD(Text, GetFontSize), asCALL_THISCALL);
  347. engine->RegisterObjectMethod("Text", "void set_text(const String&in)", asMETHOD(Text, SetText), asCALL_THISCALL);
  348. engine->RegisterObjectMethod("Text", "const String& get_text() const", asMETHOD(Text, GetText), asCALL_THISCALL);
  349. engine->RegisterObjectMethod("Text", "void set_textAlignment(HorizontalAlignment)", asMETHOD(Text, SetTextAlignment), asCALL_THISCALL);
  350. engine->RegisterObjectMethod("Text", "HorizontalAlignment get_textAlignment() const", asMETHOD(Text, GetTextAlignment), asCALL_THISCALL);
  351. engine->RegisterObjectMethod("Text", "void set_rowSpacing(float)", asMETHOD(Text, SetRowSpacing), asCALL_THISCALL);
  352. engine->RegisterObjectMethod("Text", "float get_rowSpacing() const", asMETHOD(Text, GetRowSpacing), asCALL_THISCALL);
  353. engine->RegisterObjectMethod("Text", "void set_wordwrap(bool)", asMETHOD(Text, SetWordwrap), asCALL_THISCALL);
  354. engine->RegisterObjectMethod("Text", "bool get_wordwrap() const", asMETHOD(Text, GetWordwrap), asCALL_THISCALL);
  355. engine->RegisterObjectMethod("Text", "void set_autoLocalizable(bool)", asMETHOD(Text, SetAutoLocalizable), asCALL_THISCALL);
  356. engine->RegisterObjectMethod("Text", "bool get_autoLocalizable() const", asMETHOD(Text, GetAutoLocalizable), asCALL_THISCALL);
  357. engine->RegisterObjectMethod("Text", "uint get_selectionStart() const", asMETHOD(Text, GetSelectionStart), asCALL_THISCALL);
  358. engine->RegisterObjectMethod("Text", "uint get_selectionLength() const", asMETHOD(Text, GetSelectionLength), asCALL_THISCALL);
  359. engine->RegisterObjectMethod("Text", "void set_selectionColor(const Color&in)", asMETHOD(Text, SetSelectionColor), asCALL_THISCALL);
  360. engine->RegisterObjectMethod("Text", "const Color& get_selectionColor() const", asMETHOD(Text, GetSelectionColor), asCALL_THISCALL);
  361. engine->RegisterObjectMethod("Text", "void set_hoverColor(const Color&in)", asMETHOD(Text, SetHoverColor), asCALL_THISCALL);
  362. engine->RegisterObjectMethod("Text", "const Color& get_hoverColor() const", asMETHOD(Text, GetHoverColor), asCALL_THISCALL);
  363. engine->RegisterObjectMethod("Text", "void set_textEffect(TextEffect)", asMETHOD(Text, SetTextEffect), asCALL_THISCALL);
  364. engine->RegisterObjectMethod("Text", "TextEffect get_textEffect() const", asMETHOD(Text, GetTextEffect), asCALL_THISCALL);
  365. engine->RegisterObjectMethod("Text", "void set_effectShadowOffset(const IntVector2&in)", asMETHOD(Text, SetEffectShadowOffset), asCALL_THISCALL);
  366. engine->RegisterObjectMethod("Text", "const IntVector2& get_effectShadowOffset() const", asMETHOD(Text, GetEffectShadowOffset), asCALL_THISCALL);
  367. engine->RegisterObjectMethod("Text", "void set_effectStrokeThickness(int)", asMETHOD(Text, SetEffectStrokeThickness), asCALL_THISCALL);
  368. engine->RegisterObjectMethod("Text", "int get_effectStrokeThickness() const", asMETHOD(Text, GetEffectStrokeThickness), asCALL_THISCALL);
  369. engine->RegisterObjectMethod("Text", "void set_effectRoundStroke(bool)", asMETHOD(Text, SetEffectRoundStroke), asCALL_THISCALL);
  370. engine->RegisterObjectMethod("Text", "bool get_effectRoundStroke() const", asMETHOD(Text, GetEffectRoundStroke), asCALL_THISCALL);
  371. engine->RegisterObjectMethod("Text", "void set_effectColor(const Color&in)", asMETHOD(Text, SetEffectColor), asCALL_THISCALL);
  372. engine->RegisterObjectMethod("Text", "const Color& get_effectColor() const", asMETHOD(Text, GetEffectColor), asCALL_THISCALL);
  373. engine->RegisterObjectMethod("Text", "uint get_numRows() const", asMETHOD(Text, GetNumRows), asCALL_THISCALL);
  374. engine->RegisterObjectMethod("Text", "uint get_numChars() const", asMETHOD(Text, GetNumChars), asCALL_THISCALL);
  375. engine->RegisterObjectMethod("Text", "float get_rowWidths(uint) const", asMETHOD(Text, GetRowWidth), asCALL_THISCALL);
  376. engine->RegisterObjectMethod("Text", "Vector2 get_charPositions(uint)", asMETHOD(Text, GetCharPosition), asCALL_THISCALL);
  377. engine->RegisterObjectMethod("Text", "Vector2 get_charSizes(uint)", asMETHOD(Text, GetCharSize), asCALL_THISCALL);
  378. engine->RegisterObjectMethod("Text", "float get_rowHeight() const", asMETHOD(Text, GetRowHeight), asCALL_THISCALL);
  379. }
  380. static void RegisterText3D(asIScriptEngine* engine)
  381. {
  382. RegisterDrawable<Text3D>(engine, "Text3D");
  383. engine->RegisterObjectMethod("Text3D", "bool SetFont(const String&in, float)", asMETHODPR(Text3D, SetFont, (const String&, float), bool), asCALL_THISCALL);
  384. engine->RegisterObjectMethod("Text3D", "bool SetFont(Font@+, float)", asMETHODPR(Text3D, SetFont, (Font*, float), bool), asCALL_THISCALL);
  385. engine->RegisterObjectMethod("Text3D", "void SetAlignment(HorizontalAlignment, VerticalAlignment)", asMETHOD(Text3D, SetAlignment), asCALL_THISCALL);
  386. engine->RegisterObjectMethod("Text3D", "Font@+ get_font() const", asMETHOD(Text3D, GetFont), asCALL_THISCALL);
  387. engine->RegisterObjectMethod("Text3D", "bool set_fontSize(float)", asMETHOD(Text3D, SetFontSize), asCALL_THISCALL);
  388. engine->RegisterObjectMethod("Text3D", "float get_fontSize() const", asMETHOD(Text3D, GetFontSize), asCALL_THISCALL);
  389. engine->RegisterObjectMethod("Text3D", "void set_material(Material@+)", asMETHOD(Text3D, SetMaterial), asCALL_THISCALL);
  390. engine->RegisterObjectMethod("Text3D", "Material@+ get_material() const", asMETHOD(Text3D, GetMaterial), asCALL_THISCALL);
  391. engine->RegisterObjectMethod("Text3D", "void set_text(const String&in)", asMETHOD(Text3D, SetText), asCALL_THISCALL);
  392. engine->RegisterObjectMethod("Text3D", "const String& get_text() const", asMETHOD(Text3D, GetText), asCALL_THISCALL);
  393. engine->RegisterObjectMethod("Text3D", "void set_textAlignment(HorizontalAlignment)", asMETHOD(Text3D, SetTextAlignment), asCALL_THISCALL);
  394. engine->RegisterObjectMethod("Text3D", "HorizontalAlignment get_textAlignment() const", asMETHOD(Text3D, GetTextAlignment), asCALL_THISCALL);
  395. engine->RegisterObjectMethod("Text3D", "void set_horizontalAlignment(HorizontalAlignment)", asMETHOD(Text3D, SetHorizontalAlignment), asCALL_THISCALL);
  396. engine->RegisterObjectMethod("Text3D", "HorizontalAlignment get_horizontalAlignment() const", asMETHOD(Text3D, GetHorizontalAlignment), asCALL_THISCALL);
  397. engine->RegisterObjectMethod("Text3D", "void set_verticalAlignment(VerticalAlignment)", asMETHOD(Text3D, SetVerticalAlignment), asCALL_THISCALL);
  398. engine->RegisterObjectMethod("Text3D", "VerticalAlignment get_verticalAlignment() const", asMETHOD(Text3D, GetVerticalAlignment), asCALL_THISCALL);
  399. engine->RegisterObjectMethod("Text3D", "void set_rowSpacing(float)", asMETHOD(Text3D, SetRowSpacing), asCALL_THISCALL);
  400. engine->RegisterObjectMethod("Text3D", "float get_rowSpacing() const", asMETHOD(Text3D, GetRowSpacing), asCALL_THISCALL);
  401. engine->RegisterObjectMethod("Text3D", "void set_wordwrap(bool)", asMETHOD(Text3D, SetWordwrap), asCALL_THISCALL);
  402. engine->RegisterObjectMethod("Text3D", "bool get_wordwrap() const", asMETHOD(Text3D, GetWordwrap), asCALL_THISCALL);
  403. engine->RegisterObjectMethod("Text3D", "void set_textEffect(TextEffect)", asMETHOD(Text3D, SetTextEffect), asCALL_THISCALL);
  404. engine->RegisterObjectMethod("Text3D", "TextEffect get_textEffect() const", asMETHOD(Text3D, GetTextEffect), asCALL_THISCALL);
  405. engine->RegisterObjectMethod("Text3D", "void set_effectShadowOffset(const IntVector2&in)", asMETHOD(Text3D, SetEffectShadowOffset), asCALL_THISCALL);
  406. engine->RegisterObjectMethod("Text3D", "const IntVector2& get_effectShadowOffset() const", asMETHOD(Text3D, GetEffectShadowOffset), asCALL_THISCALL);
  407. engine->RegisterObjectMethod("Text3D", "void set_effectStrokeThickness(int)", asMETHOD(Text3D, SetEffectStrokeThickness), asCALL_THISCALL);
  408. engine->RegisterObjectMethod("Text3D", "int get_effectStrokeThickness() const", asMETHOD(Text3D, GetEffectStrokeThickness), asCALL_THISCALL);
  409. engine->RegisterObjectMethod("Text3D", "void set_effectRoundStroke(bool)", asMETHOD(Text3D, SetEffectRoundStroke), asCALL_THISCALL);
  410. engine->RegisterObjectMethod("Text3D", "bool get_effectRoundStroke() const", asMETHOD(Text3D, GetEffectRoundStroke), asCALL_THISCALL);
  411. engine->RegisterObjectMethod("Text3D", "void set_effectColor(const Color&in)", asMETHOD(Text3D, SetEffectColor), asCALL_THISCALL);
  412. engine->RegisterObjectMethod("Text3D", "const Color& get_effectColor() const", asMETHOD(Text3D, GetEffectColor), asCALL_THISCALL);
  413. engine->RegisterObjectMethod("Text3D", "void set_effectDepthBias(float)", asMETHOD(Text3D, SetEffectDepthBias), asCALL_THISCALL);
  414. engine->RegisterObjectMethod("Text3D", "float get_effectDepthBias() const", asMETHOD(Text3D, GetEffectDepthBias), asCALL_THISCALL);
  415. engine->RegisterObjectMethod("Text3D", "void set_width(int)", asMETHOD(Text3D, SetWidth), asCALL_THISCALL);
  416. engine->RegisterObjectMethod("Text3D", "int get_width() const", asMETHOD(Text3D, GetWidth), asCALL_THISCALL);
  417. engine->RegisterObjectMethod("Text3D", "int get_height() const", asMETHOD(Text3D, GetHeight), asCALL_THISCALL);
  418. engine->RegisterObjectMethod("Text3D", "void set_color(const Color&in)", asMETHODPR(Text3D, SetColor, (const Color&), void), asCALL_THISCALL);
  419. engine->RegisterObjectMethod("Text3D", "void set_colors(Corner, const Color&in)", asMETHODPR(Text3D, SetColor, (Corner, const Color&), void), asCALL_THISCALL);
  420. engine->RegisterObjectMethod("Text3D", "const Color& get_colors(Corner) const", asMETHOD(Text3D, GetColor), asCALL_THISCALL);
  421. engine->RegisterObjectMethod("Text3D", "void set_opacity(float)", asMETHOD(Text3D, SetOpacity), asCALL_THISCALL);
  422. engine->RegisterObjectMethod("Text3D", "float get_opacity() const", asMETHOD(Text3D, GetOpacity), asCALL_THISCALL);
  423. engine->RegisterObjectMethod("Text3D", "void set_fixedScreenSize(bool)", asMETHOD(Text3D, SetFixedScreenSize), asCALL_THISCALL);
  424. engine->RegisterObjectMethod("Text3D", "bool get_fixedScreenSize() const", asMETHOD(Text3D, IsFixedScreenSize), asCALL_THISCALL);
  425. engine->RegisterObjectMethod("Text3D", "void set_faceCameraMode(FaceCameraMode)", asMETHOD(Text3D, SetFaceCameraMode), asCALL_THISCALL);
  426. engine->RegisterObjectMethod("Text3D", "FaceCameraMode get_faceCameraMode() const", asMETHOD(Text3D, GetFaceCameraMode), asCALL_THISCALL);
  427. engine->RegisterObjectMethod("Text3D", "uint get_numRows() const", asMETHOD(Text3D, GetNumRows), asCALL_THISCALL);
  428. engine->RegisterObjectMethod("Text3D", "uint get_numChars() const", asMETHOD(Text3D, GetNumChars), asCALL_THISCALL);
  429. engine->RegisterObjectMethod("Text3D", "float get_rowWidths(uint) const", asMETHOD(Text3D, GetRowWidth), asCALL_THISCALL);
  430. engine->RegisterObjectMethod("Text3D", "Vector2 get_charPositions(uint)", asMETHOD(Text3D, GetCharPosition), asCALL_THISCALL);
  431. engine->RegisterObjectMethod("Text3D", "Vector2 get_charSizes(uint)", asMETHOD(Text3D, GetCharSize), asCALL_THISCALL);
  432. engine->RegisterObjectMethod("Text3D", "float get_rowHeight() const", asMETHOD(Text3D, GetRowHeight), asCALL_THISCALL);
  433. }
  434. static void RegisterLineEdit(asIScriptEngine* engine)
  435. {
  436. RegisterBorderImage<LineEdit>(engine, "LineEdit");
  437. engine->RegisterObjectMethod("LineEdit", "void set_text(const String&in)", asMETHOD(LineEdit, SetText), asCALL_THISCALL);
  438. engine->RegisterObjectMethod("LineEdit", "const String& get_text() const", asMETHOD(LineEdit, GetText), asCALL_THISCALL);
  439. engine->RegisterObjectMethod("LineEdit", "void set_cursorPosition(uint)", asMETHOD(LineEdit, SetCursorPosition), asCALL_THISCALL);
  440. engine->RegisterObjectMethod("LineEdit", "uint get_cursorPosition() const", asMETHOD(LineEdit, GetCursorPosition), asCALL_THISCALL);
  441. engine->RegisterObjectMethod("LineEdit", "void set_cursorBlinkRate(float)", asMETHOD(LineEdit, SetCursorBlinkRate), asCALL_THISCALL);
  442. engine->RegisterObjectMethod("LineEdit", "float get_cursorBlinkRate() const", asMETHOD(LineEdit, GetCursorBlinkRate), asCALL_THISCALL);
  443. engine->RegisterObjectMethod("LineEdit", "void set_maxLength(uint)", asMETHOD(LineEdit, SetMaxLength), asCALL_THISCALL);
  444. engine->RegisterObjectMethod("LineEdit", "uint get_maxLength() const", asMETHOD(LineEdit, GetMaxLength), asCALL_THISCALL);
  445. engine->RegisterObjectMethod("LineEdit", "void set_echoCharacter(uint)", asMETHOD(LineEdit, SetEchoCharacter), asCALL_THISCALL);
  446. engine->RegisterObjectMethod("LineEdit", "uint get_echoCharacter() const", asMETHOD(LineEdit, GetEchoCharacter), asCALL_THISCALL);
  447. engine->RegisterObjectMethod("LineEdit", "void set_cursorMovable(bool)", asMETHOD(LineEdit, SetCursorMovable), asCALL_THISCALL);
  448. engine->RegisterObjectMethod("LineEdit", "bool get_cursorMovable() const", asMETHOD(LineEdit, IsCursorMovable), asCALL_THISCALL);
  449. engine->RegisterObjectMethod("LineEdit", "void set_textSelectable(bool)", asMETHOD(LineEdit, SetTextSelectable), asCALL_THISCALL);
  450. engine->RegisterObjectMethod("LineEdit", "bool get_textSelectable() const", asMETHOD(LineEdit, IsTextSelectable), asCALL_THISCALL);
  451. engine->RegisterObjectMethod("LineEdit", "void set_textCopyable(bool)", asMETHOD(LineEdit, SetTextCopyable), asCALL_THISCALL);
  452. engine->RegisterObjectMethod("LineEdit", "bool get_textCopyable() const", asMETHOD(LineEdit, IsTextCopyable), asCALL_THISCALL);
  453. engine->RegisterObjectMethod("LineEdit", "Text@+ get_textElement() const", asMETHOD(LineEdit, GetTextElement), asCALL_THISCALL);
  454. engine->RegisterObjectMethod("LineEdit", "BorderImage@+ get_cursor() const", asMETHOD(LineEdit, GetCursor), asCALL_THISCALL);
  455. }
  456. static void RegisterMenu(asIScriptEngine* engine)
  457. {
  458. RegisterButton<Menu>(engine, "Menu");
  459. engine->RegisterObjectMethod("Menu", "void SetPopupOffset(int, int)", asMETHODPR(Menu, SetPopupOffset, (int, int), void), asCALL_THISCALL);
  460. engine->RegisterObjectMethod("Menu", "void SetAccelerator(int, int)", asMETHOD(Menu, SetAccelerator), asCALL_THISCALL);
  461. engine->RegisterObjectMethod("Menu", "void set_popup(UIElement@+)", asMETHOD(Menu, SetPopup), asCALL_THISCALL);
  462. engine->RegisterObjectMethod("Menu", "UIElement@+ get_popup() const", asMETHOD(Menu, GetPopup), asCALL_THISCALL);
  463. engine->RegisterObjectMethod("Menu", "void set_popupOffset(const IntVector2&in)", asMETHODPR(Menu, SetPopupOffset, (const IntVector2&), void), asCALL_THISCALL);
  464. engine->RegisterObjectMethod("Menu", "const IntVector2& get_popupOffset() const", asMETHOD(Menu, GetPopupOffset), asCALL_THISCALL);
  465. engine->RegisterObjectMethod("Menu", "void set_showPopup(bool)", asMETHOD(Menu, ShowPopup), asCALL_THISCALL);
  466. engine->RegisterObjectMethod("Menu", "bool get_showPopup() const", asMETHOD(Menu, GetShowPopup), asCALL_THISCALL);
  467. engine->RegisterObjectMethod("Menu", "int get_acceleratorKey() const", asMETHOD(Menu, GetAcceleratorKey), asCALL_THISCALL);
  468. engine->RegisterObjectMethod("Menu", "int get_acceleratorQualifiers() const", asMETHOD(Menu, GetAcceleratorQualifiers), asCALL_THISCALL);
  469. }
  470. static MessageBox* ConstructMessageBox(const String& messageString, const String& titleString, XMLFile* layoutFile, XMLFile* styleFile)
  471. {
  472. return new MessageBox(GetScriptContext(), messageString, titleString, layoutFile, styleFile);
  473. }
  474. static void RegisterMessageBox(asIScriptEngine* engine)
  475. {
  476. RegisterObject<MessageBox>(engine, "MessageBox");
  477. engine->RegisterObjectBehaviour("MessageBox", asBEHAVE_FACTORY, "MessageBox@+ f(const String&in messageString = String(), const String&in titleString = String(), XMLFile@+ layoutFile = null, XMLFile@+ styleFile = null)", asFUNCTION(ConstructMessageBox), asCALL_CDECL);
  478. engine->RegisterObjectMethod("MessageBox", "void set_title(const String&in)", asMETHOD(MessageBox, SetTitle), asCALL_THISCALL);
  479. engine->RegisterObjectMethod("MessageBox", "const String& get_title() const", asMETHOD(MessageBox, GetTitle), asCALL_THISCALL);
  480. engine->RegisterObjectMethod("MessageBox", "void set_message(const String&in)", asMETHOD(MessageBox, SetMessage), asCALL_THISCALL);
  481. engine->RegisterObjectMethod("MessageBox", "const String& get_message() const", asMETHOD(MessageBox, GetMessage), asCALL_THISCALL);
  482. engine->RegisterObjectMethod("MessageBox", "UIElement@+ get_window() const", asMETHOD(MessageBox, GetWindow), asCALL_THISCALL);
  483. }
  484. static void RegisterProgressBar(asIScriptEngine* engine)
  485. {
  486. RegisterObject<ProgressBar>(engine, "ProgressBar");
  487. engine->RegisterObjectMethod("ProgressBar", "void set_orientation(Orientation)", asMETHOD(ProgressBar, SetOrientation), asCALL_THISCALL);
  488. engine->RegisterObjectMethod("ProgressBar", "Orientation get_orientation() const", asMETHOD(ProgressBar, GetOrientation), asCALL_THISCALL);
  489. engine->RegisterObjectMethod("ProgressBar", "void set_range(float)", asMETHOD(ProgressBar, SetRange), asCALL_THISCALL);
  490. engine->RegisterObjectMethod("ProgressBar", "float get_range() const", asMETHOD(ProgressBar, GetRange), asCALL_THISCALL);
  491. engine->RegisterObjectMethod("ProgressBar", "void set_value(float)", asMETHOD(ProgressBar, SetValue), asCALL_THISCALL);
  492. engine->RegisterObjectMethod("ProgressBar", "float get_value() const", asMETHOD(ProgressBar, GetValue), asCALL_THISCALL);
  493. engine->RegisterObjectMethod("ProgressBar", "void set_showPercentText(bool)", asMETHOD(ProgressBar, SetShowPercentText), asCALL_THISCALL);
  494. engine->RegisterObjectMethod("ProgressBar", "bool get_showPercentText() const", asMETHOD(ProgressBar, GetShowPercentText), asCALL_THISCALL);
  495. engine->RegisterObjectMethod("ProgressBar", "void ChangeValue(float)", asMETHOD(ProgressBar, ChangeValue), asCALL_THISCALL);
  496. engine->RegisterObjectMethod("ProgressBar", "BorderImage@+ get_knob() const", asMETHOD(ProgressBar, GetKnob), asCALL_THISCALL);
  497. engine->RegisterObjectMethod("ProgressBar", "void SetLoadingPercentStyle(const String&in)", asMETHOD(ProgressBar, SetLoadingPercentStyle), asCALL_THISCALL);
  498. }
  499. static CScriptArray* DropDownListGetItems(DropDownList* ptr)
  500. {
  501. PODVector<UIElement*> result = ptr->GetItems();
  502. return VectorToHandleArray<UIElement>(result, "Array<UIElement@>");
  503. }
  504. static void RegisterDropDownList(asIScriptEngine* engine)
  505. {
  506. RegisterButton<DropDownList>(engine, "DropDownList");
  507. engine->RegisterObjectMethod("DropDownList", "void SetAccelerator(int, int)", asMETHOD(DropDownList, SetAccelerator), asCALL_THISCALL);
  508. engine->RegisterObjectMethod("DropDownList", "void AddItem(UIElement@+)", asMETHOD(DropDownList, AddItem), asCALL_THISCALL);
  509. engine->RegisterObjectMethod("DropDownList", "void InsertItem(uint, UIElement@+)", asMETHOD(DropDownList, InsertItem), asCALL_THISCALL);
  510. engine->RegisterObjectMethod("DropDownList", "void RemoveItem(UIElement@+)", asMETHODPR(DropDownList, RemoveItem, (UIElement*), void), asCALL_THISCALL);
  511. engine->RegisterObjectMethod("DropDownList", "void RemoveItem(uint)", asMETHODPR(DropDownList, RemoveItem, (unsigned), void), asCALL_THISCALL);
  512. engine->RegisterObjectMethod("DropDownList", "void RemoveAllItems()", asMETHOD(DropDownList, RemoveAllItems), asCALL_THISCALL);
  513. engine->RegisterObjectMethod("DropDownList", "Array<UIElement@>@ GetItems() const", asFUNCTION(DropDownListGetItems), asCALL_CDECL_OBJLAST);
  514. engine->RegisterObjectMethod("DropDownList", "void set_showPopup(bool)", asMETHOD(DropDownList, ShowPopup), asCALL_THISCALL);
  515. engine->RegisterObjectMethod("DropDownList", "bool get_showPopup() const", asMETHOD(DropDownList, GetShowPopup), asCALL_THISCALL);
  516. engine->RegisterObjectMethod("DropDownList", "void set_selection(uint)", asMETHOD(DropDownList, SetSelection), asCALL_THISCALL);
  517. engine->RegisterObjectMethod("DropDownList", "uint get_selection() const", asMETHOD(DropDownList, GetSelection), asCALL_THISCALL);
  518. engine->RegisterObjectMethod("DropDownList", "void set_resizePopup(bool)", asMETHOD(DropDownList, SetResizePopup), asCALL_THISCALL);
  519. engine->RegisterObjectMethod("DropDownList", "bool get_resizePopup() const", asMETHOD(DropDownList, GetResizePopup), asCALL_THISCALL);
  520. engine->RegisterObjectMethod("DropDownList", "UIElement@+ getPopup() const", asMETHOD(DropDownList, GetPopup), asCALL_THISCALL);
  521. engine->RegisterObjectMethod("DropDownList", "int get_acceleratorKey() const", asMETHOD(DropDownList, GetAcceleratorKey), asCALL_THISCALL);
  522. engine->RegisterObjectMethod("DropDownList", "int get_acceleratorQualifiers() const", asMETHOD(DropDownList, GetAcceleratorQualifiers), asCALL_THISCALL);
  523. engine->RegisterObjectMethod("DropDownList", "uint get_numItems() const", asMETHOD(DropDownList, GetNumItems), asCALL_THISCALL);
  524. engine->RegisterObjectMethod("DropDownList", "UIElement@+ get_items(uint) const", asMETHOD(DropDownList, GetItem), asCALL_THISCALL);
  525. engine->RegisterObjectMethod("DropDownList", "UIElement@+ get_selectedItem() const", asMETHOD(DropDownList, GetSelectedItem), asCALL_THISCALL);
  526. engine->RegisterObjectMethod("DropDownList", "ListView@+ get_listView() const", asMETHOD(DropDownList, GetListView), asCALL_THISCALL);
  527. engine->RegisterObjectMethod("DropDownList", "UIElement@+ get_placeholder() const", asMETHOD(DropDownList, GetPlaceholder), asCALL_THISCALL);
  528. engine->RegisterObjectMethod("DropDownList", "void set_placeholderText(const String&in)", asMETHOD(DropDownList, SetPlaceholderText), asCALL_THISCALL);
  529. engine->RegisterObjectMethod("DropDownList", "const String& get_placeholderText() const", asMETHOD(DropDownList, GetPlaceholderText), asCALL_THISCALL);
  530. }
  531. static void RegisterWindow(asIScriptEngine* engine)
  532. {
  533. RegisterWindow<Window>(engine, "Window");
  534. }
  535. static void RegisterView3D(asIScriptEngine* engine)
  536. {
  537. RegisterWindow<View3D>(engine, "View3D");
  538. engine->RegisterObjectMethod("View3D", "void SetView(Scene@+, Camera@+, bool ownScene=true)", asMETHOD(View3D, SetView), asCALL_THISCALL);
  539. engine->RegisterObjectMethod("View3D", "void QueueUpdate()", asMETHOD(View3D, QueueUpdate), asCALL_THISCALL);
  540. engine->RegisterObjectMethod("View3D", "void set_format(uint)", asMETHOD(View3D, SetFormat), asCALL_THISCALL);
  541. engine->RegisterObjectMethod("View3D", "uint get_format() const", asMETHOD(View3D, GetFormat), asCALL_THISCALL);
  542. engine->RegisterObjectMethod("View3D", "void set_autoUpdate(bool)", asMETHOD(View3D, SetAutoUpdate), asCALL_THISCALL);
  543. engine->RegisterObjectMethod("View3D", "bool get_autoUpdate() const", asMETHOD(View3D, GetAutoUpdate), asCALL_THISCALL);
  544. engine->RegisterObjectMethod("View3D", "Texture2D@+ get_renderTexture() const", asMETHOD(View3D, GetRenderTexture), asCALL_THISCALL);
  545. engine->RegisterObjectMethod("View3D", "Texture2D@+ get_depthTexture() const", asMETHOD(View3D, GetDepthTexture), asCALL_THISCALL);
  546. engine->RegisterObjectMethod("View3D", "Viewport@+ get_viewport() const", asMETHOD(View3D, GetViewport), asCALL_THISCALL);
  547. engine->RegisterObjectMethod("View3D", "Scene@+ get_scene() const", asMETHOD(View3D, GetScene), asCALL_THISCALL);
  548. engine->RegisterObjectMethod("View3D", "Node@+ get_cameraNode() const", asMETHOD(View3D, GetCameraNode), asCALL_THISCALL);
  549. }
  550. static void FileSelectorSetFilters(CScriptArray* filters, unsigned defaultIndex, FileSelector* ptr)
  551. {
  552. if (!filters)
  553. return;
  554. unsigned numFilters = filters->GetSize();
  555. Vector<String> destFilters(numFilters);
  556. for (unsigned i = 0; i < numFilters; ++i)
  557. destFilters[i] = *(static_cast<String*>(filters->At(i)));
  558. ptr->SetFilters(destFilters, defaultIndex);
  559. }
  560. static void RegisterFileSelector(asIScriptEngine* engine)
  561. {
  562. RegisterObject<FileSelector>(engine, "FileSelector");
  563. RegisterObjectConstructor<FileSelector>(engine, "FileSelector");
  564. engine->RegisterObjectMethod("FileSelector", "void SetButtonTexts(const String&in, const String&in)", asMETHOD(FileSelector, SetButtonTexts), asCALL_THISCALL);
  565. engine->RegisterObjectMethod("FileSelector", "void SetFilters(Array<String>@+, uint)", asFUNCTION(FileSelectorSetFilters), asCALL_CDECL_OBJLAST);
  566. engine->RegisterObjectMethod("FileSelector", "void UpdateElements()", asMETHOD(FileSelector, UpdateElements), asCALL_THISCALL);
  567. engine->RegisterObjectMethod("FileSelector", "void set_title(const String&in)", asMETHOD(FileSelector, SetTitle), asCALL_THISCALL);
  568. engine->RegisterObjectMethod("FileSelector", "const String& get_title() const", asMETHOD(FileSelector, GetTitle), asCALL_THISCALL);
  569. engine->RegisterObjectMethod("FileSelector", "void set_path(const String&in)", asMETHOD(FileSelector, SetPath), asCALL_THISCALL);
  570. engine->RegisterObjectMethod("FileSelector", "const String& get_path() const", asMETHOD(FileSelector, GetPath), asCALL_THISCALL);
  571. engine->RegisterObjectMethod("FileSelector", "void set_fileName(const String&in)", asMETHOD(FileSelector, SetFileName), asCALL_THISCALL);
  572. engine->RegisterObjectMethod("FileSelector", "const String& get_fileName() const", asMETHOD(FileSelector, GetFileName), asCALL_THISCALL);
  573. engine->RegisterObjectMethod("FileSelector", "void set_directoryMode(bool)", asMETHOD(FileSelector, SetDirectoryMode), asCALL_THISCALL);
  574. engine->RegisterObjectMethod("FileSelector", "bool get_directoryMode() const", asMETHOD(FileSelector, GetDirectoryMode), asCALL_THISCALL);
  575. engine->RegisterObjectMethod("FileSelector", "const String& get_filter() const", asMETHOD(FileSelector, GetFilter), asCALL_THISCALL);
  576. engine->RegisterObjectMethod("FileSelector", "uint get_filterIndex() const", asMETHOD(FileSelector, GetFilterIndex), asCALL_THISCALL);
  577. engine->RegisterObjectMethod("FileSelector", "void set_defaultStyle(XMLFile@+)", asMETHOD(FileSelector, SetDefaultStyle), asCALL_THISCALL);
  578. engine->RegisterObjectMethod("FileSelector", "XMLFile@+ get_defaultStyle() const", asMETHOD(FileSelector, GetDefaultStyle), asCALL_THISCALL);
  579. engine->RegisterObjectMethod("FileSelector", "Window@+ get_window() const", asMETHOD(FileSelector, GetWindow), asCALL_THISCALL);
  580. engine->RegisterObjectMethod("FileSelector", "Text@+ get_titleText() const", asMETHOD(FileSelector, GetTitleText), asCALL_THISCALL);
  581. engine->RegisterObjectMethod("FileSelector", "ListView@+ get_fileList() const", asMETHOD(FileSelector, GetFileList), asCALL_THISCALL);
  582. engine->RegisterObjectMethod("FileSelector", "LineEdit@+ get_pathEdit() const", asMETHOD(FileSelector, GetPathEdit), asCALL_THISCALL);
  583. engine->RegisterObjectMethod("FileSelector", "LineEdit@+ get_fileNameEdit() const", asMETHOD(FileSelector, GetFileNameEdit), asCALL_THISCALL);
  584. engine->RegisterObjectMethod("FileSelector", "DropDownList@+ get_filterList() const", asMETHOD(FileSelector, GetFilterList), asCALL_THISCALL);
  585. engine->RegisterObjectMethod("FileSelector", "Button@+ get_okButton() const", asMETHOD(FileSelector, GetOKButton), asCALL_THISCALL);
  586. engine->RegisterObjectMethod("FileSelector", "Button@+ get_cancelButton() const", asMETHOD(FileSelector, GetCancelButton), asCALL_THISCALL);
  587. }
  588. static void RegisterToolTip(asIScriptEngine* engine)
  589. {
  590. RegisterUIElement<ToolTip>(engine, "ToolTip");
  591. engine->RegisterObjectMethod("ToolTip", "void set_delay(float)", asMETHOD(ToolTip, SetDelay), asCALL_THISCALL);
  592. engine->RegisterObjectMethod("ToolTip", "float get_delay() const", asMETHOD(ToolTip, GetDelay), asCALL_THISCALL);
  593. }
  594. static UI* GetUI()
  595. {
  596. return GetScriptContext()->GetSubsystem<UI>();
  597. }
  598. static UIElement* UILoadLayoutFromFile(File* file, UI* ptr)
  599. {
  600. if (file)
  601. {
  602. SharedPtr<UIElement> root = ptr->LoadLayout(*file);
  603. if (root)
  604. root->AddRef();
  605. return root.Get();
  606. }
  607. else
  608. return 0;
  609. }
  610. static UIElement* UILoadLayoutFromVectorBuffer(VectorBuffer& buffer, UI* ptr)
  611. {
  612. SharedPtr<UIElement> root = ptr->LoadLayout(buffer);
  613. if (root)
  614. root->AddRef();
  615. return root.Get();
  616. }
  617. static UIElement* UILoadLayoutFromFileWithStyle(File* file, XMLFile* styleFile, UI* ptr)
  618. {
  619. if (file)
  620. {
  621. SharedPtr<UIElement> root = ptr->LoadLayout(*file, styleFile);
  622. if (root)
  623. root->AddRef();
  624. return root.Get();
  625. }
  626. else
  627. return 0;
  628. }
  629. static UIElement* UILoadLayoutFromVectorBufferWithStyle(VectorBuffer& buffer, XMLFile* styleFile, UI* ptr)
  630. {
  631. SharedPtr<UIElement> root = ptr->LoadLayout(buffer, styleFile);
  632. if (root)
  633. root->AddRef();
  634. return root.Get();
  635. }
  636. static UIElement* UILoadLayout(XMLFile* file, UI* ptr)
  637. {
  638. SharedPtr<UIElement> root = ptr->LoadLayout(file);
  639. if (root)
  640. root->AddRef();
  641. return root.Get();
  642. }
  643. static UIElement* UILoadLayoutWithStyle(XMLFile* file, XMLFile* styleFile, UI* ptr)
  644. {
  645. SharedPtr<UIElement> root = ptr->LoadLayout(file, styleFile);
  646. if (root)
  647. root->AddRef();
  648. return root.Get();
  649. }
  650. static bool UISaveLayout(File* file, UIElement* element, UI* ptr)
  651. {
  652. return file && ptr->SaveLayout(*file, element);
  653. }
  654. static bool UISaveLayoutVectorBuffer(VectorBuffer& buffer, UIElement* element, UI* ptr)
  655. {
  656. return ptr->SaveLayout(buffer, element);
  657. }
  658. static void UISetFocusElement(UIElement* element, UI* ptr)
  659. {
  660. ptr->SetFocusElement(element);
  661. }
  662. static CScriptArray* UIGetDragElements(UI* ptr)
  663. {
  664. return VectorToHandleArray(ptr->GetDragElements(), "const Array<UIElement@>@");
  665. }
  666. static void RegisterUI(asIScriptEngine* engine)
  667. {
  668. engine->RegisterEnum("FontHintLevel");
  669. engine->RegisterEnumValue("FontHintLevel", "FONT_HINT_LEVEL_NONE", FONT_HINT_LEVEL_NONE);
  670. engine->RegisterEnumValue("FontHintLevel", "FONT_HINT_LEVEL_LIGHT", FONT_HINT_LEVEL_LIGHT);
  671. engine->RegisterEnumValue("FontHintLevel", "FONT_HINT_LEVEL_NORMAL", FONT_HINT_LEVEL_NORMAL);
  672. RegisterObject<UI>(engine, "UI");
  673. engine->RegisterObjectMethod("UI", "void Clear()", asMETHOD(UI, Clear), asCALL_THISCALL);
  674. engine->RegisterObjectMethod("UI", "void DebugDraw(UIElement@+)", asMETHOD(UI, DebugDraw), asCALL_THISCALL);
  675. engine->RegisterObjectMethod("UI", "UIElement@ LoadLayout(File@+)", asFUNCTION(UILoadLayoutFromFile), asCALL_CDECL_OBJLAST);
  676. engine->RegisterObjectMethod("UI", "UIElement@ LoadLayout(File@+, XMLFile@+)", asFUNCTION(UILoadLayoutFromFileWithStyle), asCALL_CDECL_OBJLAST);
  677. engine->RegisterObjectMethod("UI", "UIElement@ LoadLayout(VectorBuffer&)", asFUNCTION(UILoadLayoutFromVectorBuffer), asCALL_CDECL_OBJLAST);
  678. engine->RegisterObjectMethod("UI", "UIElement@ LoadLayout(VectorBuffer&, XMLFile@+)", asFUNCTION(UILoadLayoutFromVectorBufferWithStyle), asCALL_CDECL_OBJLAST);
  679. engine->RegisterObjectMethod("UI", "UIElement@ LoadLayout(XMLFile@+)", asFUNCTION(UILoadLayout), asCALL_CDECL_OBJLAST);
  680. engine->RegisterObjectMethod("UI", "UIElement@ LoadLayout(XMLFile@+, XMLFile@+)", asFUNCTION(UILoadLayoutWithStyle), asCALL_CDECL_OBJLAST);
  681. engine->RegisterObjectMethod("UI", "bool SaveLayout(File@+, UIElement@+)", asFUNCTION(UISaveLayout), asCALL_CDECL_OBJLAST);
  682. engine->RegisterObjectMethod("UI", "bool SaveLayout(VectorBuffer&, UIElement@+)", asFUNCTION(UISaveLayoutVectorBuffer), asCALL_CDECL_OBJLAST);
  683. engine->RegisterObjectMethod("UI", "void SetFocusElement(UIElement@+, bool byKey = false)", asMETHOD(UI, SetFocusElement), asCALL_THISCALL);
  684. engine->RegisterObjectMethod("UI", "void SetWidth(float)", asMETHOD(UI, SetWidth), asCALL_THISCALL);
  685. engine->RegisterObjectMethod("UI", "void SetHeight(float)", asMETHOD(UI, SetHeight), asCALL_THISCALL);
  686. engine->RegisterObjectMethod("UI", "void SetCustomSize(int, int)", asMETHODPR(UI, SetCustomSize, (int, int), void), asCALL_THISCALL);
  687. engine->RegisterObjectMethod("UI", "UIElement@+ GetElementAt(const IntVector2&in, bool activeOnly = true)", asMETHODPR(UI, GetElementAt, (const IntVector2&, bool), UIElement*), asCALL_THISCALL);
  688. engine->RegisterObjectMethod("UI", "UIElement@+ GetElementAt(int, int, bool activeOnly = true)", asMETHODPR(UI, GetElementAt, (int, int, bool), UIElement*), asCALL_THISCALL);
  689. engine->RegisterObjectMethod("UI", "bool HasModalElement() const", asMETHOD(UI, HasModalElement), asCALL_THISCALL);
  690. engine->RegisterObjectMethod("UI", "void set_cursor(Cursor@+)", asMETHOD(UI, SetCursor), asCALL_THISCALL);
  691. engine->RegisterObjectMethod("UI", "Cursor@+ get_cursor() const", asMETHOD(UI, GetCursor), asCALL_THISCALL);
  692. engine->RegisterObjectMethod("UI", "IntVector2 get_cursorPosition() const", asMETHOD(UI, GetCursorPosition), asCALL_THISCALL);
  693. engine->RegisterObjectMethod("UI", "void set_focusElement(UIElement@+)", asFUNCTION(UISetFocusElement), asCALL_CDECL_OBJLAST);
  694. engine->RegisterObjectMethod("UI", "UIElement@+ get_focusElement() const", asMETHOD(UI, GetFocusElement), asCALL_THISCALL);
  695. engine->RegisterObjectMethod("UI", "UIElement@+ get_frontElement() const", asMETHOD(UI, GetFrontElement), asCALL_THISCALL);
  696. engine->RegisterObjectMethod("UI", "const Array<UIElement@>@ GetDragElements()", asFUNCTION(UIGetDragElements), asCALL_CDECL_OBJLAST);
  697. engine->RegisterObjectMethod("UI", "bool IsDragging() const", asMETHOD(UI, IsDragging), asCALL_THISCALL);
  698. engine->RegisterObjectMethod("UI", "UIElement@+ get_root() const", asMETHOD(UI, GetRoot), asCALL_THISCALL);
  699. engine->RegisterObjectMethod("UI", "UIElement@+ get_modalRoot() const", asMETHOD(UI, GetRootModalElement), asCALL_THISCALL);
  700. engine->RegisterObjectMethod("UI", "void set_clipBoardText(const String&in)", asMETHOD(UI, SetClipboardText), asCALL_THISCALL);
  701. engine->RegisterObjectMethod("UI", "const String& get_clipBoardText() const", asMETHOD(UI, GetClipboardText), asCALL_THISCALL);
  702. engine->RegisterObjectMethod("UI", "void set_doubleClickInterval(float)", asMETHOD(UI, SetDoubleClickInterval), asCALL_THISCALL);
  703. engine->RegisterObjectMethod("UI", "float get_doubleClickInterval() const", asMETHOD(UI, GetDoubleClickInterval), asCALL_THISCALL);
  704. engine->RegisterObjectMethod("UI", "void set_dragBeginInterval(float)", asMETHOD(UI, SetDragBeginInterval), asCALL_THISCALL);
  705. engine->RegisterObjectMethod("UI", "float get_dragBeginInterval() const", asMETHOD(UI, GetDragBeginInterval), asCALL_THISCALL);
  706. engine->RegisterObjectMethod("UI", "void set_dragBeginDistance(int)", asMETHOD(UI, SetDragBeginDistance), asCALL_THISCALL);
  707. engine->RegisterObjectMethod("UI", "int get_dragBeginDistance() const", asMETHOD(UI, GetDragBeginDistance), asCALL_THISCALL);
  708. engine->RegisterObjectMethod("UI", "void set_defaultToolTipDelay(float)", asMETHOD(UI, SetDefaultToolTipDelay), asCALL_THISCALL);
  709. engine->RegisterObjectMethod("UI", "float get_defaultToolTipDelay() const", asMETHOD(UI, GetDefaultToolTipDelay), asCALL_THISCALL);
  710. engine->RegisterObjectMethod("UI", "void set_maxFontTextureSize(int)", asMETHOD(UI, SetMaxFontTextureSize), asCALL_THISCALL);
  711. engine->RegisterObjectMethod("UI", "int get_maxFontTextureSize() const", asMETHOD(UI, GetMaxFontTextureSize), asCALL_THISCALL);
  712. engine->RegisterObjectMethod("UI", "void set_nonFocusedMouseWheel(bool)", asMETHOD(UI, SetNonFocusedMouseWheel), asCALL_THISCALL);
  713. engine->RegisterObjectMethod("UI", "bool get_nonFocusedMouseWheel() const", asMETHOD(UI, IsNonFocusedMouseWheel), asCALL_THISCALL);
  714. engine->RegisterObjectMethod("UI", "void set_useSystemClipboard(bool)", asMETHOD(UI, SetUseSystemClipboard), asCALL_THISCALL);
  715. engine->RegisterObjectMethod("UI", "bool get_useSystemClipboard() const", asMETHOD(UI, GetUseSystemClipboard), asCALL_THISCALL);
  716. engine->RegisterObjectMethod("UI", "void set_useScreenKeyboard(bool)", asMETHOD(UI, SetUseScreenKeyboard), asCALL_THISCALL);
  717. engine->RegisterObjectMethod("UI", "bool get_useScreenKeyboard() const", asMETHOD(UI, GetUseScreenKeyboard), asCALL_THISCALL);
  718. engine->RegisterObjectMethod("UI", "void set_useMutableGlyphs(bool)", asMETHOD(UI, SetUseMutableGlyphs), asCALL_THISCALL);
  719. engine->RegisterObjectMethod("UI", "bool get_useMutableGlyphs() const", asMETHOD(UI, GetUseMutableGlyphs), asCALL_THISCALL);
  720. engine->RegisterObjectMethod("UI", "void set_forceAutoHint(bool)", asMETHOD(UI, SetForceAutoHint), asCALL_THISCALL);
  721. engine->RegisterObjectMethod("UI", "bool get_forceAutoHint() const", asMETHOD(UI, GetForceAutoHint), asCALL_THISCALL);
  722. engine->RegisterObjectMethod("UI", "void set_fontHintLevel(FontHintLevel)", asMETHOD(UI, SetFontHintLevel), asCALL_THISCALL);
  723. engine->RegisterObjectMethod("UI", "FontHintLevel get_fontHintLevel() const", asMETHOD(UI, GetFontHintLevel), asCALL_THISCALL);
  724. engine->RegisterObjectMethod("UI", "void set_subpixelGlyphPositions(bool)", asMETHOD(UI, SetSubpixelGlyphPositions), asCALL_THISCALL);
  725. engine->RegisterObjectMethod("UI", "bool get_subpixelGlyphPositions() const", asMETHOD(UI, GetSubpixelGlyphPositions), asCALL_THISCALL);
  726. engine->RegisterObjectMethod("UI", "void set_scale(float value)", asMETHOD(UI, SetScale), asCALL_THISCALL);
  727. engine->RegisterObjectMethod("UI", "float get_scale() const", asMETHOD(UI, GetScale), asCALL_THISCALL);
  728. engine->RegisterObjectMethod("UI", "void set_customSize(const IntVector2&in)", asMETHODPR(UI, SetCustomSize, (const IntVector2&), void), asCALL_THISCALL);
  729. engine->RegisterObjectMethod("UI", "const IntVector2& get_customSize() const", asMETHOD(UI, GetCustomSize), asCALL_THISCALL);
  730. engine->RegisterGlobalFunction("UI@+ get_ui()", asFUNCTION(GetUI), asCALL_CDECL);
  731. }
  732. void RegisterUIAPI(asIScriptEngine* engine)
  733. {
  734. RegisterFont(engine);
  735. RegisterUIElement(engine);
  736. RegisterBorderImage(engine);
  737. RegisterSprite(engine);
  738. RegisterButton(engine);
  739. RegisterCheckBox(engine);
  740. RegisterCursor(engine);
  741. RegisterSlider(engine);
  742. RegisterScrollBar(engine);
  743. RegisterScrollView(engine);
  744. RegisterListView(engine);
  745. RegisterText(engine);
  746. RegisterText3D(engine);
  747. RegisterLineEdit(engine);
  748. RegisterMenu(engine);
  749. RegisterMessageBox(engine);
  750. RegisterProgressBar(engine);
  751. RegisterDropDownList(engine);
  752. RegisterWindow(engine);
  753. RegisterView3D(engine);
  754. RegisterFileSelector(engine);
  755. RegisterToolTip(engine);
  756. RegisterUI(engine);
  757. }
  758. }