ddsloader.h File Reference

Go to the documentation of this file. Source: include/ffw/media/ddsloader.h

/* This file is part of FineFramework project */
#ifndef FFW_MEDIA_DDS_LOADER
#define FFW_MEDIA_DDS_LOADER
#include "imageloader.h"
#include <fstream>

namespace ffw {
    class FFW_API DdsLoader: public ImageReader {
    public:
        DdsLoader(const std::string& path);
        DdsLoader(const DdsLoader& other) = delete;
        DdsLoader(DdsLoader&& other);
        void swap(DdsLoader& other);
        DdsLoader& operator = (const DdsLoader& other) = delete;
        DdsLoader& operator = (DdsLoader&& other);
        virtual ~DdsLoader();

        size_t readRow(void* dest) override;
        bool getMipMap(int level) override;
        bool getCubemap(int side);
        void close() override;

        inline bool isCubemap() const {
            return iscubemap;
        }
        inline int getCubemapOffset() const {
            return cubemapOffset;
        }
    private:
        void open(const std::string& path);

        ffw::SwapWrapper<std::fstream> input;
        size_t pixelsOffset;
        bool invertBits;
        bool swaprgb;
        bool iscubemap;
        int cubemapOffset;
    };
}

inline void swap(ffw::DdsLoader& first, ffw::DdsLoader& second){
    first.swap(second);
}

#endif