diff --git a/NameCreater/NameCreater.pri b/NameCreater/NameCreater.pri
new file mode 100644
index 0000000..c0e878e
--- /dev/null
+++ b/NameCreater/NameCreater.pri
@@ -0,0 +1,14 @@
+# ----------------------------------------------------
+# This file is generated by the Qt Visual Studio Tools.
+# ------------------------------------------------------
+
+# This is a reminder that you are using a generated .pro file.
+# Remove it when you are finished editing this file.
+message("You are running qmake on a generated .pro file. This may not work!")
+
+
+HEADERS += ./NameCreater.h
+SOURCES += ./NameCreater.cpp \
+ ./main.cpp
+FORMS += ./NameCreater.ui
+RESOURCES += ./NameCreater.qrc
diff --git a/NameCreater/NameCreater.pro b/NameCreater/NameCreater.pro
new file mode 100644
index 0000000..6594743
--- /dev/null
+++ b/NameCreater/NameCreater.pro
@@ -0,0 +1,21 @@
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+CONFIG += c++11
+
+# You can make your code fail to compile if it uses deprecated APIs.
+# In order to do so, uncomment the following line.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+include(NameCreater.pri)
+
+
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /opt/$${TARGET}/bin
+!isEmpty(target.path): INSTALLS += target
+
+
+
+
diff --git a/NameCreater/NameCreater.pro.user b/NameCreater/NameCreater.pro.user
new file mode 100644
index 0000000..a0b8d15
--- /dev/null
+++ b/NameCreater/NameCreater.pro.user
@@ -0,0 +1,419 @@
+
+
+
+
+
+ EnvironmentId
+ {f917f426-b975-46c9-8edb-fd77a95b6be2}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 1
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+
+ 0
+ true
+
+ -fno-delayed-template-parsing
+
+ true
+ Builtin.BuildSystem
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 4
+
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop Qt 5.15.2 MinGW 32-bit
+ Desktop Qt 5.15.2 MinGW 32-bit
+ qt.qt5.5152.win32_mingw81_kit
+ 1
+ 0
+ 0
+
+ 0
+ D:\_0E\_Private\_Software\namecreater\build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Debug
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Debug
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+
+
+ D:\_0E\_Private\_Software\namecreater\build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Release
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Release
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+
+
+ 0
+ D:\_0E\_Private\_Software\namecreater\build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Profile
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Profile
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+ 0
+
+ 3
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ Qt4ProjectManager.Qt4RunConfiguration:D:/_0E/_Private/_Software/namecreater/NameCreater/NameCreater.pro
+ D:/_0E/_Private/_Software/namecreater/NameCreater/NameCreater.pro
+ false
+ true
+ true
+ false
+ true
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Release/release
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Desktop_Qt_5_15_2_MinGW_32_bit-Release
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.1
+
+ WebAssemblyDeviceType
+ Qt 5.15.2 WebAssembly
+ Qt 5.15.2 WebAssembly
+ qt.qt5.5152.wasm_32_kit
+ 1
+ -1
+ 0
+
+ 0
+ D:\_0E\_Private\_Software\namecreater\build-NameCreater-Qt_5_15_2_WebAssembly-Debug
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Qt_5_15_2_WebAssembly-Debug
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+
+
+ D:\_0E\_Private\_Software\namecreater\build-NameCreater-Qt_5_15_2_WebAssembly-Release
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Qt_5_15_2_WebAssembly-Release
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+
+
+ 0
+ D:\_0E\_Private\_Software\namecreater\build-NameCreater-Qt_5_15_2_WebAssembly-Profile
+ D:/_0E/_Private/_Software/namecreater/build-NameCreater-Qt_5_15_2_WebAssembly-Profile
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+ 0
+
+ 3
+ 0
+
+ true
+ true
+ true
+
+ Launch with emrun
+ WebAssembly.RunConfiguration.Emrun
+
+ false
+ true
+ false
+ true
+ chrome
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 2
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/NameCreater/NameCreater.ui b/NameCreater/NameCreater.ui
index 68d4ca5..b9bbe18 100644
--- a/NameCreater/NameCreater.ui
+++ b/NameCreater/NameCreater.ui
@@ -11,9 +11,7 @@
-
- 華康圓體 Std W8
-
+
NameCreater
@@ -24,15 +22,18 @@
240
220
- 201
- 91
+ 441
+ 261
font: 26pt "華康圓體 Std W8";
- TextLabel
+
+
+
+ :/NameCreater/resource/background.jpg
@@ -42,7 +43,7 @@
0
0
977
- 21
+ 22
diff --git a/NameCreater/main.cpp b/NameCreater/main.cpp
index bcdc057..8415f72 100644
--- a/NameCreater/main.cpp
+++ b/NameCreater/main.cpp
@@ -16,7 +16,7 @@
#define BG_MIX_PATH ":/NameCreater/resource/background.jpg"
#define BG_BOY_PATH ":/NameCreater/resource/background_boy.jpg"
#define BG_GIRL_PATH ":/NameCreater/resource/background_girl.jpg"
-#define FONT_NAME QStringLiteral("رd Std W8")
+#define FONT_NAME QStringLiteral("DFYuan Std W8")
#define FONT_SIZE 120
//#define FONT_SIZE 74
@@ -25,28 +25,28 @@
#define BG_GIRL_TYPE_STR "girl"
struct NameInfo_t {
- QString name1;
- QString name2;
- int bg_type;
+ QString name1;
+ QString name2;
+ int bg_type;
};
static QPointF BOY_POS[] = {
- QPointF(235, 387), QPointF(366, 1433),
- QPointF(555, 387), QPointF(692, 1433),
- QPointF(878, 387), QPointF(1014, 1433),
- QPointF(1200, 387), QPointF(1337, 1433),
- QPointF(1527, 387), QPointF(1663, 1433),
+ QPointF(235, 387), QPointF(366, 1433),
+ QPointF(555, 387), QPointF(692, 1433),
+ QPointF(878, 387), QPointF(1014, 1433),
+ QPointF(1200, 387), QPointF(1337, 1433),
+ QPointF(1527, 387), QPointF(1663, 1433),
};
static int BOY_POS_COUNT = sizeof(BOY_POS) / sizeof(BOY_POS[0]);
static QPointF GIRL_POS[] = {
- QPointF(1854, 387), QPointF(1987, 1433),
- QPointF(2176, 387), QPointF(2314, 1433),
- QPointF(2498, 387), QPointF(2635, 1433),
- QPointF(2821, 387), QPointF(2958, 1433),
- QPointF(3147, 387), QPointF(3285, 1433),
+ QPointF(1854, 387), QPointF(1987, 1433),
+ QPointF(2176, 387), QPointF(2314, 1433),
+ QPointF(2498, 387), QPointF(2635, 1433),
+ QPointF(2821, 387), QPointF(2958, 1433),
+ QPointF(3147, 387), QPointF(3285, 1433),
};
static int GIRL_POS_COUNT = sizeof(GIRL_POS) / sizeof(GIRL_POS[0]);
@@ -54,147 +54,150 @@ static int GIRL_POS_COUNT = sizeof(GIRL_POS) / sizeof(GIRL_POS[0]);
void 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);
- QString folder_name = "export_" + QDateTime::currentDateTime().toString("yyyyMMdd");
+ QString folder_name = "export_" + QDateTime::currentDateTime().toString("yyyyMMdd");
- if (!QDir(folder_name).exists()) {
- QDir().mkdir(folder_name);
- }
+ if (!QDir(folder_name).exists()) {
+ QDir().mkdir(folder_name);
+ }
- image.save(QString(folder_name).append("/").append(filename), "JPG", 100);
+ image.save(QString(folder_name).append("/").append(filename), "JPG", 100);
}
QList getNameByFile(const QString& filename) {
- QList nameList;
- QFile file(filename);
- if (!file.open(QIODevice::ReadOnly)) {
- qDebug() << "Load file failed!";
- return nameList;
- }
+ QList nameList;
+ QFile file(filename);
+ if (!file.open(QIODevice::ReadOnly)) {
+ qDebug() << "Load file failed!";
+ return nameList;
+ }
- int row = 0;
- while (!file.atEnd())
- {
- NameInfo_t info;
- QByteArray line = file.readLine();
- QByteArrayList csvList = line.split(',');
+ int row = 0;
+ while (!file.atEnd())
+ {
+ NameInfo_t info;
+ QByteArray line = file.readLine();
+ QByteArrayList csvList = line.split(',');
- QString name1 = QString::fromLocal8Bit(csvList.at(0));
- QString name2 = QString::fromLocal8Bit(csvList.at(1));
- QString type_str = QString::fromLocal8Bit(csvList.last());
- qDebug() << "row :" << row << " " << name1 << " " << name2;
+ QString name1 = QString::fromLocal8Bit(csvList.at(0));
+ QString name2 = QString::fromLocal8Bit(csvList.at(1));
+ QString type_str = QString::fromLocal8Bit(csvList.last());
+ qDebug() << "row :" << row << " " << name1 << " " << name2;
- if (name1.compare("name_1") == 0 || name2.compare("name_2") == 0) {
- continue;
- }
+ if (name1.compare("name_1") == 0 || name2.compare("name_2") == 0) {
+ continue;
+ }
- info.name1 = name1;
- info.name2 = name2;
- info.bg_type = type_str.contains(QRegExp("boy")) ? 1 : (type_str.contains(QRegExp("girl"))) ? 2 : 0;
+ info.name1 = name1;
+ info.name2 = name2;
+ info.bg_type = type_str.contains(QRegExp("boy")) ? 1 : (type_str.contains(QRegExp("girl"))) ? 2 : 0;
- nameList.append(info);
+ nameList.append(info);
- row++;
- }
+ row++;
+ }
- return nameList;
+ return nameList;
}
int main(int argc, char* argv[])
{
- int export_times = 0;
- //QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- QApplication a(argc, argv);
+ int export_times = 0;
- QFont font(FONT_NAME);
- font.setPixelSize(FONT_SIZE);
- QColor font_color(0, 0, 0);
+
+ QApplication a(argc, argv);
+// NameCreater w;
+// w.show();
+
+ QFont font(FONT_NAME);
+ font.setPixelSize(FONT_SIZE);
+ QColor font_color(0, 0, 0);
- QList nameList = getNameByFile("name.csv");
- if (nameList.isEmpty()) {
- QMessageBox msgBox;
- msgBox.setText(("Name is empty !"));
- msgBox.exec();
- }
+ QList nameList = getNameByFile("name.csv");
+ if (nameList.isEmpty()) {
+ QMessageBox msgBox;
+ msgBox.setText(("Name is empty !"));
+ msgBox.exec();
+ }
- QGraphicsScene scene;
- QGraphicsView view(&scene);
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
- for (int n = 0; n < nameList.length(); n++) {
- //msgBox.setText(QString().sprintf("Export: %d / %d", export_times, nameList.length()));
+ for (int n = 0; n < nameList.length(); n++) {
+ //msgBox.setText(QString().sprintf("Export: %d / %d", export_times, nameList.length()));
- NameInfo_t name_info = nameList.at(n);
+ NameInfo_t name_info = nameList.at(n);
- scene.clear();
- QImage image((name_info.bg_type == 1) ? BG_BOY_PATH : (name_info.bg_type == 2) ? BG_GIRL_PATH : BG_MIX_PATH);
- QGraphicsPixmapItem* bgItem = new QGraphicsPixmapItem(QPixmap::fromImage(image));
- scene.addItem(bgItem);
+ scene.clear();
+ QImage image((name_info.bg_type == 1) ? BG_BOY_PATH : (name_info.bg_type == 2) ? BG_GIRL_PATH : BG_MIX_PATH);
+ QGraphicsPixmapItem* bgItem = new QGraphicsPixmapItem(QPixmap::fromImage(image));
+ scene.addItem(bgItem);
- for (int j = 0; j < 2; j++) {
- int flag = j % 2;
- QString name = (flag == 0) ? name_info.name1 : name_info.name2;
- for (int i = 0; i < BOY_POS_COUNT; i++) {
- int xscale, yscale;
- xscale = yscale = (i % 2 == 1) ? -1 : 1;
- QPointF pos = (flag == 0) ? BOY_POS[i] : GIRL_POS[i];
+ for (int j = 0; j < 2; j++) {
+ int flag = j % 2;
+ QString name = (flag == 0) ? name_info.name1 : name_info.name2;
+ for (int i = 0; i < BOY_POS_COUNT; i++) {
+ int xscale, yscale;
+ xscale = yscale = (i % 2 == 1) ? -1 : 1;
+ QPointF pos = (flag == 0) ? BOY_POS[i] : GIRL_POS[i];
- QGraphicsTextItem* textItem1 = new QGraphicsTextItem(name.mid(0, 1));
- textItem1->setFont(font);
- textItem1->setDefaultTextColor(font_color);
- textItem1->setPos(pos);
- textItem1->setTransform(QTransform::fromScale(xscale, yscale));
- scene.addItem(textItem1);
+ QGraphicsTextItem* textItem1 = new QGraphicsTextItem(name.mid(0, 1));
+ textItem1->setFont(font);
+ textItem1->setDefaultTextColor(font_color);
+ textItem1->setPos(pos);
+ textItem1->setTransform(QTransform::fromScale(xscale, yscale));
+ scene.addItem(textItem1);
- QGraphicsTextItem* textItem2 = new QGraphicsTextItem(name.mid(1, 1));
- textItem2->setFont(font);
- textItem2->setDefaultTextColor(font_color);
- textItem2->setPos(pos.x(), pos.y() + 148 * xscale);
- textItem2->setTransform(QTransform::fromScale(xscale, yscale));
- scene.addItem(textItem2);
+ QGraphicsTextItem* textItem2 = new QGraphicsTextItem(name.mid(1, 1));
+ textItem2->setFont(font);
+ textItem2->setDefaultTextColor(font_color);
+ textItem2->setPos(pos.x(), pos.y() + 148 * xscale);
+ textItem2->setTransform(QTransform::fromScale(xscale, yscale));
+ scene.addItem(textItem2);
- QGraphicsTextItem* textItem3 = new QGraphicsTextItem(name.mid(2, 1));
- textItem3->setFont(font);
- textItem3->setDefaultTextColor(font_color);
- textItem3->setPos(pos.x(), pos.y() + 294 * xscale);
- textItem3->setTransform(QTransform::fromScale(xscale, yscale));
- scene.addItem(textItem3);
- }
- }
- //if (name_info.bg_type == 0) {
- // view.show();
- // break;
- //}
+ QGraphicsTextItem* textItem3 = new QGraphicsTextItem(name.mid(2, 1));
+ textItem3->setFont(font);
+ textItem3->setDefaultTextColor(font_color);
+ textItem3->setPos(pos.x(), pos.y() + 294 * xscale);
+ textItem3->setTransform(QTransform::fromScale(xscale, yscale));
+ scene.addItem(textItem3);
+ }
+ }
+// if (name_info.bg_type == 0) {
+// view.show();
+// break;
+// }
- QString file_name = QString("%1_%2_%3.jpg").arg(QString::number(export_times+1),name_info.name1,name_info.name2);
- saveToImage(file_name, &scene);
- export_times++;
- }
+ QString file_name = QString("%1_%2_%3.jpg").arg(QString::number(export_times+1),name_info.name1,name_info.name2);
+ saveToImage(file_name, &scene);
+ export_times++;
+ }
- QMessageBox msgBox;
- msgBox.setText(QString().sprintf("Export Finshed. Count:%d",export_times));
- msgBox.exec();
+ QMessageBox msgBox;
+ msgBox.setText(QString().asprintf("Export Finshed. Count:%d",export_times));
+ msgBox.exec();
- return 0;
+ return 0;
}