tools/hwmap2txt/hwmapconverter/mainwindow.cpp
changeset 11015 7a905f0070ce
parent 10936 104727dfaa1b
--- a/tools/hwmap2txt/hwmapconverter/mainwindow.cpp	Wed Jul 15 00:27:12 2015 +0200
+++ b/tools/hwmap2txt/hwmapconverter/mainwindow.cpp	Thu Jul 16 08:39:35 2015 -0400
@@ -1,137 +1,137 @@
-#include <QByteArray>
-#include <QFile>
-#include <QFileDialog>
-#include <QtEndian>
-#include <QRegExp>
-
-#include "mainwindow.h"
-#include "ui_mainwindow.h"
-
-MainWindow::MainWindow(QWidget *parent) :
-    QMainWindow(parent),
-    ui(new Ui::MainWindow)
-{
-    ui->setupUi(this);
-}
-
-MainWindow::~MainWindow()
-{
-    delete ui;
-}
-
-void MainWindow::on_pbLoad_clicked()
-{
-    QString fileName = QFileDialog::getOpenFileName(this, QString(), QString(), "Hedgewars drawn maps (*.hwmap);;All files (*.*)");
-
-    if(!fileName.isEmpty())
-    {
-        QFile f(fileName);
-
-        if(f.open(QFile::ReadOnly))
-        {
-            QByteArray data = qUncompress(QByteArray::fromBase64(f.readAll()));
-
-            QStringList decoded;
-
-            bool isSpecial = true;
-            while(data.size() >= 5)
-            {
-                qint16 px = qFromBigEndian(*(qint16 *)data.data());
-                data.remove(0, 2);
-                qint16 py = qFromBigEndian(*(qint16 *)data.data());
-                data.remove(0, 2);
-                quint8 flags = *(quint8 *)data.data();
-                data.remove(0, 1);
-
-                if(flags & 0x80)
-                {
-                    if(isSpecial && !decoded.isEmpty())
-                        decoded << "// drawings";
-
-                    isSpecial = false;
-
-                    quint8 penWidth = flags & 0x3f;
-                    bool isErasing = flags & 0x40;
-                    decoded << QString("%1 %2 %3 %4")
-                               .arg(px, 5).arg(py, 6)
-                               .arg(isErasing ? "e" : "s")
-                               .arg(penWidth, 2);
-                } else
-                    if(isSpecial)
-                    {
-                        if(decoded.isEmpty())
-                            decoded << "// special points (these are always before all drawings!)";
-
-                        decoded << QString("%1 %2 %3")
-                                   .arg(px, 5).arg(py, 6)
-                                   .arg(flags);
-                    } else
-                    {
-                        decoded << QString("%1 %2")
-                                   .arg(px, 5).arg(py, 6);
-                    }
-            }
-
-            ui->textEdit->setPlainText(decoded.join("\n"));
-            ui->statusBar->showMessage("Load OK");
-        } else
-            ui->statusBar->showMessage(QString("Can't open file %1").arg(fileName));
-    }
-}
-
-void MainWindow::on_pbSave_clicked()
-{
-    QRegExp rxSP("^\\s*(-?\\d+)\\s*(-?\\d+)\\s*(\\d+)\\s*$");
-    QRegExp rxLS("^\\s*(-?\\d+)\\s*(-?\\d+)\\s*([es])\\s*(\\d+)\\s*$");
-    QRegExp rxP("^\\s*(-?\\d+)\\s*(-?\\d+)\\s*$");
-
-    QString fileName = QFileDialog::getSaveFileName(this, QString(), QString(), "Hedgewars drawn maps (*.hwmap);;All files (*.*)");
-
-    QFile file(fileName);
-    if(file.open(QFile::WriteOnly))
-    {
-        QByteArray b;
-        QStringList sl = ui->textEdit->toPlainText().split('\n');
-        bool isSpecial = true;
-
-        foreach(const QString & line, sl)
-            if(!line.startsWith("//"))
-            {
-                if(rxLS.indexIn(line) != -1)
-                {
-                    isSpecial = false;
-                    qint16 px = qToBigEndian((qint16)rxLS.cap(1).toInt());
-                    qint16 py = qToBigEndian((qint16)rxLS.cap(2).toInt());
-                    quint8 flags = 0x80;
-                    if(rxLS.cap(3) == "e") flags |= 0x40;
-                    flags = flags + rxLS.cap(4).toUInt();
-                    b.append((const char *)&px, 2);
-                    b.append((const char *)&py, 2);
-                    b.append((const char *)&flags, 1);
-                } else
-                if(isSpecial && (rxSP.indexIn(line) != -1))
-                {
-                    qint16 px = qToBigEndian((qint16)rxSP.cap(1).toInt());
-                    qint16 py = qToBigEndian((qint16)rxSP.cap(2).toInt());
-                    quint8 flags = rxSP.cap(3).toUInt();
-
-                    b.append((const char *)&px, 2);
-                    b.append((const char *)&py, 2);
-                    b.append((const char *)&flags, 1);
-                } else
-                if(rxP.indexIn(line) != -1)
-                {
-                    isSpecial = false;
-                    qint16 px = qToBigEndian((qint16)rxP.cap(1).toInt());
-                    qint16 py = qToBigEndian((qint16)rxP.cap(2).toInt());
-                    quint8 flags = 0;
-                    b.append((const char *)&px, 2);
-                    b.append((const char *)&py, 2);
-                    b.append((const char *)&flags, 1);
-                } else
-                    ui->statusBar->showMessage(QString("Can't parse or misplaced special point: %1").arg(line));
-            }
-
-        file.write(qCompress(b).toBase64());
-    }
-}
+#include <QByteArray>
+#include <QFile>
+#include <QFileDialog>
+#include <QtEndian>
+#include <QRegExp>
+
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+MainWindow::MainWindow(QWidget *parent) :
+    QMainWindow(parent),
+    ui(new Ui::MainWindow)
+{
+    ui->setupUi(this);
+}
+
+MainWindow::~MainWindow()
+{
+    delete ui;
+}
+
+void MainWindow::on_pbLoad_clicked()
+{
+    QString fileName = QFileDialog::getOpenFileName(this, QString(), QString(), "Hedgewars drawn maps (*.hwmap);;All files (*.*)");
+
+    if(!fileName.isEmpty())
+    {
+        QFile f(fileName);
+
+        if(f.open(QFile::ReadOnly))
+        {
+            QByteArray data = qUncompress(QByteArray::fromBase64(f.readAll()));
+
+            QStringList decoded;
+
+            bool isSpecial = true;
+            while(data.size() >= 5)
+            {
+                qint16 px = qFromBigEndian(*(qint16 *)data.data());
+                data.remove(0, 2);
+                qint16 py = qFromBigEndian(*(qint16 *)data.data());
+                data.remove(0, 2);
+                quint8 flags = *(quint8 *)data.data();
+                data.remove(0, 1);
+
+                if(flags & 0x80)
+                {
+                    if(isSpecial && !decoded.isEmpty())
+                        decoded << "// drawings";
+
+                    isSpecial = false;
+
+                    quint8 penWidth = flags & 0x3f;
+                    bool isErasing = flags & 0x40;
+                    decoded << QString("%1 %2 %3 %4")
+                               .arg(px, 5).arg(py, 6)
+                               .arg(isErasing ? "e" : "s")
+                               .arg(penWidth, 2);
+                } else
+                    if(isSpecial)
+                    {
+                        if(decoded.isEmpty())
+                            decoded << "// special points (these are always before all drawings!)";
+
+                        decoded << QString("%1 %2 %3")
+                                   .arg(px, 5).arg(py, 6)
+                                   .arg(flags);
+                    } else
+                    {
+                        decoded << QString("%1 %2")
+                                   .arg(px, 5).arg(py, 6);
+                    }
+            }
+
+            ui->textEdit->setPlainText(decoded.join("\n"));
+            ui->statusBar->showMessage("Load OK");
+        } else
+            ui->statusBar->showMessage(QString("Can't open file %1").arg(fileName));
+    }
+}
+
+void MainWindow::on_pbSave_clicked()
+{
+    QRegExp rxSP("^\\s*(-?\\d+)\\s*(-?\\d+)\\s*(\\d+)\\s*$");
+    QRegExp rxLS("^\\s*(-?\\d+)\\s*(-?\\d+)\\s*([es])\\s*(\\d+)\\s*$");
+    QRegExp rxP("^\\s*(-?\\d+)\\s*(-?\\d+)\\s*$");
+
+    QString fileName = QFileDialog::getSaveFileName(this, QString(), QString(), "Hedgewars drawn maps (*.hwmap);;All files (*.*)");
+
+    QFile file(fileName);
+    if(file.open(QFile::WriteOnly))
+    {
+        QByteArray b;
+        QStringList sl = ui->textEdit->toPlainText().split('\n');
+        bool isSpecial = true;
+
+        foreach(const QString & line, sl)
+            if(!line.startsWith("//"))
+            {
+                if(rxLS.indexIn(line) != -1)
+                {
+                    isSpecial = false;
+                    qint16 px = qToBigEndian((qint16)rxLS.cap(1).toInt());
+                    qint16 py = qToBigEndian((qint16)rxLS.cap(2).toInt());
+                    quint8 flags = 0x80;
+                    if(rxLS.cap(3) == "e") flags |= 0x40;
+                    flags = flags + rxLS.cap(4).toUInt();
+                    b.append((const char *)&px, 2);
+                    b.append((const char *)&py, 2);
+                    b.append((const char *)&flags, 1);
+                } else
+                if(isSpecial && (rxSP.indexIn(line) != -1))
+                {
+                    qint16 px = qToBigEndian((qint16)rxSP.cap(1).toInt());
+                    qint16 py = qToBigEndian((qint16)rxSP.cap(2).toInt());
+                    quint8 flags = rxSP.cap(3).toUInt();
+
+                    b.append((const char *)&px, 2);
+                    b.append((const char *)&py, 2);
+                    b.append((const char *)&flags, 1);
+                } else
+                if(rxP.indexIn(line) != -1)
+                {
+                    isSpecial = false;
+                    qint16 px = qToBigEndian((qint16)rxP.cap(1).toInt());
+                    qint16 py = qToBigEndian((qint16)rxP.cap(2).toInt());
+                    quint8 flags = 0;
+                    b.append((const char *)&px, 2);
+                    b.append((const char *)&py, 2);
+                    b.append((const char *)&flags, 1);
+                } else
+                    ui->statusBar->showMessage(QString("Can't parse or misplaced special point: %1").arg(line));
+            }
+
+        file.write(qCompress(b).toBase64());
+    }
+}