BsScriptGUIElementStyle.cpp 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "BsScriptGUIElementStyle.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsScriptFont.h"
  7. #include "BsException.h"
  8. #include "BsGUIElementStyle.h"
  9. #include "BsScriptGUIElementStateStyle.h"
  10. namespace BansheeEngine
  11. {
  12. ScriptGUIElementStyle::ScriptGUIElementStyle(MonoObject* instance, const String& name)
  13. :ScriptObject(instance), mName(name), mElementStyle(bs_new<GUIElementStyle>()), mFont(nullptr), mOwnsStyle(true), mNormal(nullptr), mHover(nullptr),
  14. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  15. {
  16. }
  17. ScriptGUIElementStyle::ScriptGUIElementStyle(MonoObject* instance, const String& name, GUIElementStyle* externalStyle)
  18. :ScriptObject(instance), mName(name), mElementStyle(externalStyle), mFont(nullptr), mOwnsStyle(false), mNormal(nullptr), mHover(nullptr),
  19. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  20. {
  21. }
  22. ScriptGUIElementStyle::~ScriptGUIElementStyle()
  23. {
  24. if(mOwnsStyle)
  25. bs_delete(mElementStyle);
  26. }
  27. void ScriptGUIElementStyle::initRuntimeData()
  28. {
  29. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIElementStyle::internal_createInstance);
  30. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Font);
  31. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FontSize);
  32. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, TextHorzAlign);
  33. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, TextVertAlign);
  34. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, ImagePosition);
  35. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, WordWrap);
  36. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Normal);
  37. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Hover);
  38. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Active);
  39. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Focused);
  40. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, NormalOn);
  41. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, HoverOn);
  42. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, ActiveOn);
  43. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FocusedOn);
  44. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Border);
  45. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Margins);
  46. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, ContentOffset);
  47. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Width);
  48. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Height);
  49. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MinWidth);
  50. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MaxWidth);
  51. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MinHeight);
  52. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MaxHeight);
  53. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FixedWidth);
  54. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FixedHeight);
  55. }
  56. void ScriptGUIElementStyle::internal_createInstance(MonoObject* instance, MonoString* name)
  57. {
  58. char* nativeName = mono_string_to_utf8(name);
  59. String styleName(nativeName);
  60. free(nativeName);
  61. ScriptGUIElementStyle* nativeInstance = new (bs_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(instance, styleName);
  62. }
  63. void ScriptGUIElementStyle::internal_createInstanceExternal(MonoObject* instance, MonoString* name, GUIElementStyle* externalStyle)
  64. {
  65. char* nativeName = mono_string_to_utf8(name);
  66. String styleName(nativeName);
  67. free(nativeName);
  68. ScriptGUIElementStyle* nativeInstance = new (bs_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(instance, styleName, externalStyle);
  69. }
  70. }