Program Listing for File Tex2D.hpp

Return to documentation for file (engine/include/Cacao/Tex2D.hpp)

#pragma once

#include "DllHelper.hpp"
#include "Asset.hpp"

#include "libcacaoimage.hpp"

#include <memory>

namespace Cacao {
    class CACAO_API Tex2D final : public Asset {
      public:
        static std::shared_ptr<Tex2D> Create(libcacaoimage::Image&& imageBuffer, const std::string& addr) {
            return std::shared_ptr<Tex2D>(new Tex2D(std::move(imageBuffer), addr));
        }

        Tex2D(const Tex2D&) = delete;
        Tex2D(Tex2D&&);
        Tex2D& operator=(const Tex2D&) = delete;
        Tex2D& operator=(Tex2D&&);

        void Realize();

        std::shared_future<void> RealizeAsync();

        void DropRealized();

        class Impl;

        ~Tex2D();

      private:
        Tex2D(libcacaoimage::Image&& imageBuffer, const std::string& addr);
        friend class PAL;
        friend class ResourceManager;

        std::unique_ptr<Impl> impl;
        friend class ImplAccessor;
    };
}