CImage.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. CObject (visible, id, std::move(name), Type, origin, scale, angles),
  19. m_size (size),
  20. m_material (material),
  21. m_alignment (std::move(alignment)),
  22. m_color (color),
  23. m_alpha (alpha)
  24. {
  25. }
  26. WallpaperEngine::Core::CObject* CImage::fromJSON (
  27. json data,
  28. CContainer* container,
  29. bool visible,
  30. uint32_t id,
  31. std::string name,
  32. const glm::vec3& origin,
  33. const glm::vec3& scale,
  34. const glm::vec3& angles)
  35. {
  36. auto image_it = data.find ("image");
  37. auto size_val = jsonFindDefault <std::string> (data, "size", "0.0 0.0"); // this one might need some adjustment
  38. auto alignment = jsonFindDefault <std::string> (data, "alignment", "center");
  39. auto alpha = jsonFindDefault <float> (data, "alpha", 1.0);
  40. auto color_val = jsonFindDefault <std::string> (data, "color", "1.0 1.0 1.0");
  41. json content = json::parse (WallpaperEngine::FileSystem::loadFullFile ((*image_it).get <std::string> (), container));
  42. auto material_it = jsonFindRequired (content, "material", "Image must have a material");
  43. return new CImage (
  44. Images::CMaterial::fromFile ((*material_it).get <std::string> (), container),
  45. visible,
  46. id,
  47. name,
  48. origin,
  49. scale,
  50. angles,
  51. WallpaperEngine::Core::aToVector2 (size_val),
  52. alignment,
  53. WallpaperEngine::Core::aToVector3 (color_val),
  54. alpha
  55. );
  56. }
  57. const Images::CMaterial* CImage::getMaterial () const
  58. {
  59. return this->m_material;
  60. }
  61. const glm::vec2& CImage::getSize () const
  62. {
  63. return this->m_size;
  64. }
  65. const std::string& CImage::getAlignment () const
  66. {
  67. return this->m_alignment;
  68. }
  69. const float CImage::getAlpha () const
  70. {
  71. return this->m_alpha;
  72. }
  73. const glm::vec3& CImage::getColor () const
  74. {
  75. return this->m_color;
  76. }
  77. const std::string CImage::Type = "image";