BsScriptGUIElementStyle.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. #include "BsMonoUtil.h"
  11. namespace BansheeEngine
  12. {
  13. ScriptGUIElementStyle::ScriptGUIElementStyle(MonoObject* instance, const String& name)
  14. :ScriptObject(instance), mName(name), mElementStyle(bs_new<GUIElementStyle>()), mFont(nullptr), mOwnsStyle(true), mNormal(nullptr), mHover(nullptr),
  15. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  16. {
  17. }
  18. ScriptGUIElementStyle::ScriptGUIElementStyle(MonoObject* instance, const String& name, GUIElementStyle* externalStyle)
  19. :ScriptObject(instance), mName(name), mElementStyle(externalStyle), mFont(nullptr), mOwnsStyle(false), mNormal(nullptr), mHover(nullptr),
  20. mActive(nullptr), mFocused(nullptr), mNormalOn(nullptr), mHoverOn(nullptr), mActiveOn(nullptr), mFocusedOn(nullptr)
  21. {
  22. }
  23. ScriptGUIElementStyle::~ScriptGUIElementStyle()
  24. {
  25. if(mOwnsStyle)
  26. bs_delete(mElementStyle);
  27. }
  28. void ScriptGUIElementStyle::initRuntimeData()
  29. {
  30. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIElementStyle::internal_createInstance);
  31. metaData.scriptClass->addInternalCall("Internal_AddSubStyle", &ScriptGUIElementStyle::internal_addSubStyle);
  32. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Font);
  33. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FontSize);
  34. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, TextHorzAlign);
  35. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, TextVertAlign);
  36. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, ImagePosition);
  37. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, WordWrap);
  38. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Normal);
  39. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Hover);
  40. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Active);
  41. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Focused);
  42. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, NormalOn);
  43. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, HoverOn);
  44. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, ActiveOn);
  45. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FocusedOn);
  46. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Border);
  47. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Margins);
  48. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, ContentOffset);
  49. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Width);
  50. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, Height);
  51. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MinWidth);
  52. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MaxWidth);
  53. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MinHeight);
  54. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, MaxHeight);
  55. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FixedWidth);
  56. BS_SCRIPT_SETGET_META(ScriptGUIElementStyle, FixedHeight);
  57. }
  58. void ScriptGUIElementStyle::internal_createInstance(MonoObject* instance, MonoString* name)
  59. {
  60. char* nativeName = mono_string_to_utf8(name);
  61. String styleName(nativeName);
  62. free(nativeName);
  63. ScriptGUIElementStyle* nativeInstance = new (bs_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(instance, styleName);
  64. }
  65. void ScriptGUIElementStyle::internal_createInstanceExternal(MonoObject* instance, MonoString* name, GUIElementStyle* externalStyle)
  66. {
  67. char* nativeName = mono_string_to_utf8(name);
  68. String styleName(nativeName);
  69. free(nativeName);
  70. ScriptGUIElementStyle* nativeInstance = new (bs_alloc<ScriptGUIElementStyle>()) ScriptGUIElementStyle(instance, styleName, externalStyle);
  71. }
  72. void ScriptGUIElementStyle::internal_addSubStyle(ScriptGUIElementStyle* nativeInstance, MonoString* guiType, MonoString* styleName)
  73. {
  74. String guiTypeStr = MonoUtil::monoToString(guiType);
  75. String styleNameStr = MonoUtil::monoToString(styleName);
  76. nativeInstance->getInternalValue()->subStyles[guiTypeStr] = styleNameStr;
  77. }
  78. }