CImage.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "CImage.h"
  2. #include <utility>
  3. #include "WallpaperEngine/Core/Objects/Images/CMaterial.h"
  4. #include "WallpaperEngine/FileSystem/FileSystem.h"
  5. using namespace WallpaperEngine::Core::Objects;
  6. CImage::CImage (
  7. Images::CMaterial* material,
  8. bool visible,
  9. uint32_t id,
  10. std::string name,
  11. const glm::vec3& origin,
  12. const glm::vec3& scale,
  13. const glm::vec3& angles,
  14. const glm::vec2& size,
  15. std::string alignment,
  16. const glm::vec3& color,
  17. float alpha,
  18. float brightness) :
  19. CObject (visible, id, std::move(name), Type, origin, scale, angles),
  20. m_size (size),
  21. m_material (material),
  22. m_alignment (std::move(alignment)),
  23. m_color (color),
  24. m_alpha (alpha),
  25. m_brightness (brightness)
  26. {
  27. }
  28. WallpaperEngine::Core::CObject* CImage::fromJSON (
  29. json data,
  30. CContainer* container,
  31. bool visible,
  32. uint32_t id,
  33. std::string name,
  34. const glm::vec3& origin,
  35. const glm::vec3& scale,
  36. const glm::vec3& angles)
  37. {
  38. auto image_it = data.find ("image");
  39. auto size_val = jsonFindDefault <std::string> (data, "size", "0.0 0.0"); // this one might need some adjustment
  40. auto alignment = jsonFindDefault <std::string> (data, "alignment", "center");
  41. auto alpha = jsonFindDefault <float> (data, "alpha", 1.0);
  42. auto color_val = jsonFindDefault <std::string> (data, "color", "1.0 1.0 1.0");
  43. auto brightness_val = jsonFindDefault <float> (data, "brightness", 1.0);
  44. json content = json::parse (WallpaperEngine::FileSystem::loadFullFile ((*image_it).get <std::string> (), container));
  45. auto material_it = jsonFindRequired (content, "material", "Image must have a material");
  46. return new CImage (
  47. Images::CMaterial::fromFile ((*material_it).get <std::string> (), container),
  48. visible,
  49. id,
  50. name,
  51. origin,
  52. scale,
  53. angles,
  54. WallpaperEngine::Core::aToVector2 (size_val),
  55. alignment,
  56. WallpaperEngine::Core::aToVector3 (color_val),
  57. alpha,
  58. brightness_val
  59. );
  60. }
  61. const Images::CMaterial* CImage::getMaterial () const
  62. {
  63. return this->m_material;
  64. }
  65. const glm::vec2& CImage::getSize () const
  66. {
  67. return this->m_size;
  68. }
  69. const std::string& CImage::getAlignment () const
  70. {
  71. return this->m_alignment;
  72. }
  73. const float CImage::getAlpha () const
  74. {
  75. return this->m_alpha;
  76. }
  77. const glm::vec3& CImage::getColor () const
  78. {
  79. return this->m_color;
  80. }
  81. const float CImage::getBrightness () const
  82. {
  83. return this->m_brightness;
  84. }
  85. const std::string CImage::Type = "image";