| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "CImage.h"
- #include <utility>
- #include "WallpaperEngine/Core/Objects/Images/CMaterial.h"
- #include "WallpaperEngine/FileSystem/FileSystem.h"
- using namespace WallpaperEngine::Core::Objects;
- CImage::CImage (
- Images::CMaterial* material,
- bool visible,
- uint32_t id,
- std::string name,
- const glm::vec3& origin,
- const glm::vec3& scale,
- const glm::vec3& angles,
- const glm::vec2& size,
- std::string alignment,
- const glm::vec3& color,
- float alpha) :
- CObject (visible, id, std::move(name), Type, origin, scale, angles),
- m_size (size),
- m_material (material),
- m_alignment (std::move(alignment)),
- m_color (color),
- m_alpha (alpha)
- {
- }
- WallpaperEngine::Core::CObject* CImage::fromJSON (
- json data,
- CContainer* container,
- bool visible,
- uint32_t id,
- std::string name,
- const glm::vec3& origin,
- const glm::vec3& scale,
- const glm::vec3& angles)
- {
- auto image_it = data.find ("image");
- auto size_val = jsonFindDefault <std::string> (data, "size", "0.0 0.0"); // this one might need some adjustment
- auto alignment = jsonFindDefault <std::string> (data, "alignment", "center");
- auto alpha = jsonFindDefault <float> (data, "alpha", 1.0);
- auto color_val = jsonFindDefault <std::string> (data, "color", "1.0 1.0 1.0");
- json content = json::parse (WallpaperEngine::FileSystem::loadFullFile ((*image_it).get <std::string> (), container));
- auto material_it = jsonFindRequired (content, "material", "Image must have a material");
- return new CImage (
- Images::CMaterial::fromFile ((*material_it).get <std::string> (), container),
- visible,
- id,
- name,
- origin,
- scale,
- angles,
- WallpaperEngine::Core::aToVector2 (size_val),
- alignment,
- WallpaperEngine::Core::aToVector3 (color_val),
- alpha
- );
- }
- const Images::CMaterial* CImage::getMaterial () const
- {
- return this->m_material;
- }
- const glm::vec2& CImage::getSize () const
- {
- return this->m_size;
- }
- const std::string& CImage::getAlignment () const
- {
- return this->m_alignment;
- }
- const float CImage::getAlpha () const
- {
- return this->m_alpha;
- }
- const glm::vec3& CImage::getColor () const
- {
- return this->m_color;
- }
- const std::string CImage::Type = "image";
|