XPlor/libs/iwifile/iwifile.h
2025-09-07 12:36:08 -04:00

66 lines
1.1 KiB
C++

#ifndef IWIFILE_H
#define IWIFILE_H
#include <QFile>
#include <QByteArray>
#include <QDataStream>
#include <QtEndian>
#include <QVector>
#include <QDebug>
#include <QDir>
#include "ddsfile.h"
// Supported versions
static const QVector<quint8> supportedVersions = {
0x05, // CoD2
0x06, // CoD4, CoD5
0x08, // CoDMW2, CoDMW3
0x0D, // CoDBO1
0x1B // CoDBO2
};
struct IWIHeader {
char Magic[3];
quint8 Version;
bool isSupported() const;
};
struct IWIInfo {
quint8 Format;
quint8 Usage;
quint32 Width;
quint32 Height;
quint32 Depth;
};
struct IWIMipmap {
qint32 offset;
qint32 size;
QByteArray data;
};
class IWIFile {
public:
QString fileStem;
IWIHeader header;
IWIInfo info;
QVector<IWIMipmap> mipmaps;
IWIFile();
IWIFile(const QString &aFilePath);
IWIFile(const DDSFile &aDDSFile);
IWIFile(const IWIFile &iwiFile);
IWIFile& operator=(const IWIFile& other);
~IWIFile();
bool SaveIWI() const;
bool SaveDDS() const;
bool SavePNG() const;
bool SaveJPG() const;
void SetupExportDirs() const;
};
#endif // IWIFILE_H