GT-HMI
GT-HMI (Human Machine Interface) is a domestic open-source GUI framework and free design software.
gitee: https://gitee.com/genitop/GT-HMI-Engine
Official website: https://www.hmi.gaotongfont.cn/sy
Open source license: MIT
It provides everything needed to create embedded GUIs with user-friendly graphical elements, beautiful visual effects, and low memory usage. The design is optimized for the domestic market and user habits, tailored specifically for domestic engineers!
The product is passionately developed by China Qualcomm GENITOP, inheriting 30 years of experience in Chinese character display technology and Chinese character technology. The product consists of the upper computer GT-HMI Designer and the lower computer GT-HMI Engine.
GT HMI Designer is a powerful embedded human-machine interface design software. It offers an intuitive visual design interface, supports various common controls, and provides rich interactive features. Additionally, it supports multi-language interface design and powerful simulation capabilities. With GT HMI Designer, you can easily design beautiful and highly interactive interfaces to meet the needs of various application scenarios.
GT HMI Engine is a powerful, high-performance, multi-platform, multi-language, stable and reliable embedded human-machine interface engine that provides rich controls and strong interactive features.
Features
- The upper computer design software GT-HMI Designer is permanently free, and the lower computer technical framework GT-HMI Engine is open source, with no restrictions on use;
- GT-HMI Designer includes a compiler for the lower computer technical framework, which can automatically generate lower computer code;
- Provides GT-HMI modules, compatible with GT-HMI upper and lower computer software and drivers, which can be used for early development and debugging, or directly as display modules;
- Multi-platform compatibility, easy to port;
- Upper computer design software GT-HMI Designer;
- Can directly generate interactive code, eliminating the tedious task of writing code;
- Simulator simulation is WYSIWYG;
- Includes a large number of commonly used components, such as buttons, text boxes, progress bars, radio buttons, etc.;
- Supports the entire series of Qualcomm dot matrix/vector font libraries, supporting Chinese and foreign languages as well as minority languages, with various font sizes and styles;
- Includes built-in Chinese and English input methods;
- Continuously updated GUI example library and UI resource library;
- Lower computer technical framework GT-HMI Engine;
- Written in pure C language, with no barriers to use;
- Compact and efficient, platform-independent, requiring only 24K RAM + 32K FLASH, can run on small resource platforms like Cortex-ARM M0/M3;
- Easy to port, switching platforms only requires porting the timer, TP, and LCD interfaces, with provided porting tutorials and examples;
- Rich and detailed examples, with development kits that are easy to get started;
- Supports custom function development, allowing the GT-HMI Engine to customize controls and functions, which can be combined into the standard code generated by GT-HMI Designer;
- Can be used with systems (such as RTOS, Linux, etc.) and bare metal.
Software Architecture
Software Architecture Description
Directory | Description |
---|---|
doc/ | Related documentation and information |
driver/ | Porting code related to low-level drivers |
examples/ | Examples of control calls |
sources/ | Images used internally by the GUI |
test/ | Unit test code |
src/ | GUI framework code |
|-gt_conf.h | Configuration |
|-core/ | Core code of the GUI |
|-extra/ | Extended controls |
|-font/ | Fonts |
|-hal/ | Middleware, intermediate layer |
|-others/ | Code that is hard to classify |
|-utils/ | Utility classes |
|-widgets/ | Controls |
|-|-gt_conf_widgets.h | Control switch macros |
Demo Examples
Multi-Language Example
#include "gt_ui.h"
// screen_home
gt_obj_st * screen_home = NULL;
static gt_obj_st * lab1 = NULL;
static gt_obj_st * rect1 = NULL;
static gt_obj_st * btn1 = NULL;
static gt_obj_st * btn2 = NULL;
static gt_obj_st * btn3 = NULL;
static gt_obj_st * btn4 = NULL;
static gt_obj_st * btn5 = NULL;
static gt_obj_st * btn7 = NULL;
static gt_obj_st * btn8 = NULL;
static gt_obj_st * btn9 = NULL;
static gt_obj_st * btn10 = NULL;
static void btn1_0_cb(gt_event_st * e) {
gt_init_screen_1();
}
static void btn2_0_cb(gt_event_st * e) {
gt_init_screen_2();
}
static void btn3_0_cb(gt_event_st * e) {
gt_init_screen_3();
}
static void btn4_0_cb(gt_event_st * e) {
gt_init_screen_4();
}
static void btn5_0_cb(gt_event_st * e) {
gt_init_screen_5();
}
static void btn7_0_cb(gt_event_st * e) {
gt_init_screen_7();
}
static void btn8_0_cb(gt_event_st * e) {
gt_init_screen_8();
}
static void btn9_0_cb(gt_event_st * e) {
gt_init_screen_9();
}
static void btn10_0_cb(gt_event_st * e) {
gt_init_screen_10();
}
void gt_init_screen_home(void)
{
screen_home = gt_obj_create(NULL);
gt_screen_set_bgcolor(screen_home, gt_color_hex(0xFFFFFF));
// lab1
lab1 = gt_label_create(screen_home);
gt_obj_set_pos(lab1, 295, 16);
gt_obj_set_size(lab1, 118, 40);
gt_label_set_font_color(lab1, gt_color_hex(0x000000));
gt_label_set_font_size(lab1, 24);
gt_label_set_font_family_cn(lab1, 16);
gt_label_set_font_align(lab1, GT_ALIGN_LEFT);
gt_label_set_text(lab1, "Language Settings");
// rect1
rect1 = gt_rect_create(screen_home);
gt_obj_set_pos(rect1, 8, 55);
gt_obj_set_size(rect1, 660, 1);
gt_rect_set_radius(rect1, 0);
gt_rect_set_bg_color(rect1, gt_color_hex(0xdbdbdb));
gt_rect_set_color_border(rect1, gt_color_hex(0xdbdbdb));
gt_rect_set_fill(rect1, 1);
gt_rect_set_border(rect1, 0);
// btn1
btn1 = gt_btn_create(screen_home);
gt_obj_set_pos(btn1, 29, 76);
gt_obj_set_size(btn1, 160, 43);
gt_btn_set_font_color(btn1, gt_color_hex(0x000000));
gt_btn_set_font_size(btn1, 24);
gt_btn_set_font_family_cn(btn1, 16);
gt_btn_set_font_family_en(btn1, 84);
gt_btn_set_font_align(btn1, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn1, 5, 0);
gt_btn_set_font_thick_en(btn1, 30);
gt_btn_set_font_thick_cn(btn1, 30);
gt_btn_set_font_gray(btn1, 1);
gt_btn_set_text(btn1, "Chinese");
gt_btn_set_color_background(btn1, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn1, 8);
gt_obj_add_event_cb(btn1, btn1_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn2
btn2 = gt_btn_create(screen_home);
gt_obj_set_pos(btn2, 264, 76);
gt_obj_set_size(btn2, 160, 43);
gt_btn_set_font_color(btn2, gt_color_hex(0x000000));
gt_btn_set_font_size(btn2, 24);
gt_btn_set_font_family_cn(btn2, 16);
gt_btn_set_font_family_en(btn2, 84);
gt_btn_set_font_align(btn2, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn2, 5, 0);
gt_btn_set_font_thick_en(btn2, 30);
gt_btn_set_font_thick_cn(btn2, 30);
gt_btn_set_font_gray(btn2, 1);
gt_btn_set_text(btn2, "Japanese");
gt_btn_set_color_background(btn2, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn2, 8);
gt_obj_add_event_cb(btn2, btn2_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn3
btn3 = gt_btn_create(screen_home);
gt_obj_set_pos(btn3, 489, 76);
gt_obj_set_size(btn3, 160, 41);
gt_btn_set_font_color(btn3, gt_color_hex(0x000000));
gt_btn_set_font_size(btn3, 24);
gt_btn_set_font_family_cn(btn3, 16);
gt_btn_set_font_family_en(btn3, 84);
gt_btn_set_font_align(btn3, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn3, 5, 0);
gt_btn_set_font_thick_en(btn3, 30);
gt_btn_set_font_thick_cn(btn3, 30);
gt_btn_set_font_gray(btn3, 1);
gt_btn_set_text(btn3, "Korean");
gt_btn_set_color_background(btn3, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn3, 8);
gt_obj_add_event_cb(btn3, btn3_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn4
btn4 = gt_btn_create(screen_home);
gt_obj_set_pos(btn4, 29, 158);
gt_obj_set_size(btn4, 160, 43);
gt_btn_set_font_color(btn4, gt_color_hex(0x000000));
gt_btn_set_font_size(btn4, 24);
gt_btn_set_font_family_cn(btn4, 16);
gt_btn_set_font_family_en(btn4, 41);
gt_btn_set_font_align(btn4, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn4, 5, 0);
gt_btn_set_text(btn4, "English");
gt_btn_set_color_background(btn4, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn4, 8);
gt_obj_add_event_cb(btn4, btn4_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn5
btn5 = gt_btn_create(screen_home);
gt_obj_set_pos(btn5, 263, 158);
gt_obj_set_size(btn5, 160, 43);
gt_btn_set_font_color(btn5, gt_color_hex(0x000000));
gt_btn_set_font_size(btn5, 24);
gt_btn_set_font_family_cn(btn5, 16);
gt_btn_set_font_family_en(btn5, 53);
gt_btn_set_font_align(btn5, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn5, 5, 0);
gt_btn_set_text(btn5, "French");
gt_btn_set_color_background(btn5, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn5, 8);
gt_obj_add_event_cb(btn5, btn5_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn7
btn7 = gt_btn_create(screen_home);
gt_obj_set_pos(btn7, 30, 238);
gt_obj_set_size(btn7, 160, 43);
gt_btn_set_font_color(btn7, gt_color_hex(0x000000));
gt_btn_set_font_size(btn7, 24);
gt_btn_set_font_family_cn(btn7, 16);
gt_btn_set_font_family_en(btn7, 53);
gt_btn_set_font_align(btn7, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn7, 5, 0);
gt_btn_set_text(btn7, "Spanish");
gt_btn_set_color_background(btn7, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn7, 8);
gt_obj_add_event_cb(btn7, btn7_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn8
btn8 = gt_btn_create(screen_home);
gt_obj_set_pos(btn8, 263, 238);
gt_obj_set_size(btn8, 160, 43);
gt_btn_set_font_color(btn8, gt_color_hex(0x000000));
gt_btn_set_font_size(btn8, 24);
gt_btn_set_font_family_cn(btn8, 16);
gt_btn_set_font_family_en(btn8, 41);
gt_btn_set_font_align(btn8, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn8, 5, 0);
gt_btn_set_text(btn8, "Thai");
gt_btn_set_color_background(btn8, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn8, 8);
gt_obj_add_event_cb(btn8, btn8_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn9
btn9 = gt_btn_create(screen_home);
gt_obj_set_pos(btn9, 490, 238);
gt_obj_set_size(btn9, 160, 43);
gt_btn_set_font_color(btn9, gt_color_hex(0x000000));
gt_btn_set_font_size(btn9, 24);
gt_btn_set_font_family_cn(btn9, 16);
gt_btn_set_font_family_en(btn9, 75);
gt_btn_set_font_align(btn9, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn9, 5, 0);
gt_btn_set_text(btn9, "Arabic");
gt_btn_set_color_background(btn9, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn9, 8);
gt_obj_add_event_cb(btn9, btn9_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn10
btn10 = gt_btn_create(screen_home);
gt_obj_set_pos(btn10, 489, 158);
gt_obj_set_size(btn10, 160, 43);
gt_btn_set_font_color(btn10, gt_color_hex(0x000000));
gt_btn_set_font_size(btn10, 24);
gt_btn_set_font_family_cn(btn10, 16);
gt_btn_set_font_family_en(btn10, 60);
gt_btn_set_font_align(btn10, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn10, 5, 0);
gt_btn_set_text(btn10, "Russian");
gt_btn_set_color_background(btn10, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn10, 8);
gt_obj_add_event_cb(btn10, btn10_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
gt_disp_load_scr_anim(screen_home, GT_SCR_ANIM_TYPE_NONE, 500, 0, true);
}
Vector Font Library Example
#include "gt_ui.h"
// screen_home
gt_obj_st * screen_home = NULL;
static gt_obj_st * lab1 = NULL;
static gt_obj_st * rect1 = NULL;
static gt_obj_st * btn1 = NULL;
static gt_obj_st * btn2 = NULL;
static gt_obj_st * btn3 = NULL;
static gt_obj_st * btn4 = NULL;
static gt_obj_st * btn5 = NULL;
static gt_obj_st * btn7 = NULL;
static gt_obj_st * btn8 = NULL;
static gt_obj_st * btn9 = NULL;
static gt_obj_st * btn10 = NULL;
static void btn1_0_cb(gt_event_st * e) {
gt_init_screen_1();
}
static void btn2_0_cb(gt_event_st * e) {
gt_init_screen_2();
}
static void btn3_0_cb(gt_event_st * e) {
gt_init_screen_3();
}
static void btn4_0_cb(gt_event_st * e) {
gt_init_screen_4();
}
static void btn5_0_cb(gt_event_st * e) {
gt_init_screen_5();
}
static void btn7_0_cb(gt_event_st * e) {
gt_init_screen_7();
}
static void btn8_0_cb(gt_event_st * e) {
gt_init_screen_8();
}
static void btn9_0_cb(gt_event_st * e) {
gt_init_screen_9();
}
static void btn10_0_cb(gt_event_st * e) {
gt_init_screen_6();
}
void gt_init_screen_home(void)
{
screen_home = gt_obj_create(NULL);
gt_screen_set_bgcolor(screen_home, gt_color_hex(0xFFFFFF));
// lab1
lab1 = gt_label_create(screen_home);
gt_obj_set_pos(lab1, 207, 10);
gt_obj_set_size(lab1, 309, 40);
gt_label_set_font_color(lab1, gt_color_hex(0x000000));
gt_label_set_font_size(lab1, 24);
gt_label_set_font_family_cn(lab1, 80);
gt_label_set_font_align(lab1, GT_ALIGN_LEFT);
gt_label_set_font_thick_en(lab1, 30);
gt_label_set_font_thick_cn(lab1, 30);
gt_label_set_font_gray(lab1, 4);
gt_label_set_text(lab1, "Vector Font Library, Grayscale and Multi-Shape");
// rect1
rect1 = gt_rect_create(screen_home);
gt_obj_set_pos(rect1, 8, 55);
gt_obj_set_size(rect1, 660, 1);
gt_rect_set_radius(rect1, 0);
gt_rect_set_bg_color(rect1, gt_color_hex(0xdbdbdb));
gt_rect_set_color_border(rect1, gt_color_hex(0xdbdbdb));
gt_rect_set_fill(rect1, 1);
gt_rect_set_border(rect1, 0);
// btn1
btn1 = gt_btn_create(screen_home);
gt_obj_set_pos(btn1, 33, 78);
gt_obj_set_size(btn1, 160, 43);
gt_btn_set_font_color(btn1, gt_color_hex(0x000000));
gt_btn_set_font_size(btn1, 24);
gt_btn_set_font_family_cn(btn1, 80);
gt_btn_set_font_family_en(btn1, 84);
gt_btn_set_font_align(btn1, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn1, 0, 0);
gt_btn_set_font_thick_en(btn1, 30);
gt_btn_set_font_thick_cn(btn1, 30);
gt_btn_set_font_gray(btn1, 4);
gt_btn_set_text(btn1, "Chinese Song Typeface");
gt_btn_set_color_background(btn1, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn1, 8);
gt_obj_add_event_cb(btn1, btn1_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn2
btn2 = gt_btn_create(screen_home);
gt_obj_set_pos(btn2, 266, 76);
gt_obj_set_size(btn2, 160, 43);
gt_btn_set_font_color(btn2, gt_color_hex(0x000000));
gt_btn_set_font_size(btn2, 24);
gt_btn_set_font_family_cn(btn2, 80);
gt_btn_set_font_family_en(btn2, 84);
gt_btn_set_font_align(btn2, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn2, 0, 0);
gt_btn_set_font_thick_en(btn2, 30);
gt_btn_set_font_thick_cn(btn2, 30);
gt_btn_set_font_gray(btn2, 4);
gt_btn_set_text(btn2, "Chinese Black Typeface");
gt_btn_set_color_background(btn2, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn2, 8);
gt_obj_add_event_cb(btn2, btn2_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn3
btn3 = gt_btn_create(screen_home);
gt_obj_set_pos(btn3, 493, 76);
gt_obj_set_size(btn3, 160, 41);
gt_btn_set_font_color(btn3, gt_color_hex(0x000000));
gt_btn_set_font_size(btn3, 24);
gt_btn_set_font_family_cn(btn3, 80);
gt_btn_set_font_family_en(btn3, 84);
gt_btn_set_font_align(btn3, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn3, 0, 0);
gt_btn_set_font_thick_en(btn3, 30);
gt_btn_set_font_thick_cn(btn3, 30);
gt_btn_set_font_gray(btn3, 4);
gt_btn_set_text(btn3, "Italic English");
gt_btn_set_color_background(btn3, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn3, 8);
gt_obj_add_event_cb(btn3, btn3_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn4
btn4 = gt_btn_create(screen_home);
gt_obj_set_pos(btn4, 33, 160);
gt_obj_set_size(btn4, 160, 43);
gt_btn_set_font_color(btn4, gt_color_hex(0x000000));
gt_btn_set_font_size(btn4, 24);
gt_btn_set_font_family_cn(btn4, 80);
gt_btn_set_font_family_en(btn4, 41);
gt_btn_set_font_align(btn4, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn4, 0, 0);
gt_btn_set_font_thick_en(btn4, 30);
gt_btn_set_font_thick_cn(btn4, 30);
gt_btn_set_font_gray(btn4, 4);
gt_btn_set_text(btn4, "Handwritten English");
gt_btn_set_color_background(btn4, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn4, 8);
gt_obj_add_event_cb(btn4, btn4_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn5
btn5 = gt_btn_create(screen_home);
gt_obj_set_pos(btn5, 265, 160);
gt_obj_set_size(btn5, 160, 43);
gt_btn_set_font_color(btn5, gt_color_hex(0x000000));
gt_btn_set_font_size(btn5, 24);
gt_btn_set_font_family_cn(btn5, 80);
gt_btn_set_font_family_en(btn5, 53);
gt_btn_set_font_align(btn5, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn5, 0, 0);
gt_btn_set_text(btn5, "Japanese Black Typeface");
gt_btn_set_color_background(btn5, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn5, 8);
gt_obj_add_event_cb(btn5, btn5_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn7
btn7 = gt_btn_create(screen_home);
gt_obj_set_pos(btn7, 32, 240);
gt_obj_set_size(btn7, 160, 43);
gt_btn_set_font_color(btn7, gt_color_hex(0x000000));
gt_btn_set_font_size(btn7, 24);
gt_btn_set_font_family_cn(btn7, 80);
gt_btn_set_font_family_en(btn7, 53);
gt_btn_set_font_align(btn7, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn7, 0, 0);
gt_btn_set_font_thick_en(btn7, 30);
gt_btn_set_font_thick_cn(btn7, 30);
gt_btn_set_font_gray(btn7, 4);
gt_btn_set_text(btn7, "Russian");
gt_btn_set_color_background(btn7, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn7, 8);
gt_obj_add_event_cb(btn7, btn7_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn8
btn8 = gt_btn_create(screen_home);
gt_obj_set_pos(btn8, 267, 240);
gt_obj_set_size(btn8, 160, 43);
gt_btn_set_font_color(btn8, gt_color_hex(0x000000));
gt_btn_set_font_size(btn8, 24);
gt_btn_set_font_family_cn(btn8, 80);
gt_btn_set_font_family_en(btn8, 41);
gt_btn_set_font_align(btn8, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn8, 0, 0);
gt_btn_set_font_thick_en(btn8, 30);
gt_btn_set_font_thick_cn(btn8, 30);
gt_btn_set_font_gray(btn8, 4);
gt_btn_set_text(btn8, "Thai");
gt_btn_set_color_background(btn8, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn8, 8);
gt_obj_add_event_cb(btn8, btn8_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn9
btn9 = gt_btn_create(screen_home);
gt_obj_set_pos(btn9, 494, 240);
gt_obj_set_size(btn9, 160, 43);
gt_btn_set_font_color(btn9, gt_color_hex(0x000000));
gt_btn_set_font_size(btn9, 24);
gt_btn_set_font_family_cn(btn9, 80);
gt_btn_set_font_family_en(btn9, 75);
gt_btn_set_font_align(btn9, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn9, 0, 0);
gt_btn_set_font_thick_en(btn9, 30);
gt_btn_set_font_thick_cn(btn9, 30);
gt_btn_set_font_gray(btn9, 4);
gt_btn_set_text(btn9, "Arabic");
gt_btn_set_color_background(btn9, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn9, 8);
gt_obj_add_event_cb(btn9, btn9_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// btn10
btn10 = gt_btn_create(screen_home);
gt_obj_set_pos(btn10, 495, 160);
gt_obj_set_size(btn10, 160, 43);
gt_btn_set_font_color(btn10, gt_color_hex(0x000000));
gt_btn_set_font_size(btn10, 24);
gt_btn_set_font_family_cn(btn10, 80);
gt_btn_set_font_family_en(btn10, 60);
gt_btn_set_font_align(btn10, GT_ALIGN_CENTER_MID);
gt_btn_set_space(btn10, 0, 0);
gt_btn_set_font_thick_en(btn10, 30);
gt_btn_set_font_thick_cn(btn10, 30);
gt_btn_set_font_gray(btn10, 4);
gt_btn_set_text(btn10, "Korean Black Typeface");
gt_btn_set_color_background(btn10, gt_color_hex(0xddeeff));
gt_btn_set_radius(btn10, 8);
gt_obj_add_event_cb(btn10, btn10_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
gt_disp_load_scr_anim(screen_home, GT_SCR_ANIM_TYPE_NONE, 500, 0, true);
}
Slide Example Animation

#include "gt_ui.h"
// screen_home
gt_obj_st * screen_home = NULL;
static gt_obj_st * lab1 = NULL;
static gt_obj_st * img1 = NULL;
static gt_obj_st * player1 = NULL;
static gt_obj_st * svg1 = NULL;
static gt_obj_st * svg2 = NULL;
static void svg1_0_cb(gt_event_st * e) {
gt_player_turn_prev(player1);
}
static void svg2_0_cb(gt_event_st * e) {
gt_player_turn_next(player1);
}
void gt_init_screen_home(void)
{
screen_home = gt_obj_create(NULL);
gt_screen_set_bgcolor(screen_home, gt_color_hex(0xFFFFFF));
// lab1
lab1 = gt_label_create(screen_home);
gt_obj_set_pos(lab1, 223, 71);
gt_obj_set_size(lab1, 96, 51);
gt_label_set_font_color(lab1, gt_color_hex(0x6e6e6e));
gt_label_set_font_size(lab1, 32);
gt_label_set_font_family_cn(lab1, 19);
gt_label_set_font_align(lab1, GT_ALIGN_LEFT);
gt_label_set_text(lab1, "Wind Speed");
// img1
img1 = gt_img_create(screen_home);
gt_obj_set_pos(img1, 157, 75);
gt_obj_set_size(img1, 42, 40);
gt_img_set_src(img1, "f:img_42x40_9.png");
// player1
player1 = gt_player_create(screen_home);
gt_obj_set_pos(player1, 153, 136);
gt_obj_set_size(player1, 161, 66);
gt_player_add_item(player1, "f:img_161x66_4.png", sizeof("f:img_161x66_4.png"));
gt_player_add_item(player1, "f:img_161x66_5.png", sizeof("f:img_161x66_5.png"));
gt_player_add_item(player1, "f:img_161x66_6.png", sizeof("f:img_161x66_6.png"));
gt_player_add_item(player1, "f:img_161x66_7.png", sizeof("f:img_161x66_7.png"));
gt_player_add_item(player1, "f:img_161x66_8.png", sizeof("f:img_161x66_8.png"));
gt_player_set_type(player1, GT_PLAYER_TYPE_IMG);
gt_player_set_mode(player1, GT_PLAYER_MODE_LOOP);
// svg1
svg1 = gt_img_create(screen_home);
gt_obj_set_pos(svg1, 76, 149);
gt_obj_set_size(svg1, 48, 48);
gt_img_set_src(svg1, "f:img_48x48_minus_0_3.png");
gt_obj_add_event_cb(svg1, svg1_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
// svg2
svg2 = gt_img_create(screen_home);
gt_obj_set_pos(svg2, 341, 148);
gt_obj_set_size(svg2, 48, 48);
gt_img_set_src(svg2, "f:img_48x48_plus_0_4.png");
gt_obj_add_event_cb(svg2, svg2_0_cb, GT_EVENT_TYPE_INPUT_RELEASED, NULL);
gt_disp_load_scr_anim(screen_home, GT_SCR_ANIM_TYPE_NONE, 500, 0, true);
}
Keyboard Control Example Animation
#include "gt_ui.h"
// screen_home
gt_obj_st * screen_home = NULL;
static gt_obj_st * input1 = NULL;
static gt_obj_st * keyboard1 = NULL;
void gt_init_screen_home(void)
{
screen_home = gt_obj_create(NULL);
gt_screen_set_bgcolor(screen_home, gt_color_hex(0xFFFFFF));
// input1
input1 = gt_input_create(screen_home);
gt_obj_set_pos(input1, 117, 38);
gt_obj_set_size(input1, 249, 84);
gt_input_set_font_color(input1, gt_color_hex(0x000000));
gt_input_set_font_size(input1, 16);
gt_input_set_font_family_cn(input1, 3);
gt_input_set_font_family_en(input1, 39);
gt_input_set_font_align(input1, GT_ALIGN_LEFT);
gt_input_set_placeholder(input1, "placeholder");
gt_input_set_bg_color(input1, gt_color_hex(0xffffff));
// keyboard1
keyboard1 = gt_keypad_create(screen_home);
gt_obj_set_pos(keyboard1, 89, 138);
gt_obj_set_size(keyboard1, 309, 170);
gt_keypad_set_font_color(keyboard1, gt_color_hex(0xffffff));
gt_keypad_set_font_size(keyboard1, 16);
gt_keypad_set_font_align(keyboard1, GT_ALIGN_CENTER_MID);
gt_keypad_set_color_background(keyboard1, gt_color_hex(0x242424));
gt_keypad_set_target(keyboard1, input1);
gt_disp_load_scr_anim(screen_home, GT_SCR_ANIM_TYPE_NONE, 500, 0, true);
}
Image Button Control Example Animation

#include "gt_ui.h"
/** screen_home */
gt_obj_st * screen_home = NULL;
static gt_obj_st * imgbtn1 = NULL;
void gt_init_screen_home(void)
{
screen_home = gt_obj_create(NULL);
gt_screen_set_bgcolor(screen_home, gt_color_hex(0xFFFFFF));
/** imgbtn1 */
imgbtn1 = gt_imgbtn_create(screen_home);
gt_obj_set_pos(imgbtn1, 142, 136);
gt_obj_set_size(imgbtn1, 185, 50);
gt_imgbtn_set_src(imgbtn1, "f:img_185x50_10.png");
gt_imgbtn_set_src_press(imgbtn1, "f:img_185x50_3.png");
gt_disp_load_scr_anim(screen_home, GT_SCR_ANIM_TYPE_NONE, 500, 0, true);
}
Exciting Content:Some rules of log debugging methods in embedded systems!Embedded development debugging tool | Sanitizer detectorSummary of some practical auxiliary tools in embedded systems!Easy to understand | A step-by-step guide to writing your first upper computerLet’s take a look at some popular Git visualization tools!Light as a feather, an ultra-light embedded database!Recommended a useful embedded static code scanning tool!Protocol compatibility issues involved in upgrades in embedded systems?Embedded, testable software design!Several highly regarded C language projects, how many do you know?