#ifndef GFXIMAGE_H
#define GFXIMAGE_H

#include "material.h"

struct GfxImageLoadDef;
struct GfxTexture
{
    qint32 baseMapPtr;
    D3DBaseTexture *baseMap;

    qint32 mapPtr;
    D3DTexture *map;

    qint32 volMapPtr;
    D3DVolumeTexture *volMap;

    qint32 cubeMapPtr;
    D3DCubeTexture *cubeMap;

    qint32 loadDefPtr;
    GfxImageLoadDef *loadDef;
};

struct GfxImageLoadDef
{
    quint8 levelCount;
    quint8 flags;
    quint16 dimensions[3];
    int format;
    GfxTexture texture;
};

struct CardMemory
{
    int platform[1];
};

struct GfxImage
{
    MapType mapType;
    GfxTexture texture;
    quint8 semantic;
    CardMemory cardMemory;
    quint16 width;
    quint16 height;
    quint16 depth;
    quint8 category;
    bool delayLoadPixels;

    qint32 pixelsPtr;
    quint8 *pixels;

    unsigned int baseSize;
    quint16 streamSlot;
    bool streaming;

    qint32 namePtr;
    QString name;
};

#endif // GFXIMAGE_H
