XPlor/libs/iwifile/iwifile.h

66 lines
1.1 KiB
C
Raw Permalink Normal View History

2025-02-08 19:58:54 -05:00
#ifndef IWIFILE_H
#define IWIFILE_H
#include <QFile>
#include <QByteArray>
#include <QDataStream>
#include <QtEndian>
#include <QVector>
#include <QDebug>
#include <QDir>
2025-09-05 18:35:17 -04:00
#include "ddsfile.h"
2025-02-08 19:58:54 -05:00
// 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;
2025-09-07 12:36:08 -04:00
quint32 Width;
quint32 Height;
quint32 Depth;
2025-02-08 19:58:54 -05:00
};
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);
2025-09-05 18:35:17 -04:00
IWIFile(const DDSFile &aDDSFile);
2025-02-08 19:58:54 -05:00
IWIFile(const IWIFile &iwiFile);
IWIFile& operator=(const IWIFile& other);
~IWIFile();
2025-09-05 18:35:17 -04:00
bool SaveIWI() const;
bool SaveDDS() const;
bool SavePNG() const;
bool SaveJPG() const;
void SetupExportDirs() const;
2025-02-08 19:58:54 -05:00
};
#endif // IWIFILE_H