diff --git a/gta5sync b/gta5sync deleted file mode 160000 index 15fd356..0000000 --- a/gta5sync +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 15fd35642534a3f46046a5cc2bf27f41e77b14f5 diff --git a/gta5view b/gta5view new file mode 160000 index 0000000..12f8430 --- /dev/null +++ b/gta5view @@ -0,0 +1 @@ +Subproject commit 12f8430f343b80ad1be717c587329686720f6725 diff --git a/gta5view-cmd.pro b/gta5view-cmd.pro index cc070ee..a513bd1 100644 --- a/gta5view-cmd.pro +++ b/gta5view-cmd.pro @@ -1,6 +1,6 @@ #/***************************************************************************** #* gta5view-cmd - gta5view Command Line -#* Copyright (C) 2017 Syping +#* Copyright (C) 2017-2018 Syping #* #* This program is free software: you can redistribute it and/or modify #* it under the terms of the GNU General Public License as published by @@ -25,42 +25,21 @@ TEMPLATE = app CONFIG += console SOURCES += main.cpp \ - gta5sync/SnapmaticPicture.cpp \ - gta5sync/StringParser.cpp + gta5view/SnapmaticPicture.cpp \ + gta5view/StringParser.cpp HEADERS += \ - gta5sync/SnapmaticPicture.h \ - gta5sync/StringParser.h + gta5view/SnapmaticPicture.h \ + gta5view/StringParser.h -INCLUDEPATH += ./gta5sync +INCLUDEPATH += ./gta5view # WINDOWS ONLY win32: DEFINES += GTA5SYNC_WIN # win32: RC_FILE += res/app.rc -win32: LIBS += -luser32 win32: CONFIG -= embed_manifest_exe -# QT4 ONLY STUFF - -isEqual(QT_MAJOR_VERSION, 4): INCLUDEPATH += ./gta5sync/qjson4 -isEqual(QT_MAJOR_VERSION, 4): HEADERS += gta5sync/qjson4/QJsonArray.h \ - gta5sync/qjson4/QJsonDocument.h \ - gta5sync/qjson4/QJsonObject.h \ - gta5sync/qjson4/QJsonParseError.h \ - gta5sync/qjson4/QJsonValue.h \ - gta5sync/qjson4/QJsonValueRef.h \ - gta5sync/qjson4/QJsonParser.h \ - gta5sync/qjson4/QJsonRoot.h - -isEqual(QT_MAJOR_VERSION, 4): SOURCES += gta5sync/qjson4/QJsonArray.cpp \ - gta5sync/qjson4/QJsonDocument.cpp \ - gta5sync/qjson4/QJsonObject.cpp \ - gta5sync/qjson4/QJsonParseError.cpp \ - gta5sync/qjson4/QJsonValue.cpp \ - gta5sync/qjson4/QJsonValueRef.cpp \ - gta5sync/qjson4/QJsonParser.cpp - RESOURCES += \ res.qrc diff --git a/main.cpp b/main.cpp index 91ded20..0e53533 100644 --- a/main.cpp +++ b/main.cpp @@ -1,463 +1,463 @@ -/***************************************************************************** -* gta5view-cmd - gta5view Command Line -* Copyright (C) 2017 Syping -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU 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 General Public License -* along with this program. If not, see . -*****************************************************************************/ - -#include "SnapmaticPicture.h" -#include -#include -#include -#include -#include -#include - -#include -using namespace std; - -int main(int argc, char *argv[]) -{ - QCoreApplication a(argc, argv); - QStringList args = a.arguments(); - - if (args.length() >= 3) - { - QString format = "jpg"; - bool isDefault = true; - bool avatarMode = false; - bool convertToGTA = false; - bool customFormat = false; - bool formatSwitch = false; - bool keepAspectRatio = true; - QMap flags; - - if (args.length() >= 4) - { - if (args.at(3) == "-pgta") - { - convertToGTA = true; - customFormat = false; - } - else if (args.at(3) == "-g5e") - { - convertToGTA = true; - customFormat = true; - } - else if (args.at(3) == "-jpg") - { - format = "jpg"; - convertToGTA = false; - } - } - if (args.length() >= 5) - { - if (args.at(4) == "-a") - { - isDefault = false; - avatarMode = true; - } - else if (args.at(4) == "-p") - { - isDefault = false; - avatarMode = false; - } - else if (args.at(4) == "-d") - { - isDefault = true; - } - else if (args.at(4) == "-aiar") - { - isDefault = false; - avatarMode = true; - keepAspectRatio = false; - } - else if (args.at(4) == "-akar") - { - isDefault = false; - avatarMode = true; - keepAspectRatio = true; - } - else if (args.at(4) == "-piar") - { - isDefault = false; - avatarMode = false; - keepAspectRatio = false; - } - else if (args.at(4) == "-pkar") - { - isDefault = false; - avatarMode = false; - keepAspectRatio = true; - } - else if (args.at(4) == "-diar") - { - isDefault = true; - keepAspectRatio = false; - } - else if (args.at(4) == "-dkar") - { - isDefault = true; - keepAspectRatio = true; - } - else if (args.at(4) == "-fs") - { - convertToGTA = false; - formatSwitch = true; - } - } - if (args.length() >= 6) - { - QStringList flagArgs(args); - for (int argId = 0; argId == 5; argId++) - { - flagArgs.removeAt(argId); - } - for (QString flagArg : flagArgs) - { - QStringList currentFlagArg = flagArg.split("="); - QString currentFlag = currentFlagArg.at(0).toLower(); - if (currentFlag.left(1) == "-") - { - currentFlag.remove(0, 1); - currentFlagArg.removeAt(0); - QString currentValue = currentFlagArg.join(QString()); - flags[currentFlag] = currentValue; - } - } - } - if (!convertToGTA) - { - SnapmaticPicture picture(args.at(1)); - if (picture.readingPicture(true, false, true)) - { - QString filePath = args.at(2); - if (!formatSwitch) - { - filePath.replace("", picture.getExportPictureFileName()); - filePath.replace("", ".jpg"); - if (!picture.exportPicture(filePath, SnapmaticFormat::JPEG_Format)) - { - cout << "gta5view-cmd: Exporting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; - return 1; - } - else - { - if (flags.value("output", QString()).toLower() == "exported_filename") - { - cout << filePath.toStdString().c_str() << endl; - } - else - { - cout << "gta5view-cmd: Exporting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; - } - } - } - else - { - filePath.replace("", picture.getPictureFileName()); - if (customFormat) - { - filePath.replace("", ".g5e"); - if (!picture.exportPicture(filePath, SnapmaticFormat::G5E_Format)) - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; - return 1; - } - else - { - if (flags.value("output", QString()).toLower() == "exported_filename") - { - cout << filePath.toStdString().c_str() << endl; - } - else - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; - } - } - } - else - { - filePath.replace("", ""); - if (!picture.exportPicture(filePath, SnapmaticFormat::PGTA_Format)) - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; - return 1; - } - else - { - if (flags.value("output", QString()).toLower() == "exported_filename") - { - cout << filePath.toStdString().c_str() << endl; - } - else - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; - } - } - } - } - } - else - { - cout << "gta5view-cmd: Reading of " << args.at(1).toStdString().c_str() << " is failed!" << endl; - return 1; - } - } - else - { - SnapmaticPicture picture(":/template.g5e"); - if (picture.readingPicture(true, false, true)) - { - QImage image; - QFile imageFile(args.at(1)); - if (!imageFile.open(QFile::ReadOnly)) - { - cout << "gta5view-cmd: Reading of " << args.at(1).toStdString().c_str() << " is failed!" << endl; - return 1; - } - QImageReader imageReader; - imageReader.setDecideFormatFromContent(true); - imageReader.setDevice(&imageFile); - if (!imageReader.read(&image)) - { - cout << "gta5view-cmd: Parsing of " << args.at(1).toStdString().c_str() << " is failed!" << endl; - return 1; - } - if (!image.isNull()) - { - QSize snapmaticRes(960, 536); - QSize avatarRes(470, 470); - int avatarZoneX = 145; - int avatarZoneY = 66; - - if (isDefault) - { - if (image.width() == image.height()) - { - avatarMode = true; - } - else - { - avatarMode = false; - } - } - if (!avatarMode) - { - QImage snapmaticImage(snapmaticRes, QImage::Format_RGB888); - snapmaticImage.fill(Qt::black); - QPainter snapmaticPainter(&snapmaticImage); - - // Picture mode - int diffWidth = 0; - int diffHeight = 0; - if (keepAspectRatio) - { - image = image.scaled(snapmaticRes, Qt::KeepAspectRatio, Qt::SmoothTransformation); - if (image.width() != snapmaticRes.width()) - { - diffWidth = snapmaticRes.width() - image.width(); - diffWidth = diffWidth / 2; - } - else if (image.height() != snapmaticRes.height()) - { - diffHeight = snapmaticRes.height() - image.height(); - diffHeight = diffHeight / 2; - } - } - else - { - image = image.scaled(snapmaticRes.width(), snapmaticRes.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - } - snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, image); - snapmaticPainter.end(); - image = snapmaticImage; - } - else - { - QImage snapmaticImage(snapmaticRes, QImage::Format_RGB888); - snapmaticImage.fill(Qt::black); - QPainter snapmaticPainter(&snapmaticImage); - - // Scale to Avatar Resolution if needed - if (image.width() != avatarRes.width()) - { - image.scaled(avatarRes, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - } - - // Avatar mode - int diffWidth = 0; - int diffHeight = 0; - if (keepAspectRatio) - { - image = image.scaled(avatarRes, Qt::KeepAspectRatio, Qt::SmoothTransformation); - if (image.width() > image.height()) - { - diffHeight = avatarRes.height() - image.height(); - diffHeight = diffHeight / 2; - } - else if (image.width() < image.height()) - { - diffWidth = avatarRes.width() - image.width(); - diffWidth = diffWidth / 2; - } - } - else - { - image = image.scaled(avatarRes, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - } - snapmaticPainter.drawImage(avatarZoneX + diffWidth, avatarZoneY + diffHeight, image); - snapmaticPainter.end(); - image = snapmaticImage; - } - - if (picture.setImage(image)) - { - int crew = 0; - QStringList players; - if (flags.contains("crew")) - { - bool crewValid; - int crewId = flags["crew"].toInt(&crewValid); - if (crewValid) - { - crew = crewId; - } - } - if (flags.contains("title") && SnapmaticPicture::verifyTitle(flags["title"])) - { - picture.setPictureTitle(flags["title"]); - } - else - { - avatarMode ? picture.setPictureTitle("Converted Avatar") : picture.setPictureTitle("Converted Picture"); - } - if (flags.contains("players")) - { - bool flagValid = true; - QString playerFlag = flags["players"]; - if (playerFlag.left(1) == "[" && playerFlag.right(1) == "]") - { - playerFlag.remove(0, 1); - playerFlag.remove(playerFlag.length() - 1, 1); - } - const QStringList playersList = playerFlag.split(","); - for (QString player : playersList) - { - if (player.left(1) == "\"" && player.right(1) == "\"") - { - player.remove(0, 1); - player.remove(player.length() - 1, 1); - } - bool playerValid; - player.toInt(&playerValid); - if (!playerValid) - { - flagValid = false; - } - } - if (flagValid) - { - players = playersList; - } - } - SnapmaticProperties pictureSP = picture.getSnapmaticProperties(); - pictureSP.uid = QString(QTime::currentTime().toString("HHmmss") + - QString::number(QDate::currentDate().dayOfYear())).toInt(); - pictureSP.createdDateTime = QDateTime::currentDateTime(); - pictureSP.createdTimestamp = pictureSP.createdDateTime.toTime_t(); - pictureSP.crewID = crew; - pictureSP.playersList = players; - picture.setSnapmaticProperties(pictureSP); - picture.setPictureFileName(QString("PGTA5%1").arg(QString::number(pictureSP.uid))); - QString filePath = args.at(2); - filePath.replace("", picture.getPictureFileName()); - if (!customFormat) - { - filePath.replace("", ""); - if (!picture.exportPicture(filePath, SnapmaticFormat::PGTA_Format)) - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; - return 1; - } - else - { - if (flags.value("output", QString()).toLower() == "exported_filename") - { - cout << filePath.toStdString().c_str() << endl; - } - else - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; - } - } - } - else - { - filePath.replace("", ".g5e"); - if (!picture.exportPicture(filePath, SnapmaticFormat::G5E_Format)) - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; - return 1; - } - else - { - if (flags.value("output", QString()).toLower() == "exported_filename") - { - cout << filePath.toStdString().c_str() << endl; - } - else - { - cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; - } - } - } - } - else - { - cout << "gta5view-cmd: Editing of Snapmatic Image Stream failed!" << endl; - return 1; - } - } - else - { - cout << "gta5view-cmd: " << args.at(1).toStdString().c_str() << " is invalid image!" << endl; - return 1; - } - } - else - { - cout << "gta5view-cmd: Reading of internal template failed!" << endl; - return 1; - } - } - } - else - { - cout << "gta5view Command Line" << endl << endl; - cout << "Usage: " << args.at(0).toStdString().c_str() << " source target -format -mode -flag=value" << endl; - if (args.length() >= 2 && (args.at(1) == "--help" || args.at(1) == "-help")) - { - cout << "Convert-only: (auto file name at convert)" << endl; - cout << "Convert-only: (auto file extension at convert)" << endl; - cout << "Formats: jpg pgta g5e" << endl; - cout << "Snapmatic Modes: a p d fs aiar akar piar pkar diar dkar" << endl; - cout << "Snapmatic Flags: crew=int players=int[] title=string" << endl; - cout << "Global Flags: output=string" << endl; - } - return 255; - } - - return 0; -} +/***************************************************************************** +* gta5view-cmd - gta5view Command Line +* Copyright (C) 2017-2018 Syping +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU 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 General Public License +* along with this program. If not, see . +*****************************************************************************/ + +#include "gta5view/SnapmaticPicture.h" +#include +#include +#include +#include +#include +#include + +#include +using namespace std; + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + QStringList args = a.arguments(); + + if (args.length() >= 3) + { + QString format = "jpg"; + bool isDefault = true; + bool avatarMode = false; + bool convertToGTA = false; + bool customFormat = false; + bool formatSwitch = false; + bool keepAspectRatio = true; + QMap flags; + + if (args.length() >= 4) + { + if (args.at(3) == "-pgta") + { + convertToGTA = true; + customFormat = false; + } + else if (args.at(3) == "-g5e") + { + convertToGTA = true; + customFormat = true; + } + else if (args.at(3) == "-jpg") + { + format = "jpg"; + convertToGTA = false; + } + } + if (args.length() >= 5) + { + if (args.at(4) == "-a") + { + isDefault = false; + avatarMode = true; + } + else if (args.at(4) == "-p") + { + isDefault = false; + avatarMode = false; + } + else if (args.at(4) == "-d") + { + isDefault = true; + } + else if (args.at(4) == "-aiar") + { + isDefault = false; + avatarMode = true; + keepAspectRatio = false; + } + else if (args.at(4) == "-akar") + { + isDefault = false; + avatarMode = true; + keepAspectRatio = true; + } + else if (args.at(4) == "-piar") + { + isDefault = false; + avatarMode = false; + keepAspectRatio = false; + } + else if (args.at(4) == "-pkar") + { + isDefault = false; + avatarMode = false; + keepAspectRatio = true; + } + else if (args.at(4) == "-diar") + { + isDefault = true; + keepAspectRatio = false; + } + else if (args.at(4) == "-dkar") + { + isDefault = true; + keepAspectRatio = true; + } + else if (args.at(4) == "-fs") + { + convertToGTA = false; + formatSwitch = true; + } + } + if (args.length() >= 6) + { + QStringList flagArgs(args); + for (int argId = 0; argId == 5; argId++) + { + flagArgs.removeAt(argId); + } + for (QString flagArg : flagArgs) + { + QStringList currentFlagArg = flagArg.split("="); + QString currentFlag = currentFlagArg.at(0).toLower(); + if (currentFlag.left(1) == "-") + { + currentFlag.remove(0, 1); + currentFlagArg.removeAt(0); + QString currentValue = currentFlagArg.join(QString()); + flags[currentFlag] = currentValue; + } + } + } + if (!convertToGTA) + { + SnapmaticPicture picture(args.at(1)); + if (picture.readingPicture(true, false, true)) + { + QString filePath = args.at(2); + if (!formatSwitch) + { + filePath.replace("", picture.getExportPictureFileName()); + filePath.replace("", ".jpg"); + if (!picture.exportPicture(filePath, SnapmaticFormat::JPEG_Format)) + { + cout << "gta5view-cmd: Exporting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; + return 1; + } + else + { + if (flags.value("output", QString()).toLower() == "exported_filename") + { + cout << filePath.toStdString().c_str() << endl; + } + else + { + cout << "gta5view-cmd: Exporting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; + } + } + } + else + { + filePath.replace("", picture.getPictureFileName()); + if (customFormat) + { + filePath.replace("", ".g5e"); + if (!picture.exportPicture(filePath, SnapmaticFormat::G5E_Format)) + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; + return 1; + } + else + { + if (flags.value("output", QString()).toLower() == "exported_filename") + { + cout << filePath.toStdString().c_str() << endl; + } + else + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; + } + } + } + else + { + filePath.replace("", ""); + if (!picture.exportPicture(filePath, SnapmaticFormat::PGTA_Format)) + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; + return 1; + } + else + { + if (flags.value("output", QString()).toLower() == "exported_filename") + { + cout << filePath.toStdString().c_str() << endl; + } + else + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; + } + } + } + } + } + else + { + cout << "gta5view-cmd: Reading of " << args.at(1).toStdString().c_str() << " is failed!" << endl; + return 1; + } + } + else + { + SnapmaticPicture picture(":/template.g5e"); + if (picture.readingPicture(true, false, true)) + { + QImage image; + QFile imageFile(args.at(1)); + if (!imageFile.open(QFile::ReadOnly)) + { + cout << "gta5view-cmd: Reading of " << args.at(1).toStdString().c_str() << " is failed!" << endl; + return 1; + } + QImageReader imageReader; + imageReader.setDecideFormatFromContent(true); + imageReader.setDevice(&imageFile); + if (!imageReader.read(&image)) + { + cout << "gta5view-cmd: Parsing of " << args.at(1).toStdString().c_str() << " is failed!" << endl; + return 1; + } + if (!image.isNull()) + { + QSize snapmaticRes(960, 536); + QSize avatarRes(470, 470); + int avatarZoneX = 145; + int avatarZoneY = 66; + + if (isDefault) + { + if (image.width() == image.height()) + { + avatarMode = true; + } + else + { + avatarMode = false; + } + } + if (!avatarMode) + { + QImage snapmaticImage(snapmaticRes, QImage::Format_RGB888); + snapmaticImage.fill(Qt::black); + QPainter snapmaticPainter(&snapmaticImage); + + // Picture mode + int diffWidth = 0; + int diffHeight = 0; + if (keepAspectRatio) + { + image = image.scaled(snapmaticRes, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (image.width() != snapmaticRes.width()) + { + diffWidth = snapmaticRes.width() - image.width(); + diffWidth = diffWidth / 2; + } + else if (image.height() != snapmaticRes.height()) + { + diffHeight = snapmaticRes.height() - image.height(); + diffHeight = diffHeight / 2; + } + } + else + { + image = image.scaled(snapmaticRes.width(), snapmaticRes.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, image); + snapmaticPainter.end(); + image = snapmaticImage; + } + else + { + QImage snapmaticImage(snapmaticRes, QImage::Format_RGB888); + snapmaticImage.fill(Qt::black); + QPainter snapmaticPainter(&snapmaticImage); + + // Scale to Avatar Resolution if needed + if (image.width() != avatarRes.width()) + { + image.scaled(avatarRes, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + + // Avatar mode + int diffWidth = 0; + int diffHeight = 0; + if (keepAspectRatio) + { + image = image.scaled(avatarRes, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (image.width() > image.height()) + { + diffHeight = avatarRes.height() - image.height(); + diffHeight = diffHeight / 2; + } + else if (image.width() < image.height()) + { + diffWidth = avatarRes.width() - image.width(); + diffWidth = diffWidth / 2; + } + } + else + { + image = image.scaled(avatarRes, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + snapmaticPainter.drawImage(avatarZoneX + diffWidth, avatarZoneY + diffHeight, image); + snapmaticPainter.end(); + image = snapmaticImage; + } + + if (picture.setImage(image)) + { + int crew = 0; + QStringList players; + if (flags.contains("crew")) + { + bool crewValid; + int crewId = flags["crew"].toInt(&crewValid); + if (crewValid) + { + crew = crewId; + } + } + if (flags.contains("title") && SnapmaticPicture::verifyTitle(flags["title"])) + { + picture.setPictureTitle(flags["title"]); + } + else + { + avatarMode ? picture.setPictureTitle("Converted Avatar") : picture.setPictureTitle("Converted Picture"); + } + if (flags.contains("players")) + { + bool flagValid = true; + QString playerFlag = flags["players"]; + if (playerFlag.left(1) == "[" && playerFlag.right(1) == "]") + { + playerFlag.remove(0, 1); + playerFlag.remove(playerFlag.length() - 1, 1); + } + const QStringList playersList = playerFlag.split(","); + for (QString player : playersList) + { + if (player.left(1) == "\"" && player.right(1) == "\"") + { + player.remove(0, 1); + player.remove(player.length() - 1, 1); + } + bool playerValid; + player.toInt(&playerValid); + if (!playerValid) + { + flagValid = false; + } + } + if (flagValid) + { + players = playersList; + } + } + SnapmaticProperties pictureSP = picture.getSnapmaticProperties(); + pictureSP.uid = QString(QTime::currentTime().toString("HHmmss") + + QString::number(QDate::currentDate().dayOfYear())).toInt(); + pictureSP.createdDateTime = QDateTime::currentDateTime(); + pictureSP.createdTimestamp = pictureSP.createdDateTime.toTime_t(); + pictureSP.crewID = crew; + pictureSP.playersList = players; + picture.setSnapmaticProperties(pictureSP); + picture.setPictureFileName(QString("PGTA5%1").arg(QString::number(pictureSP.uid))); + QString filePath = args.at(2); + filePath.replace("", picture.getPictureFileName()); + if (!customFormat) + { + filePath.replace("", ""); + if (!picture.exportPicture(filePath, SnapmaticFormat::PGTA_Format)) + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; + return 1; + } + else + { + if (flags.value("output", QString()).toLower() == "exported_filename") + { + cout << filePath.toStdString().c_str() << endl; + } + else + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; + } + } + } + else + { + filePath.replace("", ".g5e"); + if (!picture.exportPicture(filePath, SnapmaticFormat::G5E_Format)) + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is failed!" << endl; + return 1; + } + else + { + if (flags.value("output", QString()).toLower() == "exported_filename") + { + cout << filePath.toStdString().c_str() << endl; + } + else + { + cout << "gta5view-cmd: Converting of " << args.at(1).toStdString().c_str() << " to " << filePath.toStdString().c_str() << " is successful!" << endl; + } + } + } + } + else + { + cout << "gta5view-cmd: Editing of Snapmatic Image Stream failed!" << endl; + return 1; + } + } + else + { + cout << "gta5view-cmd: " << args.at(1).toStdString().c_str() << " is invalid image!" << endl; + return 1; + } + } + else + { + cout << "gta5view-cmd: Reading of internal template failed!" << endl; + return 1; + } + } + } + else + { + cout << "gta5view Command Line" << endl << endl; + cout << "Usage: " << args.at(0).toStdString().c_str() << " source target -format -mode -flag=value" << endl; + if (args.length() >= 2 && (args.at(1) == "--help" || args.at(1) == "-help")) + { + cout << "Convert-only: (auto file name at convert)" << endl; + cout << "Convert-only: (auto file extension at convert)" << endl; + cout << "Formats: jpg pgta g5e" << endl; + cout << "Snapmatic Modes: a p d fs aiar akar piar pkar diar dkar" << endl; + cout << "Snapmatic Flags: crew=int players=int[] title=string" << endl; + cout << "Global Flags: output=string" << endl; + } + return 255; + } + + return 0; +} diff --git a/res.qrc b/res.qrc index 61d24b8..d6efed3 100644 --- a/res.qrc +++ b/res.qrc @@ -1,5 +1,5 @@ - - - gta5sync/res/template.g5e - - + + + gta5view/res/template.g5e + +