From a9aa1a033633d9ca8b44607a36a4e2ec21aee57b Mon Sep 17 00:00:00 2001 From: ShallowGreen123 <2608653986@qq.com> Date: Sat, 8 Oct 2022 23:56:14 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9Aadd=20C=20file=20format=20generati?= =?UTF-8?q?on=20tool.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 + LVGL.Simulator/LVGL.Simulator.cpp | 11 +- LVGL.Simulator/lvgl_mydemo/a.exe | Bin 0 -> 135962 bytes .../lvgl_mydemo/lib/lib_c_flie_format.c | 141 ++++++++++++++++++ LVGL.Simulator/lvgl_mydemo/lib/lib_log.h | 1 + LVGL.Simulator/lvgl_mydemo/lvgl_app.c | 6 +- .../lvgl_mydemo/screen/.clang-format | 18 ++- .../lvgl_mydemo/screen/gui_main_scr.c | 29 ++-- .../lvgl_mydemo/screen/gui_main_scr.h | 4 +- .../lvgl_mydemo/screen/gui_test1_scr.c | 28 ++-- .../lvgl_mydemo/screen/gui_test1_scr.h | 4 +- 11 files changed, 194 insertions(+), 51 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 LVGL.Simulator/lvgl_mydemo/a.exe create mode 100644 LVGL.Simulator/lvgl_mydemo/lib/lib_c_flie_format.c diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..691a8f6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.errorSquiggles": "Disabled" +} \ No newline at end of file diff --git a/LVGL.Simulator/LVGL.Simulator.cpp b/LVGL.Simulator/LVGL.Simulator.cpp index 1afaa9c..21ac65e 100644 --- a/LVGL.Simulator/LVGL.Simulator.cpp +++ b/LVGL.Simulator/LVGL.Simulator.cpp @@ -1,13 +1,4 @@ -/************************************************************************ - * FilePath : LVGL.Simulator.cpp - * Author : GX.Duan - * Date : 2022-08-07 15:20:34 - * LastEditTime : 2022-09-10 16:05:20 - * LastEditors : ShallowGreen123 2608653986@qq.com - * Copyright (c): 2022 by GX.Duan, All Rights Reserved. - * Github : https://github.com/ShallowGreen123/lvgl_mydemo - ************************************************************************/ -/* +/* * PROJECT: LVGL PC Simulator using Visual Studio * FILE: LVGL.Simulator.cpp * PURPOSE: Implementation for LVGL ported to Windows Desktop diff --git a/LVGL.Simulator/lvgl_mydemo/a.exe b/LVGL.Simulator/lvgl_mydemo/a.exe new file mode 100644 index 0000000000000000000000000000000000000000..8441809ad13c07c17965d55d8f1e7da679aff568 GIT binary patch literal 135962 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 literal 0 HcmV?d00001 diff --git a/LVGL.Simulator/lvgl_mydemo/lib/lib_c_flie_format.c b/LVGL.Simulator/lvgl_mydemo/lib/lib_c_flie_format.c new file mode 100644 index 0000000..6b04a50 --- /dev/null +++ b/LVGL.Simulator/lvgl_mydemo/lib/lib_c_flie_format.c @@ -0,0 +1,141 @@ +/** + * @file c_flie_format.c + * @author Gx.Duan + * @brief C File format generation + * + * method of application: + * + * 1.Run [a.exe] and input + * [file name] to generate the file in the current path. + * + * 2.Run [a.exe] [file path] + '\' and + * input [file name] to generate the file in the specified path. + * + * @version 0.1 + * @date 2022-10-08 + * + * @copyright Copyright (c) 2022 + * + */ + +#define _CRT_SECURE_NO_WARNINGS +#include +#include +#include +#include + +#define DEF_MAX_FILE_NAME_LEN 32 +#define DEF_MAX_FILE_PATH_LEN 128 + +char file_name[DEF_MAX_FILE_NAME_LEN]; +char file_path[DEF_MAX_FILE_PATH_LEN]; +char file_c[DEF_MAX_FILE_PATH_LEN]; +char file_h[DEF_MAX_FILE_PATH_LEN]; + +// +void WriteCFile(FILE *fp_c); +void WriteHFile(FILE *fc_h); + +int main(int argc, char **argv) +{ + FILE *fp_c = NULL; + FILE *fp_h = NULL; + + if (argv[1] != NULL) { + strcpy(file_path, argv[1]); + } else { + strcpy(file_path, "./"); + } + + printf("intput file name : "); + scanf("%s", file_name); + + sprintf(file_path, "%s%s", file_path, file_name); + + WriteCFile(fp_c); + WriteHFile(fp_h); + + fclose(fp_c); + fclose(fp_h); +} + +void WriteCFile(FILE *fp_c) +{ + int i; + char name_upper[DEF_MAX_FILE_NAME_LEN]; + char name_lower[DEF_MAX_FILE_NAME_LEN]; + + sprintf(file_c, "%s%s", file_path, ".c"); + fp_c = fopen(file_c, "w+"); + + for (i = 0; i < strlen(file_name); i++) { + name_upper[i] = toupper(file_name[i]); + } + for (i = 0; i < strlen(file_name); i++) { + name_lower[i] = tolower(file_name[i]); + } + + fprintf(fp_c, "\n#define DEF_%s_MODULE \n", name_upper); + fprintf(fp_c, "/********************************************************************************* \n"); + fprintf(fp_c, " * INCLUDES \n"); + fprintf(fp_c, " *********************************************************************************/ \n"); + fprintf(fp_c, "#include \"%s.h\" \n\n", name_lower); + fprintf(fp_c, "/********************************************************************************* \n"); + fprintf(fp_c, " * DEFINES \n"); + fprintf(fp_c, " *********************************************************************************/ \n\n"); + fprintf(fp_c, "/********************************************************************************* \n"); + fprintf(fp_c, " * MACROS \n"); + fprintf(fp_c, " *********************************************************************************/ \n\n"); + fprintf(fp_c, "/********************************************************************************* \n"); + fprintf(fp_c, " * TYPEDEFS \n"); + fprintf(fp_c, " *********************************************************************************/ \n\n"); + fprintf(fp_c, "/********************************************************************************* \n"); + fprintf(fp_c, " * STATIC FUNCTION \n"); + fprintf(fp_c, " *********************************************************************************/ \n\n"); + fprintf(fp_c, "/********************************************************************************* \n"); + fprintf(fp_c, " * GLOBAL FUNCTION \n"); + fprintf(fp_c, " *********************************************************************************/ \n\n"); +} + +void WriteHFile(FILE *fp_h) +{ + int i = 0; + char name_upper[DEF_MAX_FILE_NAME_LEN]; + char name_lower[DEF_MAX_FILE_NAME_LEN]; + + sprintf(file_h, "%s%s", file_path, ".h"); + fp_h = fopen(file_h, "w+"); + + for (i = 0; i < strlen(file_name); i++) { + name_upper[i] = toupper(file_name[i]); + } + for (i = 0; i < strlen(file_name); i++) { + name_lower[i] = tolower(file_name[i]); + } + + fprintf(fp_h, "\n#ifndef __%s_H__ \n", name_upper); + fprintf(fp_h, "#define __%s_H__ \n", name_upper); + fprintf(fp_h, "/********************************************************************************* \n"); + fprintf(fp_h, " * INCLUDES \n"); + fprintf(fp_h, " *********************************************************************************/ \n\n"); + fprintf(fp_h, "/********************************************************************************* \n"); + fprintf(fp_h, " * DEFINES \n"); + fprintf(fp_h, " *********************************************************************************/ \n"); + + fprintf(fp_h, "#ifdef DEF_%s_MODULE\n", name_upper); + fprintf(fp_h, "# define DEF_%s_MODULE\n", name_upper); + fprintf(fp_h, "#else \n"); + fprintf(fp_h, "# define DEF_%s_MODULE extern\n", name_upper); + fprintf(fp_h, "#endif\n\n"); + + fprintf(fp_h, "/********************************************************************************* \n"); + fprintf(fp_h, " * MACROS \n"); + fprintf(fp_h, " *********************************************************************************/ \n\n"); + fprintf(fp_h, "/********************************************************************************* \n"); + fprintf(fp_h, " * TYPEDEFS \n"); + fprintf(fp_h, " *********************************************************************************/ \n\n"); + fprintf(fp_h, "/********************************************************************************* \n"); + fprintf(fp_h, " * GLOBAL FUNCTION \n"); + fprintf(fp_h, " *********************************************************************************/ \n\n"); + fprintf(fp_h, "\n#endif /* __%s_H__ */ \n", name_upper); +} diff --git a/LVGL.Simulator/lvgl_mydemo/lib/lib_log.h b/LVGL.Simulator/lvgl_mydemo/lib/lib_log.h index c094913..608162e 100644 --- a/LVGL.Simulator/lvgl_mydemo/lib/lib_log.h +++ b/LVGL.Simulator/lvgl_mydemo/lib/lib_log.h @@ -52,6 +52,7 @@ #define DEF_DBG_LV TRACE_LV_DBG #define DEF_LIB_TRACE_FORCE_PRINTF 1 + #define DEF_LOG_COLOR_PRINT_EN 1 #define DEF_LIB_TRACE_MAX_MSG_SIZE 256 diff --git a/LVGL.Simulator/lvgl_mydemo/lvgl_app.c b/LVGL.Simulator/lvgl_mydemo/lvgl_app.c index e1aa5cf..724bb6e 100644 --- a/LVGL.Simulator/lvgl_mydemo/lvgl_app.c +++ b/LVGL.Simulator/lvgl_mydemo/lvgl_app.c @@ -1,10 +1,10 @@ /************************************************************************ * FilePath : lvgl_app.c * Author : GX.Duan - * Date : 2022-08-07 - * LastEditTime : 2022-08-19 + * Date : 2022-08-07 15:20:41 + * LastEditTime : 2022-10-01 23:02:06 * LastEditors : ShallowGreen123 2608653986@qq.com - * Copyright (c): by GX.Duan, All Rights Reserved. + * Copyright (c): 2022 by GX.Duan, All Rights Reserved. * Github : https://github.com/ShallowGreen123/lvgl_mydemo ************************************************************************/ diff --git a/LVGL.Simulator/lvgl_mydemo/screen/.clang-format b/LVGL.Simulator/lvgl_mydemo/screen/.clang-format index c0b4f0e..32c871c 100644 --- a/LVGL.Simulator/lvgl_mydemo/screen/.clang-format +++ b/LVGL.Simulator/lvgl_mydemo/screen/.clang-format @@ -96,6 +96,16 @@ BreakBeforeBinaryOperators: NonAssignment # Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom # 注:这里认为语句块也属于函数 BreakBeforeBraces: Custom +BraceWrapping: + AfterEnum: false + AfterStruct: false + AfterUnion: false + AfterCaseLabel: false + AfterClass: true + AfterFunction: true + SplitEmptyFunction: false + AfterNamespace: false + AfterExternBlock: false # 在三元运算符前换行 BreakBeforeTernaryOperators: false @@ -133,7 +143,8 @@ FixNamespaceComments: true # 缩进case标签 IndentCaseLabels: false -IndentPPDirectives: None +# Possible values: None\AfterHash\BeforeHash +IndentPPDirectives: AfterHash # 缩进宽度 IndentWidth: 4 @@ -219,7 +230,7 @@ IndentCaseLabels: true #三元运算符将放置在换行符之后 BreakBeforeTernaryOperators: true -BreakBeforeBraces: Attach +BreakBeforeBraces: Custom AllowShortCaseLabelsOnASingleLine: false @@ -230,6 +241,9 @@ AlignTrailingComments: true AlignOperands: AlignAfterOperator #对齐宏 +# They can also be read as a whole for compatibility. +# The choices are: +# - None - Consecutive - AcrossEmptyLines - AcrossComments - AcrossEmptyLinesAndComments AlignConsecutiveMacros: AcrossEmptyLinesAndComments #对齐连续等号 AlignConsecutiveAssignments: AcrossEmptyLines diff --git a/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.c b/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.c index 3f0f376..04f4e0f 100644 --- a/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.c +++ b/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.c @@ -2,16 +2,7 @@ * FilePath : gui_main_scr.c * Author : GX.Duan * Date : 2022-08-19 00:25:00 - * LastEditTime : 2022-09-21 22:11:15 - * LastEditors : ShallowGreen123 2608653986@qq.com - * Copyright (c): 2022 by GX.Duan, All Rights Reserved. - * Github : https://github.com/ShallowGreen123/lvgl_mydemo - ************************************************************************/ -/************************************************************************ - * FilePath : gui_main_scr.c - * Author : GX.Duan - * Date : 2022-08-19 00:25:00 - * LastEditTime : 2022-09-10 16:01:12 + * LastEditTime : 2022-10-03 14:42:59 * LastEditors : ShallowGreen123 2608653986@qq.com * Copyright (c): 2022 by GX.Duan, All Rights Reserved. * Github : https://github.com/ShallowGreen123/lvgl_mydemo @@ -43,7 +34,8 @@ static lv_obj_t *label2 = NULL; /********************************************************************************* * STATIC FUNCTION * *******************************************************************************/ -void swithc_btn_event_cb(lv_event_t *e) { +void swithc_btn_event_cb(lv_event_t *e) +{ lv_obj_t *obj = lv_event_get_target(e); if (obj == switch_btn) { @@ -55,7 +47,8 @@ void swithc_btn_event_cb(lv_event_t *e) { /********************************************************************************* * GLOBAL FUNCTION * *******************************************************************************/ -static lv_obj_t *Gui_MainScrCreate(lv_obj_t *parent) { +static lv_obj_t *Gui_MainScrCreate(lv_obj_t *parent) +{ MainScrRoot = lv_obj_create(parent); lv_obj_set_size(MainScrRoot, lv_pct(100), lv_pct(100)); lv_obj_set_style_bg_color(MainScrRoot, lv_color_black(), LV_PART_MAIN); @@ -72,24 +65,28 @@ static lv_obj_t *Gui_MainScrCreate(lv_obj_t *parent) { return MainScrRoot; } -static void Gui_MainScrLayout(void) { +static void Gui_MainScrLayout(void) +{ lv_obj_align_to(label, MainScrRoot, LV_ALIGN_CENTER, 0, -30); lv_obj_center(label2); lv_obj_align_to(switch_btn, MainScrRoot, LV_ALIGN_CENTER, 0, 30); } -static void Gui_MainScrEnter(void) { +static void Gui_MainScrEnter(void) +{ Gui_MainScrLayout(); lv_obj_add_event_cb(switch_btn, swithc_btn_event_cb, LV_EVENT_CLICKED, NULL); } -static void Gui_MainScrExit(void) { +static void Gui_MainScrExit(void) +{ lv_obj_remove_event_cb(switch_btn, swithc_btn_event_cb); } -static void Gui_MainScrDestory(void) { +static void Gui_MainScrDestory(void) +{ } const SCR_MGR_SCR_HANDLE_T Gui_MainScrHandle = { diff --git a/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.h b/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.h index 8ed45d0..d7186e4 100644 --- a/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.h +++ b/LVGL.Simulator/lvgl_mydemo/screen/gui_main_scr.h @@ -23,9 +23,9 @@ * MACROS * *******************************************************************************/ #ifdef __MAIN_SCR_C_ -#define DEF_MAIN_SCR_EXT +# define DEF_MAIN_SCR_EXT #else -#define DEF_MAIN_SCR_EXT extern +# define DEF_MAIN_SCR_EXT extern #endif /********************************************************************************* diff --git a/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.c b/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.c index 3c2787b..e2cc56b 100644 --- a/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.c +++ b/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.c @@ -7,16 +7,6 @@ * Copyright (c): 2022 by GX.Duan, All Rights Reserved. * Github : https://github.com/ShallowGreen123/lvgl_mydemo ************************************************************************/ -/************************************************************************ - * FilePath : gui_test1_scr.c - * Author : GX.Duan - * Date : 2022-09-10 17:10:59 - * LastEditTime : 2022-09-10 17:13:08 - * LastEditors : ShallowGreen123 2608653986@qq.com - * Copyright (c): 2022 by GX.Duan, All Rights Reserved. - * Github : https://github.com/ShallowGreen123/lvgl_mydemo - ************************************************************************/ - #define __MAIN_SCR_C_ /********************************************************************************* @@ -44,7 +34,8 @@ static lv_obj_t *BtnLabel = NULL; /********************************************************************************* * STATIC FUNCTION * *******************************************************************************/ -void test1_btn_event_cb(lv_event_t *e) { +void test1_btn_event_cb(lv_event_t *e) +{ lv_obj_t *obj = lv_event_get_target(e); if (obj == test1_btn) { @@ -56,7 +47,8 @@ void test1_btn_event_cb(lv_event_t *e) { /********************************************************************************* * GLOBAL FUNCTION * *******************************************************************************/ -static lv_obj_t *Gui_Test1ScrCreate(lv_obj_t *parent) { +static lv_obj_t *Gui_Test1ScrCreate(lv_obj_t *parent) +{ Test1ScrRoot = lv_obj_create(parent); lv_obj_set_size(Test1ScrRoot, lv_pct(100), lv_pct(100)); lv_obj_set_style_bg_color(Test1ScrRoot, lv_color_black(), LV_PART_MAIN); @@ -73,24 +65,28 @@ static lv_obj_t *Gui_Test1ScrCreate(lv_obj_t *parent) { return Test1ScrRoot; } -static void Gui_Test1ScrLayout(void) { +static void Gui_Test1ScrLayout(void) +{ lv_obj_align_to(Test1Label, Test1ScrRoot, LV_ALIGN_CENTER, 0, -30); lv_obj_center(BtnLabel); lv_obj_align_to(test1_btn, Test1ScrRoot, LV_ALIGN_CENTER, 0, 30); } -static void Gui_Test1ScrEnter(void) { +static void Gui_Test1ScrEnter(void) +{ Gui_Test1ScrLayout(); lv_obj_add_event_cb(test1_btn, test1_btn_event_cb, LV_EVENT_CLICKED, NULL); } -static void Gui_Test1ScrExit(void) { +static void Gui_Test1ScrExit(void) +{ lv_obj_remove_event_cb(test1_btn, test1_btn_event_cb); } -static void Gui_Test1ScrDestory(void) { +static void Gui_Test1ScrDestory(void) +{ } const SCR_MGR_SCR_HANDLE_T Gui_Test1ScrHandle = { diff --git a/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.h b/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.h index 1bda333..0a7d146 100644 --- a/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.h +++ b/LVGL.Simulator/lvgl_mydemo/screen/gui_test1_scr.h @@ -23,9 +23,9 @@ * MACROS * *******************************************************************************/ #ifdef __TEST1_SCR_C_ -#define DEF_TEST1_SCR_EXT +# define DEF_TEST1_SCR_EXT #else -#define DEF_TEST1_SCR_EXT extern +# define DEF_TEST1_SCR_EXT extern #endif /*********************************************************************************