#pragma once #include #include #include namespace NXKit { class UIImage { public: UIImage(const std::shared_ptr& cgImage, NXFloat scale); static std::shared_ptr fromPath(const std::string& path, NXFloat scale = SkiaCtx::main()->getScaleFactor()); static std::shared_ptr fromRes(const std::string& path, NXFloat scale = SkiaCtx::main()->getScaleFactor()); static std::shared_ptr fromData(const std::shared_ptr& data, NXFloat scale = SkiaCtx::main()->getScaleFactor()); [[nodiscard]] std::shared_ptr cgImage() const { return _cgImage; } [[nodiscard]] NXSize size() const { return _size / _scale; } [[nodiscard]] NXFloat scale() const { return _scale; } void setRenderModeAsTemplate(bool isTemplate) { _isTemplate = isTemplate; } private: friend class UIImageView; bool _isTemplate = false; std::shared_ptr _cgImage; NXSize _size; NXFloat _scale; }; }