BsScriptFont.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "BsScriptFont.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsScriptResourceManager.h"
  7. #include "BsScriptFontBitmap.h"
  8. namespace BansheeEngine
  9. {
  10. ScriptFont::ScriptFont(MonoObject* instance, const HFont& font)
  11. :ScriptObject(instance), mFont(font)
  12. {
  13. }
  14. void ScriptFont::initRuntimeData()
  15. {
  16. metaData.scriptClass->addInternalCall("Internal_GetBitmap", &ScriptFont::internal_GetBitmap);
  17. metaData.scriptClass->addInternalCall("Internal_GetClosestSize", &ScriptFont::internal_GetClosestSize);
  18. }
  19. void ScriptFont::_onManagedInstanceDeleted()
  20. {
  21. mManagedInstance = nullptr;
  22. if (!mRefreshInProgress)
  23. ScriptResourceManager::instance().destroyScriptResource(this);
  24. }
  25. void ScriptFont::setNativeHandle(const HResource& resource)
  26. {
  27. mFont = static_resource_cast<Font>(resource);
  28. }
  29. MonoObject* ScriptFont::internal_GetBitmap(ScriptFont* instance, int size)
  30. {
  31. if (!instance->mFont.isLoaded())
  32. return nullptr;
  33. SPtr<const FontBitmap> bitmap = instance->mFont->getBitmap(size);
  34. if (bitmap != nullptr)
  35. return ScriptFontBitmap::create(bitmap);
  36. return nullptr;
  37. }
  38. int ScriptFont::internal_GetClosestSize(ScriptFont* instance, int size)
  39. {
  40. if (!instance->mFont.isLoaded())
  41. return 0;
  42. return instance->mFont->getClosestSize(size);
  43. }
  44. ScriptCharRange::ScriptCharRange(MonoObject* instance)
  45. :ScriptObject(instance)
  46. { }
  47. void ScriptCharRange::initRuntimeData()
  48. { }
  49. }