CImage.cpp 1.9 KB

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