diff --git a/NameCreater/NameCreater.cpp b/NameCreater/NameCreater.cpp index c2f0017..1d67310 100644 --- a/NameCreater/NameCreater.cpp +++ b/NameCreater/NameCreater.cpp @@ -19,6 +19,7 @@ #include "HKHolderCreater.h" #include "customlogo.h" + #define TOWEL_FONT_PATH ":/NameCreater/_exp/W1.ttc" #define ENGLISH_FONT_PATH ":/NameCreater/_exp/FontsFree-Net-Acumin-Pro-Semibold.ttf" @@ -29,7 +30,7 @@ //#define FONT_CHT_URL "http://45.32.51.135/font/TaiwanPearl-SemiBold.ttf" NameCreater::NameCreater(QWidget *parent) - : QMainWindow(parent) + : QMainWindow(parent),custom2(NULL) { ui.setupUi(this); connect(ui.fivesingle_btn, &QPushButton::released, this, &NameCreater::OnClickedReadBtn); @@ -42,13 +43,15 @@ NameCreater::NameCreater(QWidget *parent) connect(ui.handkerchief_btn, &QPushButton::released, this, &NameCreater::OnClickedReadBtn); connect(ui.fivesingle_zh_eng_btn, &QPushButton::released, this, &NameCreater::OnClickedReadBtn); connect(ui.customlogo_btn, &QPushButton::released, this , &NameCreater::OnClickedCustomLogoBtn); - + connect(ui.customlogo2_btn, &QPushButton::released, this, &NameCreater::OnClickedCustomLogo2Btn); //qDebug()<<"QSslSocket="<font); + } + custom2->show(); +} + void NameCreater::onFontDownloadFinished(QNetworkReply *reply){ if(reply->error() == QNetworkReply::NoError){ diff --git a/NameCreater/NameCreater.h b/NameCreater/NameCreater.h index ff21f95..5d43239 100644 --- a/NameCreater/NameCreater.h +++ b/NameCreater/NameCreater.h @@ -7,6 +7,8 @@ #include #include +#include "customlogo2.h" + class NameCreater : public QMainWindow { Q_OBJECT @@ -20,11 +22,14 @@ private: QColor font_color; + customlogo2 *custom2; + QNetworkAccessManager network_mgr; void loadFont(const QByteArray& fontdata); private Q_SLOTS: void OnClickedReadBtn(); void OnClickedCustomLogoBtn(); + void OnClickedCustomLogo2Btn(); void onFontDownloadFinished(QNetworkReply *reply); }; diff --git a/NameCreater/NameCreater.pri b/NameCreater/NameCreater.pri index 4e8c038..a726f6c 100644 --- a/NameCreater/NameCreater.pri +++ b/NameCreater/NameCreater.pri @@ -17,7 +17,9 @@ HEADERS += ./resource.h \ ./TowelCreater.h \ ./NewFiveCreater.h \ ./HKHolderCreater.h \ - ./customlogo.h + ./customlogo.h \ + ./customlogo2.h + SOURCES += ./NameCreater.cpp \ ./main.cpp \ ./BirthdayCreater.cpp \ @@ -27,7 +29,9 @@ SOURCES += ./NameCreater.cpp \ ./TowelCreater.cpp \ ./NewFiveCreater.cpp \ ./HKHolderCreater.cpp \ - ./customlogo.cpp + ./customlogo.cpp \ + ./customlogo2.cpp FORMS += ./NameCreater.ui \ - ./customlogo.ui + ./customlogo.ui \ + ./customlogo2.ui RESOURCES += NameCreater.qrc diff --git a/NameCreater/NameCreater.pro b/NameCreater/NameCreater.pro index 4ee0e0b..f179bc1 100644 --- a/NameCreater/NameCreater.pro +++ b/NameCreater/NameCreater.pro @@ -19,6 +19,8 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target -QMAKE_LFLAGS+= -s TOTAL_MEMORY=67108864 - +wasm-emscripten{ + QMAKE_LFLAGS+= -s TOTAL_MEMORY=67108864 +} +#QMAKE_LFLAGS += -s ALLOW_MEMORY_GROWTH=1 diff --git a/NameCreater/NameCreater.pro.user b/NameCreater/NameCreater.pro.user index 2762d33..503fe24 100644 --- a/NameCreater/NameCreater.pro.user +++ b/NameCreater/NameCreater.pro.user @@ -1,10 +1,10 @@ - + EnvironmentId - {4a5c8cc9-7483-402d-a0a2-3701e5257fd0} + {fcddcb90-0e4f-4f41-99d2-8ce9f168d92c} ProjectExplorer.Project.ActiveTarget @@ -37,10 +37,11 @@ true true 1 + 0 false true false - 0 + 2 true true 0 @@ -54,6 +55,7 @@ *.md, *.MD, Makefile false true + true @@ -67,19 +69,17 @@ true true + false + 0 true - - -fno-delayed-template-parsing - - true - Builtin.BuildSystem true true Builtin.DefaultTidyAndClazy 4 + true @@ -89,169 +89,18 @@ ProjectExplorer.Project.Target.0 - - WebAssemblyDeviceType - Qt 5.15.2 WebAssembly - Qt 5.15.2 WebAssembly - qt.qt5.5152.wasm_32_kit - 0 - -1 - 0 - - 0 - D:\_develop\_project\NameCreater\build-NameCreater-Qt_5_15_2_WebAssembly-Debug - D:/_develop/_project/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:\_develop\_project\NameCreater\build-NameCreater-Qt_5_15_2_WebAssembly-Release - D:/_develop/_project/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:\_develop\_project\NameCreater\build-NameCreater-Qt_5_15_2_WebAssembly-Profile - D:/_develop/_project/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 - - NameCreater - WebAssembly.RunConfiguration.EmrunD:/_develop/_project/NameCreater/NameCreater/NameCreater.pro - D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro - false - true - false - true - chrome - - 1 - - - - ProjectExplorer.Project.Target.1 Desktop - Desktop Qt 5.15.2 MSVC2019 64bit - Desktop Qt 5.15.2 MSVC2019 64bit - qt.qt5.5152.win64_msvc2019_64_kit + Desktop Qt 5.15.2 clang 64bit + Desktop Qt 5.15.2 clang 64bit + qt.qt5.5152.clang_64_kit 0 0 0 0 - D:\_develop\_project\NameCreater\build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug - D:/_develop/_project/NameCreater/build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug + /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Debug + /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Debug true @@ -289,8 +138,8 @@ 2 - D:\_develop\_project\NameCreater\build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Release - D:/_develop/_project/NameCreater/build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Release + /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Release + /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Release true @@ -330,8 +179,8 @@ 0 - D:\_develop\_project\NameCreater\build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Profile - D:/_develop/_project/NameCreater/build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Profile + /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Profile + /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Profile true @@ -387,18 +236,173 @@ true true + 0 true 2 - Qt4ProjectManager.Qt4RunConfiguration:D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro - D:/_develop/_project/NameCreater/NameCreater/NameCreater.pro - false + false + -e cpu-cycles --call-graph dwarf,4096 -F 250 + + Qt4ProjectManager.Qt4RunConfiguration:/Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro + /Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro + false true true - false true - D:/_develop/_project/NameCreater/build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug + /Users/shouchih/dev/namecreater/NameCreater/build/Desktop_Qt_5_15_2_clang_64bit-Debug/NameCreater.app/Contents/MacOS + + 1 + + + + ProjectExplorer.Project.Target.1 + + WebAssemblyDeviceType + Qt 5.15.2 WebAssembly + Qt 5.15.2 WebAssembly + qt.qt5.5152.wasm_32_kit + 0 + -1 + 0 + + 0 + /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Debug + /Users/shouchih/dev/namecreater/NameCreater/build/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 + + + /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Release + /Users/shouchih/dev/namecreater/NameCreater/build/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 + /Users/shouchih/dev/namecreater/NameCreater/build/Qt_5_15_2_WebAssembly-Profile + /Users/shouchih/dev/namecreater/NameCreater/build/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 + 0 + true + + -e cpu-cycles --call-graph dwarf,4096 -F 250 + NameCreater + WebAssembly.RunConfiguration.Emrun/Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro + /Users/shouchih/dev/namecreater/NameCreater/NameCreater.pro + false + true + true + chrome 1 diff --git a/NameCreater/NameCreater.qrc b/NameCreater/NameCreater.qrc index 842cef0..79cb57b 100644 --- a/NameCreater/NameCreater.qrc +++ b/NameCreater/NameCreater.qrc @@ -100,5 +100,8 @@ resource/five/kg_3.jpg resource/five/kg_4.jpg resource/five/kg_5.jpg + resource/custom_logo/demo_2.jpg + _exp/Ubuntu-Medium.ttf + resource/custom_logo/bg_2.jpg diff --git a/NameCreater/NameCreater.ui b/NameCreater/NameCreater.ui index a617cab..b3451fd 100644 --- a/NameCreater/NameCreater.ui +++ b/NameCreater/NameCreater.ui @@ -7,7 +7,7 @@ 0 0 946 - 817 + 694 @@ -38,6 +38,7 @@ Yu Gothic UI 10 + 50 false false @@ -95,6 +96,7 @@ border-color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -118,6 +120,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -141,6 +144,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -216,6 +220,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -239,6 +244,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -274,6 +280,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -309,6 +316,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -331,6 +339,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -366,6 +375,7 @@ color: rgb(255, 255, 255); Yu Gothic UI 20 + 50 false false @@ -396,6 +406,43 @@ color: rgb(250, 250, 250); + + + + + 0 + 76 + + + + Open Dialog + + + + + + + + Yu Gothic UI + 20 + 50 + false + false + + + + +color: rgb(255, 255, 255); + + + + 扶輪社 + + + Qt::AlignCenter + + + @@ -411,6 +458,7 @@ color: rgb(250, 250, 250); Yu Gothic UI 10 + 50 false false @@ -433,7 +481,7 @@ color: rgb(250, 250, 250); 0 0 946 - 21 + 24 diff --git a/NameCreater/_exp/Ubuntu-Medium.ttf b/NameCreater/_exp/Ubuntu-Medium.ttf new file mode 100644 index 0000000..5296045 Binary files /dev/null and b/NameCreater/_exp/Ubuntu-Medium.ttf differ diff --git a/NameCreater/customlogo2.cpp b/NameCreater/customlogo2.cpp new file mode 100644 index 0000000..b9c6cd1 --- /dev/null +++ b/NameCreater/customlogo2.cpp @@ -0,0 +1,276 @@ +#include "customlogo2.h" +#include "ui_customlogo2.h" + +#include "QFileDialog" + +#include +#include +#include +#include +#include +#include +#include +#include + + +//#define BG_DEMO_PATH ":/NameCreater/resource/custom_logo/demo_2.jpg" +#define BG_DEMO_PATH ":/NameCreater/resource/custom_logo/bg_2.jpg" +#define FONT_PATH ":/NameCreater/_exp/Ubuntu-Medium.ttf" + + +static QPoint BG_START_POS(20, 100); +static QPoint BG_ROT_START_POS(2080, 880); +static int BG_POS_COUNT = 12; + + + +customlogo2::customlogo2(QFont *font, QWidget *parent) + : QWidget(parent) + , ui(new Ui::customlogo2) + , zhFont(font) +{ + ui->setupUi(this); + + connect(ui->loadfont_btn, &QPushButton::released, this,&customlogo2::OnClickedBtn); + connect(ui->loadcsv_btn, &QPushButton::released, this,&customlogo2::OnClickedBtn); + + QFile font_file(FONT_PATH); + if (!font_file.open(QIODevice::ReadOnly)) { + QMessageBox msgBox; + msgBox.setText("Can not load font file!" + QString(FONT_PATH)); + msgBox.exec(); + font_file.close(); + } + + int id = QFontDatabase::addApplicationFontFromData(font_file.readAll()); + QString font_families = QFontDatabase::applicationFontFamilies(id).at(0); + enFont = QFont(font_families); + enFont.setPixelSize(60); + + zhFont->setPixelSize(120); + qDebug()<<"word space" << QString::number(zhFont->wordSpacing()); + zhFont->setWordSpacing(300); + + qDebug()<loadfont_btn){ + + + + }else if(sender == ui->loadcsv_btn){ + + loadListFromFile(); + + } + + +} + + + +void customlogo2::loadListFromFile() +{ + auto fileContentReady = [this](const QString& fileName, const QByteArray& fileContent) { + if (fileName.isEmpty()) { + // No file was selected + } + else { + QList nameList = getNameByFileContent(Name_zh, fileContent); + if (!nameList.isEmpty()) { + qDebug() << "List size: "<< QString::number(nameList.count()); + gerneraImageFromList(nameList, Name_zh); + } + else { + qDebug() << "List is empty!!"; + } + } + + }; + + QFileDialog::getOpenFileContent("CSV file (*.csv)", fileContentReady); + +} + +QList customlogo2::getNameByFileContent(Name_Type_e type, const QByteArray& conetent) +{ + QList nameList; + + QTextCodec* tc = QTextCodec::codecForName("Utf8"); + QString codec = tc->toUnicode(conetent.data()); + QTextStream stream(&codec); + + int row = 0; + while (!stream.atEnd()) + { + NameInfo_t info; + QString line = stream.readLine(); + QString name_tc = line; + QStringList csvList = name_tc.split(','); + + QString name, eng_name, bg_type; + + switch (type) { + case Name_zh: + { + int n = 1; + name = csvList.at(0); + + while(n < csvList.count()){ + if(n==2)eng_name.append(","); + eng_name.append(csvList.at(n)); + n++; + } + eng_name.replace("\"",""); + } + + + break; + default: + break; + + } + + qDebug() << "row :" << row << " " << name << " eng: "<& nameList, Name_Type_e type) +{ + int export_times = 0; + QGraphicsScene scene; + scene.setBackgroundBrush(QBrush(QColor(255, 255, 255))); + QGraphicsView view(&scene); + QRectF itemRect(0, 0, 880, 280); + QColor fontColor(33,142,188); + + switch (type) { + case Name_zh: + { + for (int n = 0; n < nameList.length(); n++) { + int idx = n % BG_POS_COUNT; + NameInfo_t name_info = nameList.at(n); + + if (idx == 0) { + + QGraphicsRectItem* bg_item = new QGraphicsRectItem(0, 0, BG_HEIGHT,BG_WIDTH); + bg_item->setBrush(QBrush(QColor(255, 255, 255))); + scene.addItem(bg_item); + } + + + QGraphicsPixmapItem* name_bgItem = new QGraphicsPixmapItem(QPixmap(BG_DEMO_PATH)); + bool rot = (idx == 10 || idx == 11); + name_bgItem->setRotation(rot ? 90 : 0); + if (!rot) + name_bgItem->setPos(BG_START_POS.x(), BG_START_POS.y() + (name_bgItem->boundingRect().height()+30)*idx); + else + name_bgItem->setPos(BG_ROT_START_POS.x()+ (name_bgItem->boundingRect().height()+30)*(idx-10), BG_ROT_START_POS.y()); + scene.addItem(name_bgItem); + + + if (name_info.name1.isEmpty()) { + QMessageBox msgBox; + msgBox.setText(QString().asprintf("Name is Empty at %d", export_times + 1)); + msgBox.exec(); + } + + QString name = name_info.name1; + QGraphicsTextItem* textItem = new QGraphicsTextItem(name, name_bgItem); + QFont _font = QFont(*zhFont); + _font.setLetterSpacing(QFont::PercentageSpacing, 110); + textItem->setFont(_font); + textItem->setDefaultTextColor(fontColor); + textItem->setPos(20+(itemRect.width() - textItem->boundingRect().width())/2,42); + + + scene.addItem(textItem); + + QString name_en = name_info.name_eng; + QGraphicsTextItem* textItem_en = new QGraphicsTextItem(name_en, name_bgItem); + textItem_en->setFont(enFont); + textItem_en->setDefaultTextColor(fontColor); + textItem_en->setPos(20+(itemRect.width() - textItem_en->boundingRect().width())/2,170); + + scene.addItem(textItem_en); + + bool is_export_page = ((idx + 1) % BG_POS_COUNT == 0); + 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); + export_times++; + + scene.clear(); + } + } + } + break; + + default: + break; + } + + QMessageBox msgBox; + 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"); +#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/customlogo2.h b/NameCreater/customlogo2.h new file mode 100644 index 0000000..d0c39d0 --- /dev/null +++ b/NameCreater/customlogo2.h @@ -0,0 +1,37 @@ +#ifndef CUSTOMLOGO2_H +#define CUSTOMLOGO2_H + +#include +#include "INameCreater.h" +#include "QFont" + +namespace Ui { +class customlogo2; +} + +class customlogo2 : public QWidget +{ + Q_OBJECT + +public: + explicit customlogo2(QFont *font ,QWidget *parent = nullptr); + ~customlogo2(); + +private: + Ui::customlogo2 *ui; + + QFont *zhFont,enFont; + + 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); + +private Q_SLOTS: + void OnClickedBtn(); + +}; + +#endif // CUSTOMLOGO2_H diff --git a/NameCreater/customlogo2.ui b/NameCreater/customlogo2.ui new file mode 100644 index 0000000..9722ad5 --- /dev/null +++ b/NameCreater/customlogo2.ui @@ -0,0 +1,58 @@ + + + customlogo2 + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + 90 + 90 + 100 + 32 + + + + Load Font + + + + + + 240 + 90 + 100 + 32 + + + + Load CSV + + + + + + 160 + 220 + 100 + 32 + + + + Export + + + + + + diff --git a/NameCreater/resource/custom_logo/bg_2.jpg b/NameCreater/resource/custom_logo/bg_2.jpg new file mode 100644 index 0000000..08512b3 Binary files /dev/null and b/NameCreater/resource/custom_logo/bg_2.jpg differ diff --git a/NameCreater/resource/custom_logo/demo_2.jpg b/NameCreater/resource/custom_logo/demo_2.jpg new file mode 100644 index 0000000..b5b5922 Binary files /dev/null and b/NameCreater/resource/custom_logo/demo_2.jpg differ