FontModule.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * author: Patrick-Christopher Mattulat
  3. * dev-tools: JetBrains CLion
  4. * created: 23.08.2018
  5. * last updated: 12.09.2018
  6. */
  7. #include "FontModule.h"
  8. #include "../../Error/ErrorCodes.h"
  9. #include "../Module.h"
  10. //////////////////////////////////////////////////
  11. //////////////////////////////////////////////////
  12. //// constructor / destructor
  13. //////////////////////////////////////////////////
  14. //////////////////////////////////////////////////
  15. FontModule::FontModule(uint32_t id):
  16. module(MODULE_FONT),
  17. size(0.0f),
  18. style(TTF_STYLE_NORMAL)
  19. {
  20. this->id.store(id);
  21. }
  22. FontModule::~FontModule() = default;
  23. //////////////////////////////////////////////////
  24. //////////////////////////////////////////////////
  25. //// public
  26. //////////////////////////////////////////////////
  27. //////////////////////////////////////////////////
  28. int FontModule::create(const std::string& file, double size)
  29. {
  30. int result = LE_NO_ERROR;
  31. if(!file.empty()) {
  32. this->size.store(size);
  33. std::shared_ptr<TTF_Font> f(TTF_OpenFont(file.c_str(), (int) this->size.load()), TTF_CloseFont);
  34. this->font = f;
  35. if(this->font == nullptr) {
  36. result = LE_SDL_OPEN_FONT;
  37. }
  38. }
  39. return result;
  40. }
  41. std::shared_ptr<TTF_Font> FontModule::getFont()
  42. {
  43. return std::shared_ptr<TTF_Font>(this->font);
  44. }
  45. uint32_t FontModule::getId()
  46. {
  47. return this->id.load();
  48. }
  49. uint8_t FontModule::getModule()
  50. {
  51. return this->module.load();
  52. }
  53. double FontModule::getSize()
  54. {
  55. return this->size.load();
  56. }
  57. int FontModule::getStyle()
  58. {
  59. return this->style.load();
  60. }
  61. void FontModule::setStyle(int style)
  62. {
  63. this->style.store(style);
  64. TTF_SetFontStyle(this->font.get(), this->style.load());
  65. }