diff --git a/NameCreater/INameCreater.cpp b/NameCreater/INameCreater.cpp index 35dea29..90a0b6c 100644 --- a/NameCreater/INameCreater.cpp +++ b/NameCreater/INameCreater.cpp @@ -23,33 +23,42 @@ INameCreater::~INameCreater() void INameCreater::saveToImage(const QString& filename, QGraphicsScene* scene) { - scene->clearSelection(); // Selections would also render to the file - scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents - QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene - image.fill(Qt::transparent); // Start all pixels transparent - int dpm = 300 / 0.0254; // ~300 DPI - image.setDotsPerMeterX(dpm); - image.setDotsPerMeterY(dpm); + scene->clearSelection(); // Selections would also render to the file + scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents + QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene + image.fill(Qt::transparent); // Start all pixels transparent + int dpm = 300 / 0.0254; // ~300 DPI + image.setDotsPerMeterX(dpm); + image.setDotsPerMeterY(dpm); + + + QPainter painter(&image); + scene->render(&painter); - QPainter painter(&image); - scene->render(&painter); #ifdef Q_OS_MAC - QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); + QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); + qDebug() << "app director path" < getNameByFile(Name_Type_e type, const QString& filename); QList getNameByFileContent(Name_Type_e type, const QByteArray& conetent); @@ -46,4 +46,4 @@ private: QFont eng_Font; -}; \ No newline at end of file +}; diff --git a/NameCreater/NameCreater.cpp b/NameCreater/NameCreater.cpp index 4786358..463bf02 100644 --- a/NameCreater/NameCreater.cpp +++ b/NameCreater/NameCreater.cpp @@ -122,43 +122,58 @@ void NameCreater::loadFont(const QByteArray& fontdata){ void NameCreater::OnClickedReadBtn() { auto sender =(QPushButton*) QObject::sender(); - auto fileContentReady = [this, sender](const QString &fileName, const QByteArray &fileContent) { - if (fileName.isEmpty()) { - // No file was selected - } - else { - // Use fileName and fileContent - if(sender == ui.fivesingle_btn) FiveToSingle().generaImageFromCSV(Name_Type_e::Name_zh,fileName, fileContent, this->font, this->font_color); - - if(sender == ui.birthday_btn) BirthdayCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); - if(sender == ui.fivenew_btn) NewFiveCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); - if(sender == ui.towel_btn) TowelCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font_towel, this->font_color); - if (sender == ui.birthday_zh_eng_btn) { - BirthdayCreater creater; - creater.setEnglishFont(font_english); - creater.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); - } - if (sender == ui.birthday_eng_eng_btn){ - BirthdayCreater b; - b.setEnglishFont(font_english); - b.generaImageFromCSV(Name_Type_e::Name_eng, fileName,fileContent,this->font, this->font_color); - } - if (sender == ui.handkerchief_btn) { - QFont newFont(font); - newFont.setPixelSize(78); - QColor newColor(0,0,0); - HKHolderCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, newFont, newColor); - } - if (sender == ui.fivesingle_zh_eng_btn) { - FiveToSingle f; - f.setEnglishFont(this->font_english); - f.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); - return; - } +#ifdef Q_OS_WASM + auto fileContentReady = [this, sender](const QString &fileName, const QByteArray &fileContent) { + if (!fileName.isEmpty()) { + this->execCreater(sender, fileName, fileContent); } + }; QFileDialog::getOpenFileContent("CSV (*.csv)", fileContentReady); + +#else + QString filename = QFileDialog::getOpenFileName(nullptr,"Open Name File", QDir::currentPath(),"CSV file(*.csv)"); + if(!filename.isEmpty()){ + QFile _f(filename); + if(_f.open(QIODevice::ReadOnly)){ + execCreater(sender, filename, _f.readAll()); + } + } +#endif +} + +void NameCreater::execCreater(QObject* sender, const QString& fileName, const QByteArray& fileContent) { + + // Use fileName and fileContent + if(sender == ui.fivesingle_btn) FiveToSingle().generaImageFromCSV(Name_Type_e::Name_zh,fileName, fileContent, this->font, this->font_color); + + if(sender == ui.birthday_btn) BirthdayCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); + if(sender == ui.fivenew_btn) NewFiveCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font, this->font_color); + if(sender == ui.towel_btn) TowelCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, this->font_towel, this->font_color); + if (sender == ui.birthday_zh_eng_btn) { + BirthdayCreater creater; + creater.setEnglishFont(font_english); + creater.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); + } + if (sender == ui.birthday_eng_eng_btn){ + BirthdayCreater b; + b.setEnglishFont(font_english); + b.generaImageFromCSV(Name_Type_e::Name_eng, fileName,fileContent,this->font, this->font_color); + } + if (sender == ui.handkerchief_btn) { + QFont newFont(font); + newFont.setPixelSize(78); + QColor newColor(0,0,0); + HKHolderCreater().generaImageFromCSV(Name_Type_e::Name_zh, fileName, fileContent, newFont, newColor); + } + if (sender == ui.fivesingle_zh_eng_btn) { + FiveToSingle f; + f.setEnglishFont(this->font_english); + f.generaImageFromCSV(Name_Type_e::Name_zh_eng, fileName, fileContent, this->font, this->font_color); + return; + } + } void NameCreater::OnClickedCustomLogoBtn() { diff --git a/NameCreater/NameCreater.h b/NameCreater/NameCreater.h index 62487f6..d1157a4 100644 --- a/NameCreater/NameCreater.h +++ b/NameCreater/NameCreater.h @@ -25,6 +25,7 @@ private: QNetworkAccessManager network_mgr; void loadFont(const QByteArray& fontdata); + void execCreater(QObject*sender, const QString&fileName, const QByteArray &fileContent); private Q_SLOTS: void OnClickedReadBtn(); diff --git a/NameCreater/NameCreater.pro b/NameCreater/NameCreater.pro index f179bc1..a685edd 100644 --- a/NameCreater/NameCreater.pro +++ b/NameCreater/NameCreater.pro @@ -21,6 +21,7 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin wasm-emscripten{ QMAKE_LFLAGS+= -s TOTAL_MEMORY=67108864 + QMAKE_LFLAGS += -s ALLOW_MEMORY_GROWTH=1 } -#QMAKE_LFLAGS += -s ALLOW_MEMORY_GROWTH=1 + diff --git a/NameCreater/customlogo.cpp b/NameCreater/customlogo.cpp index 4f97b25..c68d35b 100644 --- a/NameCreater/customlogo.cpp +++ b/NameCreater/customlogo.cpp @@ -2,6 +2,7 @@ #include "ui_customlogo.h" #include "QFileDialog" + #include #include #include @@ -55,10 +56,7 @@ void CustomLogo::loadBGFromFile() }else{ qDebug()<<"Data content not image format"; } - } - - }; QFileDialog::getOpenFileContent("Image (*.jpg)", fileContentReady); @@ -125,7 +123,6 @@ void CustomLogo::gerneraImageFromList(const QList& nameList, Name_Ty QString name = name_info.name1; int name_len = name.length(); for (int j = 0; j < 1; j++) { // never reverse - int pos_idx = idx * 2 + j; qreal xscale, yscale; xscale = yscale = (j == 1) ? -1 : 1; @@ -155,7 +152,8 @@ void CustomLogo::gerneraImageFromList(const QList& nameList, Name_Ty if (is_export_page || n == nameList.count() - 1) { QString date_str = QDateTime::currentDateTime().toString("MMddhhmm"); QString file_name = QString("Signal_%2_%1.jpg").arg(QString::number(export_times + 1), date_str); - saveToImage(file_name, &scene); + //saveToImage(file_name, &scene); + INameCreater().saveToImage(file_name, &scene); export_times++; scene.clear(); @@ -231,35 +229,3 @@ void CustomLogo::onClickedBtn() { } - -void CustomLogo::saveToImage(const QString& filename, QGraphicsScene* scene) -{ - scene->clearSelection(); // Selections would also render to the file - scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents - QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene - image.fill(Qt::transparent); // Start all pixels transparent - int dpm = 300 / 0.0254; // ~300 DPI - image.setDotsPerMeterX(dpm); - image.setDotsPerMeterY(dpm); - - - QPainter painter(&image); - scene->render(&painter); - -#ifdef Q_OS_MAC - QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); -#else - QString folder_name = QCoreApplication::applicationDirPath() + "/export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); -#endif - - image.save(filename, "JPEG"); - - QByteArray imageData; - QBuffer buffer(&imageData); - buffer.open(QIODevice::WriteOnly); - QPixmap pixmap = QPixmap::fromImage(image); - pixmap.save(&buffer, "JPEG", 100); // You can also use other formats like "JPEG" or "BMP" - - QFileDialog::saveFileContent(imageData, filename); - -} diff --git a/NameCreater/customlogo.h b/NameCreater/customlogo.h index faddeb1..ccadc82 100644 --- a/NameCreater/customlogo.h +++ b/NameCreater/customlogo.h @@ -2,8 +2,8 @@ #define CUSTOMLOGO_H #include -#include "INameCreater.h" #include "QFont" +#include "INameCreater.h" namespace Ui { class CustomLogo; @@ -24,7 +24,6 @@ private: void loadBGFromFile(); void loadListFromFile(); void gerneraImageFromList(const QList& nameList, Name_Type_e type); - void saveToImage(const QString& filename, QGraphicsScene* scene); protected: QList getNameByFileContent(Name_Type_e type, const QByteArray& conetent); diff --git a/NameCreater/customlogo2.cpp b/NameCreater/customlogo2.cpp index 874d9f3..f43bed0 100644 --- a/NameCreater/customlogo2.cpp +++ b/NameCreater/customlogo2.cpp @@ -215,7 +215,7 @@ void customlogo2::gerneraImageFromList(const QList& nameList, Name_T if (is_export_page || n == nameList.count() - 1) { QString date_str = QDateTime::currentDateTime().toString("MMddhhmm"); QString file_name = QString("Signal_%2_%1.jpg").arg(QString::number(export_times + 1), date_str); - saveToImage(file_name, &scene); + INameCreater().saveToImage(file_name, &scene); export_times++; scene.clear(); @@ -232,40 +232,4 @@ void customlogo2::gerneraImageFromList(const QList& nameList, Name_T msgBox.setText(QString().asprintf("Export Finshed. Count:%d", export_times)); msgBox.exec(); -} - -void customlogo2::saveToImage(const QString& filename, QGraphicsScene* scene) -{ - scene->clearSelection(); // Selections would also render to the file - scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents - QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene - image.fill(Qt::transparent); // Start all pixels transparent - int dpm = 300 / 0.0254; // ~300 DPI - image.setDotsPerMeterX(dpm); - image.setDotsPerMeterY(dpm); - - - QPainter painter(&image); - scene->render(&painter); - - - -#ifdef Q_OS_MAC - QString folder_name = QCoreApplication::applicationDirPath() + "/../../../export_" + QDateTime::currentDateTime().toString("yyyyMMdd"); - qDebug() << "app director path" <& nameList, Name_Type_e type); - void saveToImage(const QString& filename, QGraphicsScene* scene); + protected: QList getNameByFileContent(Name_Type_e type, const QByteArray& conetent); diff --git a/NameCreater/def.h b/NameCreater/def.h index bfa4290..4ba1a75 100644 --- a/NameCreater/def.h +++ b/NameCreater/def.h @@ -1,6 +1,6 @@ #ifndef DEF_H #define DEF_H -#define VERSION "v2.8.0" +#define VERSION "v2.8.1" #endif // DEF_H