diff --git a/NameCreater/NameCreater.cpp b/NameCreater/NameCreater.cpp index 8705ca6..22fde34 100644 --- a/NameCreater/NameCreater.cpp +++ b/NameCreater/NameCreater.cpp @@ -17,6 +17,7 @@ #include "TowelCreater.h" #include "NewFiveCreater.h" #include "HKHolderCreater.h" +#include "customlogo.h" #define FONT_PATH ":/NameCreater/_exp/DFYuanStd-W8.otf" @@ -40,6 +41,7 @@ NameCreater::NameCreater(QWidget *parent) connect(ui.birthday_eng_eng_btn, &QPushButton::released, this, &NameCreater::OnClickedReadBtn); 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); QString font_path = FONT_PATH; QFile font_res(font_path); @@ -149,3 +151,13 @@ void NameCreater::OnClickedReadBtn() { }; QFileDialog::getOpenFileContent("CSV (*.csv)", fileContentReady); } + +void NameCreater::OnClickedCustomLogoBtn() { + QEventLoop loop; + CustomLogo widget(&this->font); + widget.show(); + connect(&widget, &CustomLogo::finished, &loop, &QEventLoop::quit); + loop.exec(); + qDebug()<<"exit event loop"; + +} diff --git a/NameCreater/NameCreater.h b/NameCreater/NameCreater.h index bfa7932..cffd32a 100644 --- a/NameCreater/NameCreater.h +++ b/NameCreater/NameCreater.h @@ -20,4 +20,5 @@ private: private Q_SLOTS: void OnClickedReadBtn(); + void OnClickedCustomLogoBtn(); }; diff --git a/NameCreater/NameCreater.pri b/NameCreater/NameCreater.pri index 181f912..4e8c038 100644 --- a/NameCreater/NameCreater.pri +++ b/NameCreater/NameCreater.pri @@ -16,7 +16,8 @@ HEADERS += ./resource.h \ ./OldFiveCreater.h \ ./TowelCreater.h \ ./NewFiveCreater.h \ - ./HKHolderCreater.h + ./HKHolderCreater.h \ + ./customlogo.h SOURCES += ./NameCreater.cpp \ ./main.cpp \ ./BirthdayCreater.cpp \ @@ -25,6 +26,8 @@ SOURCES += ./NameCreater.cpp \ ./INameCreater.cpp \ ./TowelCreater.cpp \ ./NewFiveCreater.cpp \ - ./HKHolderCreater.cpp -FORMS += ./NameCreater.ui + ./HKHolderCreater.cpp \ + ./customlogo.cpp +FORMS += ./NameCreater.ui \ + ./customlogo.ui RESOURCES += NameCreater.qrc diff --git a/NameCreater/NameCreater.pro b/NameCreater/NameCreater.pro index 1fa5d48..9f936d7 100644 --- a/NameCreater/NameCreater.pro +++ b/NameCreater/NameCreater.pro @@ -21,3 +21,4 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin QMAKE_LFLAGS+= -s TOTAL_MEMORY=67108864 + diff --git a/NameCreater/NameCreater.pro.user b/NameCreater/NameCreater.pro.user index 6e39b3c..0927f4b 100644 --- a/NameCreater/NameCreater.pro.user +++ b/NameCreater/NameCreater.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -89,157 +89,6 @@ 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 - true - - - - 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 - true - - - - 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 @@ -398,6 +247,158 @@ true false true + D:/_develop/_project/NameCreater/build-NameCreater-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug + + 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 + 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 + true + + + + 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 + true + + + + 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 diff --git a/NameCreater/NameCreater.qrc b/NameCreater/NameCreater.qrc index 04a1fd4..e9cdb26 100644 --- a/NameCreater/NameCreater.qrc +++ b/NameCreater/NameCreater.qrc @@ -1,104 +1,105 @@ - - _exp/DFYuanStd-W8.otf - resource/background_sample.jpg - resource/background_b.jpg - resource/background_g.jpg - resource/background_r.jpg - resource/background_y.jpg - resource/two_word_sample.jpg - resource/background_1.jpg - resource/background_2.jpg - resource/background_3.jpg - resource/background_4.jpg - resource/background_5.jpg - resource/background_6.jpg - resource/background_7.jpg - resource/background_8.jpg - resource/background_9.jpg - resource/background_10.jpg - resource/background_number_smaple.jpg - resource/background_11.jpg - resource/background_12.jpg - resource/background_13.jpg - resource/background_14.jpg - resource/background_15.jpg - resource/background_16.jpg - resource/background_17.jpg - resource/background_18.jpg - resource/background_19.jpg - resource/background_20.jpg - resource/background.jpg - resource/background_boy.jpg - resource/background_girl.jpg - resource/b.jpg - resource/boy_bg.jpg - resource/co.jpg - resource/g.jpg - resource/girl_bg.jpg - resource/m.jpg - resource/ol.jpg - resource/p.jpg - resource/r.jpg - resource/sn.jpg - resource/st.jpg - resource/w.jpg - resource/y.jpg - _exp/W1.ttc - resource/five/b_1.jpg - resource/five/b_2.jpg - resource/five/b_3.jpg - resource/five/b_4.jpg - resource/five/b_5.jpg - resource/five/g_1.jpg - resource/five/g_2.jpg - resource/five/g_3.jpg - resource/five/g_4.jpg - resource/five/g_5.jpg - resource/five/nb_1.jpg - resource/five/nb_2.jpg - resource/five/nb_3.jpg - resource/five/nb_4.jpg - resource/five/nb_5.jpg - resource/five/new_bg_sample.jpg - resource/five/ng_1.jpg - resource/five/ng_2.jpg - resource/five/ng_3.jpg - resource/five/ng_4.jpg - resource/five/ng_5.jpg - _exp/FontsFree-Net-Acumin-Pro-Semibold.ttf - resource/hk_holder/b.jpg - resource/hk_holder/g.jpg - resource/hk_holder/p.jpg - resource/hk_holder/r.jpg - resource/hk_holder/sample.jpg - resource/hk_holder/y.jpg - resource/hk_holder/m.jpg - resource/hk_holder/st.jpg - resource/hk_holder/w.jpg - resource/hk_holder/a.jpg - resource/hk_holder/pg.jpg - resource/a.jpg - resource/pg.jpg - resource/background_21.jpg - resource/background_22.jpg - resource/background_23.jpg - resource/background_24.jpg - resource/background_25.jpg - resource/background_26.jpg - resource/background_27.jpg - resource/background_28.jpg - resource/background_29.jpg - resource/background_30.jpg - resource/five/kb_1.jpg - resource/five/kb_2.jpg - resource/five/kb_3.jpg - resource/five/kb_4.jpg - resource/five/kb_5.jpg - resource/five/kg_1.jpg - resource/five/kg_2.jpg - resource/five/kg_3.jpg - resource/five/kg_4.jpg - resource/five/kg_5.jpg - + + resource/custom_logo/bg_1.jpg + _exp/DFYuanStd-W8.otf + resource/background_sample.jpg + resource/background_b.jpg + resource/background_g.jpg + resource/background_r.jpg + resource/background_y.jpg + resource/two_word_sample.jpg + resource/background_1.jpg + resource/background_2.jpg + resource/background_3.jpg + resource/background_4.jpg + resource/background_5.jpg + resource/background_6.jpg + resource/background_7.jpg + resource/background_8.jpg + resource/background_9.jpg + resource/background_10.jpg + resource/background_number_smaple.jpg + resource/background_11.jpg + resource/background_12.jpg + resource/background_13.jpg + resource/background_14.jpg + resource/background_15.jpg + resource/background_16.jpg + resource/background_17.jpg + resource/background_18.jpg + resource/background_19.jpg + resource/background_20.jpg + resource/background.jpg + resource/background_boy.jpg + resource/background_girl.jpg + resource/b.jpg + resource/boy_bg.jpg + resource/co.jpg + resource/g.jpg + resource/girl_bg.jpg + resource/m.jpg + resource/ol.jpg + resource/p.jpg + resource/r.jpg + resource/sn.jpg + resource/st.jpg + resource/w.jpg + resource/y.jpg + _exp/W1.ttc + resource/five/b_1.jpg + resource/five/b_2.jpg + resource/five/b_3.jpg + resource/five/b_4.jpg + resource/five/b_5.jpg + resource/five/g_1.jpg + resource/five/g_2.jpg + resource/five/g_3.jpg + resource/five/g_4.jpg + resource/five/g_5.jpg + resource/five/nb_1.jpg + resource/five/nb_2.jpg + resource/five/nb_3.jpg + resource/five/nb_4.jpg + resource/five/nb_5.jpg + resource/five/new_bg_sample.jpg + resource/five/ng_1.jpg + resource/five/ng_2.jpg + resource/five/ng_3.jpg + resource/five/ng_4.jpg + resource/five/ng_5.jpg + _exp/FontsFree-Net-Acumin-Pro-Semibold.ttf + resource/hk_holder/b.jpg + resource/hk_holder/g.jpg + resource/hk_holder/p.jpg + resource/hk_holder/r.jpg + resource/hk_holder/sample.jpg + resource/hk_holder/y.jpg + resource/hk_holder/m.jpg + resource/hk_holder/st.jpg + resource/hk_holder/w.jpg + resource/hk_holder/a.jpg + resource/hk_holder/pg.jpg + resource/a.jpg + resource/pg.jpg + resource/background_21.jpg + resource/background_22.jpg + resource/background_23.jpg + resource/background_24.jpg + resource/background_25.jpg + resource/background_26.jpg + resource/background_27.jpg + resource/background_28.jpg + resource/background_29.jpg + resource/background_30.jpg + resource/five/kb_1.jpg + resource/five/kb_2.jpg + resource/five/kb_3.jpg + resource/five/kb_4.jpg + resource/five/kb_5.jpg + resource/five/kg_1.jpg + resource/five/kg_2.jpg + resource/five/kg_3.jpg + resource/five/kg_4.jpg + resource/five/kg_5.jpg + diff --git a/NameCreater/NameCreater.ui b/NameCreater/NameCreater.ui index b9a2fcc..7567317 100644 --- a/NameCreater/NameCreater.ui +++ b/NameCreater/NameCreater.ui @@ -60,7 +60,7 @@ 10 40 851 - 581 + 681 @@ -77,6 +77,91 @@ border-color: rgb(255, 255, 255); QFrame::Raised + + + + + 0 + 76 + + + + Open File + + + + + + + + Yu Gothic UI + 20 + 50 + false + false + + + + +color: rgb(255, 255, 255); + + + + 客製底圖產生器 + + + Qt::AlignCenter + + + + + + + + Yu Gothic UI + 20 + 50 + false + false + + + + +color: rgb(255, 255, 255); + + + + 生日禮產生器(英/英) + + + Qt::AlignCenter + + + + + + + + Yu Gothic UI + 20 + 50 + false + false + + + + +color: rgb(255, 255, 255); + + + + 生日禮產生器(中/英) + + + Qt::AlignCenter + + + @@ -90,8 +175,71 @@ border-color: rgb(255, 255, 255); - - + + + + + 0 + 76 + + + + Open File + + + + + + + + 0 + 76 + + + + Open File + + + + + + + + 0 + 76 + + + + Open File + + + + + + + + Yu Gothic UI + 20 + 50 + false + false + + + + +color: rgb(255, 255, 255); + + + + 生日禮產生器 + + + Qt::AlignCenter + + + + + Yu Gothic UI @@ -106,15 +254,15 @@ border-color: rgb(255, 255, 255); - 小方巾產生器 + 五入組拆成單入產生器 Qt::AlignCenter - - + + 0 @@ -162,8 +310,8 @@ border-color: rgb(255, 255, 255); - - + + Yu Gothic UI @@ -178,15 +326,38 @@ border-color: rgb(255, 255, 255); - 五入組拆成單入產生器 + 五入組產生器 Qt::AlignCenter - - + + + + + Yu Gothic UI + 20 + 50 + false + false + + + + color: rgb(255, 255, 255); + + + + 小方巾產生器 + + + Qt::AlignCenter + + + + + 0 @@ -222,31 +393,8 @@ color: rgb(250, 250, 250); - - - - - Yu Gothic UI - 20 - 50 - false - false - - - - color: rgb(255, 255, 255); - - - - 五入組產生器 - - - Qt::AlignCenter - - - - - + + 0 @@ -254,118 +402,7 @@ color: rgb(250, 250, 250); - Open File - - - - - - - - Yu Gothic UI - 20 - 50 - false - false - - - - -color: rgb(255, 255, 255); - - - - 生日禮產生器 - - - Qt::AlignCenter - - - - - - - - 0 - 76 - - - - Open File - - - - - - - - Yu Gothic UI - 20 - 50 - false - false - - - - -color: rgb(255, 255, 255); - - - - 生日禮產生器(中/英) - - - Qt::AlignCenter - - - - - - - - 0 - 76 - - - - Open File - - - - - - - - Yu Gothic UI - 20 - 50 - false - false - - - - -color: rgb(255, 255, 255); - - - - 生日禮產生器(英/英) - - - Qt::AlignCenter - - - - - - - - 0 - 76 - - - - Open File + Open Dialog diff --git a/NameCreater/NameCreater.vcxproj b/NameCreater/NameCreater.vcxproj index 493e772..7f893a9 100644 --- a/NameCreater/NameCreater.vcxproj +++ b/NameCreater/NameCreater.vcxproj @@ -112,8 +112,14 @@ xcopy /y "$(ProjectDir)_exp\*" "$(TargetDir)" - /Zm100 + /Zm1000 + + + + + + @@ -179,11 +185,13 @@ + + @@ -193,6 +201,7 @@ + diff --git a/NameCreater/NameCreater.vcxproj.filters b/NameCreater/NameCreater.vcxproj.filters index c1ef383..d574e34 100644 --- a/NameCreater/NameCreater.vcxproj.filters +++ b/NameCreater/NameCreater.vcxproj.filters @@ -64,6 +64,9 @@ Creaters + + Creaters + @@ -96,4 +99,14 @@ Resource Files + + + Form Files + + + + + Creaters + + \ No newline at end of file diff --git a/NameCreater/NameCreater.vcxproj.user b/NameCreater/NameCreater.vcxproj.user index a96a6e9..8932e1a 100644 --- a/NameCreater/NameCreater.vcxproj.user +++ b/NameCreater/NameCreater.vcxproj.user @@ -17,15 +17,23 @@ WindowsLocalDebugger - 2024-03-08T00:24:36.2679670Z + 2024-05-14T07:08:49.3700216Z + + - 2024-03-08T00:24:36.4421487Z + 2024-05-14T07:08:49.6936159Z + + - 2024-03-08T00:24:36.6106971Z + 2024-05-14T07:08:49.8356144Z + + - 2024-03-08T00:24:36.7243928Z + 2024-05-14T07:08:49.9726151Z + + \ No newline at end of file diff --git a/NameCreater/_exp/客制背景範例_中.csv b/NameCreater/_exp/客制背景範例_中.csv new file mode 100644 index 0000000..ce8e058 --- /dev/null +++ b/NameCreater/_exp/客制背景範例_中.csv @@ -0,0 +1,61 @@ +name +޷ +¨K + +E +~ +[ +`ʹ +GYg +LRP +LMo +ˢ +T +D +ⴴ +l +p +l +iʹ +ɵY +tغ +{ +dl +\ +󭸿 +LN +Lְa +Ĭ˧g +ˡ +~ +L֦w +hP +GȨ +|C +ff +~ +ӿ +²g +ΩӼ +к +_ۨ +P +if +Lw +tw +L +dt +ڬ +Ť֪N +xw +ɳ +A +ո +O +LԦw +dq@ +GX +GӰa +կCn +w + diff --git a/NameCreater/customlogo.cpp b/NameCreater/customlogo.cpp new file mode 100644 index 0000000..60efdb7 --- /dev/null +++ b/NameCreater/customlogo.cpp @@ -0,0 +1,264 @@ +#include "customlogo.h" +#include "ui_customlogo.h" +#include "QFileDialog" + +#include +#include +#include +#include +#include +#include + + +static QPointF BG_POS[] = { + QPointF(159, 61), QPointF(482, 61), QPointF(802, 61), + QPointF(1122, 61), QPointF(1449, 61), QPointF(1772, 61), + QPointF(2095, 61), QPointF(2414, 61), QPointF(2738, 61), + QPointF(3060, 61), QPointF(900, 2094), QPointF(900, 2420), +}; + +static int BG_POS_COUNT = sizeof(BG_POS) / sizeof(BG_POS[0]); + + + +static QPointF NAME_OFFSET_START = QPointF(79, 377); +static qreal EACH_WORD_OFFSET = 142; + +static QColor FONT_COLOR = QColor(0, 0, 0); + +CustomLogo::CustomLogo(QFont* font, QDialog* parent): + QDialog(parent), + ui(new Ui::CustomLogo), + customFont(font) +{ + ui->setupUi(this); + + + connect(ui->load_bg_btn, &QPushButton::released,this, &CustomLogo::onClickedBtn); + connect(ui->load_list_btn, &QPushButton::released, this, &CustomLogo::onClickedBtn); +} + +CustomLogo::~CustomLogo() +{ + delete ui; +} + +void CustomLogo::loadBGFromFile() +{ + auto fileContentReady = [this](const QString& fileName, const QByteArray& fileContent) { + if (fileName.isEmpty()) { + // No file was selected + }else{ + QPixmap pix; + if(pix.loadFromData(fileContent,"JPG")) { + ui->display_label->setPixmap(pix); + }else{ + qDebug()<<"Data content not image format"; + } + + } + + + }; + + QFileDialog::getOpenFileContent("Image (*.jpg)", fileContentReady); +} + +void CustomLogo::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); + +} + +void CustomLogo::gerneraImageFromList(const QList& nameList, Name_Type_e type) +{ + int export_times = 0; + QGraphicsScene scene; + scene.setBackgroundBrush(QBrush(QColor(255, 255, 255))); + QGraphicsView view(&scene); + + 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_WIDTH, BG_HEIGHT); + bg_item->setBrush(QBrush(QColor(255, 255, 255))); + scene.addItem(bg_item); + } + + + QGraphicsPixmapItem* name_bgItem = new QGraphicsPixmapItem(*ui->display_label->pixmap()); + bool rot = (idx == 10 || idx == 11); + name_bgItem->setRotation(rot ? -90 : 0); + name_bgItem->setPos(BG_POS[idx]); + 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; + 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; + QPointF pos = NAME_OFFSET_START; + qreal y_offset = 0; + if (name_len == 2) { + if (!rot) { + pos.setY(pos.y() + 82.0 * xscale); + } + else { + pos.setX(pos.x() + 82.0 * xscale); + + } + y_offset = 25; + } + + for (int k = 0; k < name_len; k++) { + QGraphicsTextItem* textItem = new QGraphicsTextItem(name.mid(k, 1), name_bgItem); + textItem->setFont(*customFont); + textItem->setDefaultTextColor(FONT_COLOR); + textItem->setPos(pos.x(),pos.y() + k* EACH_WORD_OFFSET + y_offset); + textItem->setTransform(QTransform::fromScale(xscale, yscale)); + scene.addItem(textItem); + } + } + 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(); + +} + +QList CustomLogo::getNameByFileContent(Name_Type_e type, const QByteArray& conetent) +{ + QList nameList; + + QTextCodec* tc = QTextCodec::codecForName("Big5"); + 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: + name = csvList.at(0); + break; + default: + break; + + } + + qDebug() << "row :" << row << " " << name; + + if (name.compare("name_1") == 0 || name.compare("name") == 0 || + eng_name.compare("eng_name") == 0 ) { + //pass first line + continue; + } + + info.name1 = name; + + nameList.append(info); + + row++; + } + return nameList; +} + + +void CustomLogo::onClickedBtn() { + auto sender = (QPushButton*)QObject::sender(); + + if (sender == ui->load_bg_btn) { + loadBGFromFile(); + } + else if (sender == ui->load_list_btn) { + loadListFromFile(); + } + +} + + +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 new file mode 100644 index 0000000..faddeb1 --- /dev/null +++ b/NameCreater/customlogo.h @@ -0,0 +1,39 @@ +#ifndef CUSTOMLOGO_H +#define CUSTOMLOGO_H + +#include +#include "INameCreater.h" +#include "QFont" + +namespace Ui { +class CustomLogo; +} + +class CustomLogo : public QDialog +{ + Q_OBJECT + +public: + explicit CustomLogo(QFont *customFont, QDialog *parent = nullptr); + ~CustomLogo(); + +private: + Ui::CustomLogo *ui; + QFont* customFont; + + 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); + +private Q_SLOTS: + void onClickedBtn(); + + + +}; + +#endif // CUSTOMLOGO_H diff --git a/NameCreater/customlogo.ui b/NameCreater/customlogo.ui new file mode 100644 index 0000000..eb1f860 --- /dev/null +++ b/NameCreater/customlogo.ui @@ -0,0 +1,66 @@ + + + CustomLogo + + + + 0 + 0 + 545 + 1741 + + + + Form + + + + + 20 + 10 + 293 + 1715 + + + + + + + :/NameCreater/resource/custom_logo/bg_1.jpg + + + false + + + + + + 340 + 70 + 141 + 51 + + + + Load BG + + + + + + 340 + 160 + 141 + 51 + + + + Load List + + + + + + + + diff --git a/NameCreater/def.h b/NameCreater/def.h index cf185e1..45b1110 100644 --- a/NameCreater/def.h +++ b/NameCreater/def.h @@ -1,6 +1,6 @@ #ifndef DEF_H #define DEF_H -#define VERSION "v2.4.6" +#define VERSION "v2.5.0" #endif // DEF_H diff --git a/NameCreater/resource/custom_logo/bg_1.jpg b/NameCreater/resource/custom_logo/bg_1.jpg new file mode 100644 index 0000000..9e41326 Binary files /dev/null and b/NameCreater/resource/custom_logo/bg_1.jpg differ diff --git a/NameCreater/resource/custom_logo/demo_1.jpg b/NameCreater/resource/custom_logo/demo_1.jpg new file mode 100644 index 0000000..73a3564 Binary files /dev/null and b/NameCreater/resource/custom_logo/demo_1.jpg differ