diff --git a/include/hyprgraphics/resource/resources/ImageResource.hpp b/include/hyprgraphics/resource/resources/ImageResource.hpp index fc27dab..a00d5cc 100644 --- a/include/hyprgraphics/resource/resources/ImageResource.hpp +++ b/include/hyprgraphics/resource/resources/ImageResource.hpp @@ -18,17 +18,13 @@ namespace Hyprgraphics { }; CImageResource(const std::string& path); - CImageResource(const std::span data, eImageFormat format); CImageResource(const std::string& svg, const Hyprutils::Math::Vector2D& size); virtual ~CImageResource() = default; virtual void render(); private: - std::string m_path; - Hyprutils::Math::Vector2D m_svgSize; - - const std::span m_data; - const eImageFormat m_format = eImageFormat::IMAGE_FORMAT_PNG; + std::string m_path; + Hyprutils::Math::Vector2D m_svgSize; }; }; diff --git a/include/hyprgraphics/resource/resources/StaticImageResource.hpp b/include/hyprgraphics/resource/resources/StaticImageResource.hpp new file mode 100644 index 0000000..e6b57ec --- /dev/null +++ b/include/hyprgraphics/resource/resources/StaticImageResource.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "AsyncResource.hpp" +#include "../../color/Color.hpp" +#include "hyprgraphics/image/Image.hpp" + +#include + +#include + +namespace Hyprgraphics { + class CStaticImageResource : public IAsyncResource { + public: + enum eTextAlignmentMode : uint8_t { + TEXT_ALIGN_LEFT = 0, + TEXT_ALIGN_CENTER, + TEXT_ALIGN_RIGHT, + }; + + CStaticImageResource(const std::span data, eImageFormat format); + virtual ~CStaticImageResource() = default; + + virtual void render(); + + private: + const std::span m_data; + const eImageFormat m_format = eImageFormat::IMAGE_FORMAT_PNG; + }; +}; diff --git a/src/resource/resources/ImageResource.cpp b/src/resource/resources/ImageResource.cpp index c764b45..d82b6f4 100644 --- a/src/resource/resources/ImageResource.cpp +++ b/src/resource/resources/ImageResource.cpp @@ -13,16 +13,12 @@ CImageResource::CImageResource(const std::string& path) : m_path(path) { ; } -CImageResource::CImageResource(const std::span data, eImageFormat format) : m_data(data), m_format(format) { - ; -} - CImageResource::CImageResource(const std::string& svg, const Hyprutils::Math::Vector2D& size) : m_path(svg), m_svgSize(size) { ; } void CImageResource::render() { - auto image = m_data.size() > 0 ? CImage(m_data, m_format) : CImage(m_path, m_svgSize); + auto image = CImage(m_path, m_svgSize); m_asset.cairoSurface = image.cairoSurface(); m_asset.pixelSize = m_asset.cairoSurface && m_asset.cairoSurface->cairo() ? m_asset.cairoSurface->size() : Hyprutils::Math::Vector2D{}; diff --git a/src/resource/resources/StaticImageResource.cpp b/src/resource/resources/StaticImageResource.cpp new file mode 100644 index 0000000..6771181 --- /dev/null +++ b/src/resource/resources/StaticImageResource.cpp @@ -0,0 +1,21 @@ +#include +#include +#include +#include + +#include +#include + +using namespace Hyprgraphics; +using namespace Hyprutils::Memory; + +CStaticImageResource::CStaticImageResource(const std::span data, eImageFormat format) : m_data(data), m_format(format) { + ; +} + +void CStaticImageResource::render() { + auto image = CImage(m_data, m_format); + + m_asset.cairoSurface = image.cairoSurface(); + m_asset.pixelSize = m_asset.cairoSurface && m_asset.cairoSurface->cairo() ? m_asset.cairoSurface->size() : Hyprutils::Math::Vector2D{}; +}