Program Listing for File image_resource_file.h

Return to documentation for file (rootex/core/resource_files/image_resource_file.h)

#pragma once

#include "resource_file.h"
#include "renderer/texture.h"

class ImageResourceFile : public ResourceFile
{
    Ref<GPUTexture> m_GPUImageTexture;
    Ref<CPUTexture> m_CPUImageTexture;
    bool m_IsCPUAccess;

    explicit ImageResourceFile(const FilePath& path, bool cpuAccess = false);

    void loadCPUTexture();

    friend class ResourceLoader;

public:
    explicit ImageResourceFile(const ImageResourceFile&) = delete;
    explicit ImageResourceFile(const ImageResourceFile&&) = delete;
    ~ImageResourceFile() = default;

    void reimport() override;

    const Ref<GPUTexture> getGPUTexture() { return m_GPUImageTexture; }
    const Ref<CPUTexture> getCPUTexture() { return m_CPUImageTexture; }

    unsigned int getWidth() const { return m_GPUImageTexture->getWidth(); }
    unsigned int getHeight() const { return m_GPUImageTexture->getHeight(); }

    void setCPUAccess(bool cpuAccess);
    bool isCPUAccess() { return m_IsCPUAccess; };

    void uploadCPUTexturetoGPU();
};