warzone2100/tools/qwzm/qwzm.h

116 lines
2.9 KiB
C++

/*
Copyright (C) 2008 by Warzone Resurrection Team
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
#ifndef QWZM_H
#define QWZM_H
#include "ui_qwzm.h"
extern "C"
{
#include "wzmutils.h"
}
#include <stdint.h>
#include <ctype.h>
#include <errno.h>
#include <math.h>
#include <QtCore/QFileInfo>
#include <QtGui/QComboBox>
#include <QtGui/QLabel>
#include <QtGui/QSlider>
#include <QtGui/QStandardItemModel>
class QWzmViewer : public QMainWindow
{
Q_OBJECT
public:
QWzmViewer(QWidget *parent = 0);
~QWzmViewer();
protected:
void closeEvent(QCloseEvent *event);
MODEL *load3DS(QString input);
MODEL *loadPIE(QString input);
/** PIE Export Method.
*
* @brief Function that saves a WZM Model to a file in the PIE format.
*
* @note Data may be lost in the conversion, especially
* if exporting to PIE version 2.
*
* @param Name of file to serialised to.
* @param Pointer to WZM data structure to be serialised.
* @param PIE version to export to.
* @note Currently only PIE version 2 and 3 are implemented.
* @param PIE flags to set.
* @return Returns 0 on success, -1 on failure.
* @author Safety0ff
*/
int savePIE(const char *filename, const MODEL *psModel, int pieVersion, int type);
void setModel(const QFileInfo &texPath);
protected slots:
void actionOpen();
void actionSaveAs();
void actionSave();
void open3DS();
void actionAboutApplication();
void toggleWireframe();
void toggleCulling();
void setTeam(int index);
void tick();
void toggleAnimation();
void toggleScale();
void toggleSwapYZ();
void toggleReverseWinding();
void toggleFlipVerticalTexCoords();
void setMesh(int index);
void toggleEditAnimation(bool show);
void toggleEditConnectors(bool show);
void animLock();
void animUnlock();
void setVisibleMesh(int index);
void rowsChanged(const QModelIndex &parent, int start, int end);
void dataChanged(const QModelIndex &first, const QModelIndex &last);
void reloadFrames();
void prependFrame();
void appendFrame();
void removeFrame();
private:
Ui::MainWindow *ui;
MODEL *psModel;
QString filename;
QStandardItemModel animationModel;
QStandardItemModel connectorsModel;
QComboBox *selectedMeshComboBox;
QComboBox *visibleMeshComboBox;
QComboBox *teamComboBox;
QSlider *scaleSlider;
QLabel *fileNameLabel;
QTimer *timer;
};
#endif