2
0

BsScriptGUILabel.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "BsScriptGUILabel.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsSpriteTexture.h"
  7. #include "BsMonoUtil.h"
  8. #include "BsGUILayout.h"
  9. #include "BsGUILabel.h"
  10. #include "BsGUIOptions.h"
  11. #include "BsScriptGUIElementStyle.h"
  12. #include "BsScriptGUILayout.h"
  13. #include "BsScriptHString.h"
  14. #include "BsScriptGUIContent.h"
  15. namespace BansheeEngine
  16. {
  17. ScriptGUILabel::ScriptGUILabel(MonoObject* instance, GUILabel* label)
  18. :TScriptGUIElement(instance, label)
  19. {
  20. }
  21. void ScriptGUILabel::initRuntimeData()
  22. {
  23. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUILabel::internal_createInstance);
  24. metaData.scriptClass->addInternalCall("Internal_SetContent", &ScriptGUILabel::internal_setContent);
  25. metaData.scriptClass->addInternalCall("Internal_SetTint", &ScriptGUILabel::internal_setTint);
  26. }
  27. void ScriptGUILabel::internal_createInstance(MonoObject* instance, MonoObject* content, MonoString* style, MonoArray* guiOptions)
  28. {
  29. GUIOptions options;
  30. UINT32 arrayLen = (UINT32)mono_array_length(guiOptions);
  31. for(UINT32 i = 0; i < arrayLen; i++)
  32. options.addOption(mono_array_get(guiOptions, GUIOption, i));
  33. GUIContent nativeContent(ScriptGUIContent::getText(content), ScriptGUIContent::getImage(content), ScriptGUIContent::getTooltip(content));
  34. GUILabel* guiLabel = GUILabel::create(nativeContent, options, toString(MonoUtil::monoToWString(style)));
  35. ScriptGUILabel* nativeInstance = new (bs_alloc<ScriptGUILabel>()) ScriptGUILabel(instance, guiLabel);
  36. }
  37. void ScriptGUILabel::internal_setContent(ScriptGUILabel* nativeInstance, MonoObject* content)
  38. {
  39. GUIContent nativeContent(ScriptGUIContent::getText(content), ScriptGUIContent::getImage(content), ScriptGUIContent::getTooltip(content));
  40. GUILabel* label = (GUILabel*)nativeInstance->getGUIElement();
  41. label->setContent(nativeContent);
  42. }
  43. void ScriptGUILabel::internal_setTint(ScriptGUILabel* nativeInstance, Color color)
  44. {
  45. GUILabel* label = (GUILabel*)nativeInstance->getGUIElement();
  46. label->setTint(color);
  47. }
  48. }