BsScriptGUIElementStyle.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsGUIElementStyle.h"
  5. #include "BsScriptMacros.h"
  6. #include "BsMonoClass.h"
  7. #include "BsScriptGUIElementStateStyle.h"
  8. #include "BsScriptFont.h"
  9. namespace BansheeEngine
  10. {
  11. template<class ParentType, class Type>
  12. class script_getset_value
  13. {
  14. private:
  15. static void internal_get(ParentType* nativeInstance, Type* value);
  16. static void internal_set(ParentType* nativeInstance, Type value);
  17. };
  18. class BS_SCR_BE_EXPORT ScriptGUIElementStyle : public ScriptObject<ScriptGUIElementStyle>
  19. {
  20. public:
  21. ~ScriptGUIElementStyle();
  22. static void initMetaData();
  23. GUIElementStyle* getInternalValue() const { return mElementStyle; }
  24. private:
  25. static void internal_createInstance(MonoObject* instance, MonoString* name);
  26. static void internal_createInstanceExternal(MonoObject* instance, MonoString* name, GUIElementStyle* externalStyle);
  27. static void internal_destroyInstance(ScriptGUIElementStyle* nativeInstance);
  28. static void initRuntimeData()
  29. {
  30. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIElementStyle::internal_createInstance);
  31. metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptGUIElementStyle::internal_destroyInstance);
  32. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Font);
  33. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, FontSize);
  34. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, TextHorzAlign);
  35. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, TextVertAlign);
  36. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, ImagePosition);
  37. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, WordWrap);
  38. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Normal);
  39. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Hover);
  40. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Active);
  41. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Focused);
  42. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, NormalOn);
  43. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, HoverOn);
  44. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, ActiveOn);
  45. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, FocusedOn);
  46. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Border);
  47. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Margins);
  48. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, ContentOffset);
  49. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Width);
  50. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, Height);
  51. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, MinWidth);
  52. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, MaxWidth);
  53. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, MinHeight);
  54. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, MaxHeight);
  55. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, FixedWidth);
  56. CM_SCRIPT_SETGET_META(ScriptGUIElementStyle, FixedHeight);
  57. }
  58. CM_SCRIPT_GETSET_OBJECT_SHRDPTR(ScriptGUIElementStyle, ScriptFont, Font, mElementStyle->font, mFont);
  59. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, CM::UINT32, FontSize, mElementStyle->fontSize);
  60. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, TextHorzAlign, TextHorzAlign, mElementStyle->textHorzAlign);
  61. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, TextVertAlign, TextVertAlign, mElementStyle->textVertAlign);
  62. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, GUIImagePosition, ImagePosition, mElementStyle->imagePosition);
  63. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, bool, WordWrap, mElementStyle->wordWrap);
  64. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, Normal, mElementStyle->normal, mNormal);
  65. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, Hover, mElementStyle->hover, mHover);
  66. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, Active, mElementStyle->active, mActive);
  67. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, Focused, mElementStyle->focused, mFocused);
  68. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, NormalOn, mElementStyle->normalOn, mNormalOn);
  69. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, HoverOn, mElementStyle->hoverOn, mHoverOn);
  70. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, ActiveOn, mElementStyle->activeOn, mActiveOn);
  71. CM_SCRIPT_GETSET_OBJECT(ScriptGUIElementStyle, ScriptGUIElementStateStyle, FocusedOn, mElementStyle->focusedOn, mFocusedOn);
  72. CM_SCRIPT_GETSET_VALUE_REF(ScriptGUIElementStyle, RectOffset, Border, mElementStyle->border);
  73. CM_SCRIPT_GETSET_VALUE_REF(ScriptGUIElementStyle, RectOffset, Margins, mElementStyle->margins);
  74. CM_SCRIPT_GETSET_VALUE_REF(ScriptGUIElementStyle, RectOffset, ContentOffset, mElementStyle->contentOffset);
  75. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, CM::UINT32, Width, mElementStyle->width);
  76. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, CM::UINT32, Height, mElementStyle->height);
  77. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, CM::UINT32, MinWidth, mElementStyle->minWidth);
  78. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, CM::UINT32, MaxWidth, mElementStyle->maxWidth);
  79. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, CM::UINT32, MinHeight, mElementStyle->minHeight);
  80. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, CM::UINT32, MaxHeight, mElementStyle->maxHeight);
  81. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, bool, FixedWidth, mElementStyle->fixedWidth);
  82. CM_SCRIPT_GETSET_VALUE(ScriptGUIElementStyle, bool, FixedHeight, mElementStyle->fixedHeight);
  83. ScriptGUIElementStyle(const CM::String& name);
  84. ScriptGUIElementStyle(const CM::String& name, GUIElementStyle* externalStyle);
  85. CM::String mName;
  86. GUIElementStyle* mElementStyle;
  87. bool mOwnsStyle;
  88. ScriptFont* mFont;
  89. ScriptGUIElementStateStyle* mNormal;
  90. ScriptGUIElementStateStyle* mHover;
  91. ScriptGUIElementStateStyle* mActive;
  92. ScriptGUIElementStateStyle* mFocused;
  93. ScriptGUIElementStateStyle* mNormalOn;
  94. ScriptGUIElementStateStyle* mHoverOn;
  95. ScriptGUIElementStateStyle* mActiveOn;
  96. ScriptGUIElementStateStyle* mFocusedOn;
  97. };
  98. }