From fee6c2364e8d22c41b53db90ace721cbe945f0af Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Mon, 22 Jun 2020 17:40:30 +0200 Subject: cpu rendering --- build-linux.sh | 2 +- build-win.bat | 2 +- data/imgs/add.bmp | Bin 0 -> 922 bytes data/imgs/add.png | Bin 142 -> 0 bytes data/imgs/delete.bmp | Bin 0 -> 922 bytes data/imgs/delete.png | Bin 451 -> 0 bytes data/imgs/en.bmp | Bin 0 -> 1738 bytes data/imgs/en.png | Bin 1132 -> 0 bytes data/imgs/exclaim.png | Bin 201 -> 0 bytes data/imgs/list.bmp | Bin 0 -> 922 bytes data/imgs/list.png | Bin 140 -> 0 bytes data/imgs/logo_64.bmp | Bin 0 -> 16522 bytes data/imgs/logo_64.png | Bin 1087 -> 0 bytes data/imgs/nl.bmp | Bin 0 -> 1738 bytes data/imgs/nl.png | Bin 509 -> 0 bytes data/imgs/png/add.png | Bin 0 -> 142 bytes data/imgs/png/delete.png | Bin 0 -> 451 bytes data/imgs/png/set.png | Bin 0 -> 353 bytes data/imgs/set.bmp | Bin 0 -> 922 bytes data/imgs/set.png | Bin 353 -> 0 bytes data/translations/en-English.mo | Bin 2915 -> 2947 bytes data/translations/nl-Dutch.mo | Bin 3104 -> 3140 bytes src/asset_definitions.h | 61 +++++++++++++++++++--------------------- src/config.h | 10 +++---- src/mo_edit.c | 52 +++++++++++----------------------- src/settings.c | 36 +++++++++++++++++++----- src/settings.h | 2 ++ 27 files changed, 82 insertions(+), 83 deletions(-) create mode 100644 data/imgs/add.bmp delete mode 100644 data/imgs/add.png create mode 100644 data/imgs/delete.bmp delete mode 100644 data/imgs/delete.png create mode 100644 data/imgs/en.bmp delete mode 100644 data/imgs/en.png delete mode 100644 data/imgs/exclaim.png create mode 100644 data/imgs/list.bmp delete mode 100644 data/imgs/list.png create mode 100644 data/imgs/logo_64.bmp delete mode 100644 data/imgs/logo_64.png create mode 100644 data/imgs/nl.bmp delete mode 100644 data/imgs/nl.png create mode 100644 data/imgs/png/add.png create mode 100644 data/imgs/png/delete.png create mode 100644 data/imgs/png/set.png create mode 100644 data/imgs/set.bmp delete mode 100644 data/imgs/set.png diff --git a/build-linux.sh b/build-linux.sh index 545a940..4acca7a 100755 --- a/build-linux.sh +++ b/build-linux.sh @@ -34,7 +34,7 @@ rm -rf bin mkdir bin cd src -ld -r -b binary -o ../bin/data.o ../data/imgs/en.png ../data/imgs/nl.png ../data/imgs/logo_64.png ../data/fonts/mono.ttf ../data/translations/en-English.mo ../data/translations/nl-Dutch.mo ../data/imgs/list.png ../data/imgs/delete.png ../data/imgs/exclaim.png ../data/imgs/add.png ../data/imgs/set.png +ld -r -b binary -o ../bin/data.o ../data/imgs/en.bmp ../data/imgs/nl.bmp ../data/imgs/logo_64.bmp ../data/fonts/mono.ttf ../data/translations/en-English.mo ../data/translations/nl-Dutch.mo ../data/imgs/list.bmp ../data/imgs/delete.bmp ../data/imgs/add.bmp ../data/imgs/set.bmp gcc -Wall -g -m64 -DMODE_DEVELOPER -Wno-unused-label -rdynamic -Wno-unused-variable mo_edit.c ../bin/data.o -o ../bin/mo-edit -lX11 -lGL -lGLU -lXrandr -lm -lpthread -ldl diff --git a/build-win.bat b/build-win.bat index 854a2c9..ca5a272 100644 --- a/build-win.bat +++ b/build-win.bat @@ -5,7 +5,7 @@ windres misc/icon.rc -O coff -o misc/icon.res DEL /S /Q bin cd src -ld -r -b binary -o ../bin/data.o ../data/imgs/en.png ../data/imgs/nl.png ../data/imgs/logo_64.png ../data/fonts/mono.ttf ../data/translations/en-English.mo ../data/translations/nl-Dutch.mo ../data/imgs/list.png ../data/imgs/delete.png ../data/imgs/exclaim.png ../data/imgs/add.png ../data/imgs/set.png +ld -r -b binary -o ../bin/data.o ../data/imgs/en.bmp ../data/imgs/nl.bmp ../data/imgs/logo_64.bmp ../data/fonts/mono.ttf ../data/translations/en-English.mo ../data/translations/nl-Dutch.mo ../data/imgs/list.bmp ../data/imgs/delete.bmp ../data/imgs/add.bmp ../data/imgs/set.bmp if "%1"=="-w" (SET defs=-DMODE_DEVELOPER -DMODE_GDBDEBUG) else (SET defs=-DMODE_DEVELOPER) diff --git a/data/imgs/add.bmp b/data/imgs/add.bmp new file mode 100644 index 0000000..ba60f25 Binary files /dev/null and b/data/imgs/add.bmp differ diff --git a/data/imgs/add.png b/data/imgs/add.png deleted file mode 100644 index 5539207..0000000 Binary files a/data/imgs/add.png and /dev/null differ diff --git a/data/imgs/delete.bmp b/data/imgs/delete.bmp new file mode 100644 index 0000000..aba6bd2 Binary files /dev/null and b/data/imgs/delete.bmp differ diff --git a/data/imgs/delete.png b/data/imgs/delete.png deleted file mode 100644 index fa0ab77..0000000 Binary files a/data/imgs/delete.png and /dev/null differ diff --git a/data/imgs/en.bmp b/data/imgs/en.bmp new file mode 100644 index 0000000..65350c5 Binary files /dev/null and b/data/imgs/en.bmp differ diff --git a/data/imgs/en.png b/data/imgs/en.png deleted file mode 100644 index 02fa2a1..0000000 Binary files a/data/imgs/en.png and /dev/null differ diff --git a/data/imgs/exclaim.png b/data/imgs/exclaim.png deleted file mode 100644 index 40cc4b6..0000000 Binary files a/data/imgs/exclaim.png and /dev/null differ diff --git a/data/imgs/list.bmp b/data/imgs/list.bmp new file mode 100644 index 0000000..0dcce5d Binary files /dev/null and b/data/imgs/list.bmp differ diff --git a/data/imgs/list.png b/data/imgs/list.png deleted file mode 100644 index 14c389d..0000000 Binary files a/data/imgs/list.png and /dev/null differ diff --git a/data/imgs/logo_64.bmp b/data/imgs/logo_64.bmp new file mode 100644 index 0000000..8773e22 Binary files /dev/null and b/data/imgs/logo_64.bmp differ diff --git a/data/imgs/logo_64.png b/data/imgs/logo_64.png deleted file mode 100644 index 70724ff..0000000 Binary files a/data/imgs/logo_64.png and /dev/null differ diff --git a/data/imgs/nl.bmp b/data/imgs/nl.bmp new file mode 100644 index 0000000..7425cab Binary files /dev/null and b/data/imgs/nl.bmp differ diff --git a/data/imgs/nl.png b/data/imgs/nl.png deleted file mode 100644 index 505b9ce..0000000 Binary files a/data/imgs/nl.png and /dev/null differ diff --git a/data/imgs/png/add.png b/data/imgs/png/add.png new file mode 100644 index 0000000..5539207 Binary files /dev/null and b/data/imgs/png/add.png differ diff --git a/data/imgs/png/delete.png b/data/imgs/png/delete.png new file mode 100644 index 0000000..fa0ab77 Binary files /dev/null and b/data/imgs/png/delete.png differ diff --git a/data/imgs/png/set.png b/data/imgs/png/set.png new file mode 100644 index 0000000..79b4412 Binary files /dev/null and b/data/imgs/png/set.png differ diff --git a/data/imgs/set.bmp b/data/imgs/set.bmp new file mode 100644 index 0000000..0d189da Binary files /dev/null and b/data/imgs/set.bmp differ diff --git a/data/imgs/set.png b/data/imgs/set.png deleted file mode 100644 index 79b4412..0000000 Binary files a/data/imgs/set.png and /dev/null differ diff --git a/data/translations/en-English.mo b/data/translations/en-English.mo index cf260aa..e6c82e4 100644 Binary files a/data/translations/en-English.mo and b/data/translations/en-English.mo differ diff --git a/data/translations/nl-Dutch.mo b/data/translations/nl-Dutch.mo index 32bb9ca..8ec0f77 100644 Binary files a/data/translations/nl-Dutch.mo and b/data/translations/nl-Dutch.mo differ diff --git a/src/asset_definitions.h b/src/asset_definitions.h index 628ae38..a60eeec 100644 --- a/src/asset_definitions.h +++ b/src/asset_definitions.h @@ -1,32 +1,29 @@ -extern u8 _binary____data_imgs_en_png_start[]; -extern u8 _binary____data_imgs_en_png_end[]; - -extern u8 _binary____data_imgs_nl_png_start[]; -extern u8 _binary____data_imgs_nl_png_end[]; - -extern u8 _binary____data_imgs_logo_64_png_start[]; -extern u8 _binary____data_imgs_logo_64_png_end[]; - -extern u8 _binary____data_fonts_mono_ttf_start[]; -extern u8 _binary____data_fonts_mono_ttf_end[]; - -extern u8 _binary____data_translations_en_English_mo_start[]; -extern u8 _binary____data_translations_en_English_mo_end[]; - -extern u8 _binary____data_translations_nl_Dutch_mo_start[]; -extern u8 _binary____data_translations_nl_Dutch_mo_end[]; - -extern u8 _binary____data_imgs_list_png_start[]; -extern u8 _binary____data_imgs_list_png_end[]; - -extern u8 _binary____data_imgs_delete_png_start[]; -extern u8 _binary____data_imgs_delete_png_end[]; - -extern u8 _binary____data_imgs_exclaim_png_start[]; -extern u8 _binary____data_imgs_exclaim_png_end[]; - -extern u8 _binary____data_imgs_add_png_start[]; -extern u8 _binary____data_imgs_add_png_end[]; - -extern u8 _binary____data_imgs_set_png_start[]; -extern u8 _binary____data_imgs_set_png_end[]; \ No newline at end of file +extern unsigned char _binary____data_imgs_logo_64_bmp_start[]; +extern unsigned char _binary____data_imgs_logo_64_bmp_end[]; + +extern unsigned char _binary____data_fonts_mono_ttf_start[]; +extern unsigned char _binary____data_fonts_mono_ttf_end[]; + +extern unsigned char _binary____data_translations_en_English_mo_start[]; +extern unsigned char _binary____data_translations_en_English_mo_end[]; + +extern unsigned char _binary____data_translations_nl_Dutch_mo_start[]; +extern unsigned char _binary____data_translations_nl_Dutch_mo_end[]; + +extern unsigned char _binary____data_imgs_list_bmp_start[]; +extern unsigned char _binary____data_imgs_list_bmp_end[]; + +extern unsigned char _binary____data_imgs_delete_bmp_start[]; +extern unsigned char _binary____data_imgs_delete_bmp_end[]; + +extern unsigned char _binary____data_imgs_add_bmp_start[]; +extern unsigned char _binary____data_imgs_add_bmp_end[]; + +extern unsigned char _binary____data_imgs_set_bmp_start[]; +extern unsigned char _binary____data_imgs_set_bmp_end[]; + +extern unsigned char _binary____data_imgs_nl_bmp_start[]; +extern unsigned char _binary____data_imgs_nl_bmp_end[]; + +extern unsigned char _binary____data_imgs_en_bmp_start[]; +extern unsigned char _binary____data_imgs_en_bmp_end[]; \ No newline at end of file diff --git a/src/config.h b/src/config.h index f0158cf..d7ee47f 100644 --- a/src/config.h +++ b/src/config.h @@ -8,9 +8,11 @@ #define INCLUDE_CONFIG #define TARGET_FRAMERATE (1000/24.0) -#define VERSION "1.0.2" +#define VERSION "1.0.3" + +#define CONFIG_DIRECTORY_LINUX "/.config/moedit" +#define CONFIG_DIRECTORY_WINDOWS "\\moedit" -#define SCROLL_SPEED 50 #define FILE_RESERVE_COUNT 500 #define ERROR_RESERVE_COUNT 10 #define MAX_ERROR_MESSAGE_LENGTH 120 @@ -20,8 +22,4 @@ #define UNSAVED_CHANGES_COLOR rgb(255, 102, 102) #define MISSING_TRANSLATION_COLOR rgb(255, 179, 102) -#define ASSET_IMAGE_COUNT 10 -#define ASSET_FONT_COUNT 10 -#define ASSET_QUEUE_COUNT 20 - #endif \ No newline at end of file diff --git a/src/mo_edit.c b/src/mo_edit.c index c8d5576..78f57a6 100644 --- a/src/mo_edit.c +++ b/src/mo_edit.c @@ -5,7 +5,10 @@ */ #include "config.h" -#include "project_base.h" +#include "asset_definitions.h" +#include "../../project-base/src/project_base.h" + +// TODO(Aldrik): get rid if unnecessary draw calls (especially lists) s32 global_language_id = 1; char project_path[MAX_INPUT_LENGTH]; @@ -64,7 +67,6 @@ submenu_state submenu_recent_projects; image *set_img; image *add_img; image *list_img; -image *exclaim_img; image *delete_img; image *logo_small_img; @@ -74,25 +76,15 @@ font *font_mini; static void load_assets() { - list_img = assets_load_image(_binary____data_imgs_list_png_start, - _binary____data_imgs_list_png_end, false); - exclaim_img = assets_load_image(_binary____data_imgs_exclaim_png_start, - _binary____data_imgs_exclaim_png_end, false); - logo_small_img = assets_load_image(_binary____data_imgs_logo_64_png_start, - _binary____data_imgs_logo_64_png_end, true); - delete_img = assets_load_image(_binary____data_imgs_delete_png_start, - _binary____data_imgs_delete_png_end, false); - add_img = assets_load_image(_binary____data_imgs_add_png_start, - _binary____data_imgs_add_png_end, false); - set_img = assets_load_image(_binary____data_imgs_set_png_start, - _binary____data_imgs_set_png_end, false); + list_img = load_bitmap(list_bmp); + logo_small_img = load_bitmap(logo_64_bmp); + delete_img = load_bitmap(delete_bmp); + add_img = load_bitmap(add_bmp); + set_img = load_bitmap(set_bmp); - font_medium = assets_load_font(_binary____data_fonts_mono_ttf_start, - _binary____data_fonts_mono_ttf_end, 18); - font_small = assets_load_font(_binary____data_fonts_mono_ttf_start, - _binary____data_fonts_mono_ttf_end, 15); - font_mini = assets_load_font(_binary____data_fonts_mono_ttf_start, - _binary____data_fonts_mono_ttf_end, 12); + font_medium = load_font(mono_ttf, 18); + font_small = load_font(mono_ttf, 15); + font_mini = load_font(mono_ttf, 12); } bool term_has_missing_translations(term *t) @@ -483,6 +475,7 @@ int main(int argc, char **argv) window_w = 800; window_h = 600; } + global_use_gpu = settings_config_get_number(&config, "USE_GPU"); platform_window window = platform_open_window("mo-edit", window_w, window_h, 0, 0, 800, 600); main_window = &window; @@ -532,20 +525,8 @@ int main(int argc, char **argv) platform_set_cursor(&window, CURSOR_DEFAULT); settings_page_update_render(); - platform_window_make_current(&window); - - static bool icon_loaded = false; - if (!icon_loaded && logo_small_img->loaded) - { - icon_loaded = true; - platform_set_icon(&window, logo_small_img); - } - - if (global_asset_collection.queue.queue.length == 0 && !global_asset_collection.done_loading_assets) - { - global_asset_collection.done_loading_assets = true; - } + platform_set_icon(&window, logo_small_img); global_ui_context.layout.active_window = &window; global_ui_context.keyboard = &keyboard; @@ -561,7 +542,7 @@ int main(int argc, char **argv) { window.do_draw = false; - render_clear(); + render_clear(&window); camera_apply_transformations(&window, &camera); global_ui_context.layout.width = global_ui_context.layout.active_window->width; @@ -712,8 +693,6 @@ int main(int argc, char **argv) } ui_push_tooltip(localize("tooltip_delete_term")); - //ui_push_image(exclaim_img, 14, 14, 1, rgb(255,255,255)); - if (i == current_project->selected_term_index) { ui_push_rect(10, global_ui_context.style.textbox_active_border); @@ -1024,6 +1003,7 @@ int main(int argc, char **argv) vec2 win_size = platform_get_window_size(&window); settings_config_set_number(&config, "WINDOW_WIDTH", win_size.x); settings_config_set_number(&config, "WINDOW_HEIGHT", win_size.y); + settings_config_set_number(&config, "USE_GPU", global_settings_page.use_gpu); { char *recent_project_list_buffer = mem_alloc(recent_projects_list.length*MAX_INPUT_LENGTH); diff --git a/src/settings.c b/src/settings.c index 118dca7..79b1a95 100644 --- a/src/settings.c +++ b/src/settings.c @@ -9,11 +9,10 @@ void set_status_text_to_finished_search(); void settings_page_create() { + global_settings_page.use_gpu = global_use_gpu; global_settings_page.active = false; - global_settings_page.font_small = assets_load_font(_binary____data_fonts_mono_ttf_start, - _binary____data_fonts_mono_ttf_end, 16); - global_settings_page.logo_img = assets_load_image(_binary____data_imgs_logo_64_png_start, - _binary____data_imgs_logo_64_png_end, true); + global_settings_page.font_small = load_font(mono_ttf, 15); + global_settings_page.logo_img = load_bitmap(logo_64_bmp); global_settings_page.keyboard = keyboard_input_create(); global_settings_page.mouse = mouse_input_create(); @@ -24,6 +23,7 @@ void settings_page_create() global_settings_page.camera = cam; + global_settings_page.cb_use_gpu = ui_create_checkbox(global_use_gpu); global_settings_page.btn_close = ui_create_button(); global_settings_page.btn_save = ui_create_button(); global_settings_page.dropdown_language = ui_create_dropdown(); @@ -35,11 +35,24 @@ void settings_page_create() static void load_current_settings_into_ui() { - + global_settings_page.use_gpu = global_use_gpu; + global_settings_page.cb_use_gpu.state = global_settings_page.use_gpu; } void settings_page_update_render() { + if (global_settings_page.window.has_focus) + global_settings_page.window.do_draw = true; + + // switch to cpu/gpu + if (global_use_gpu != global_settings_page.use_gpu) + { + global_use_gpu = global_settings_page.use_gpu; + platform_setup_backbuffer(main_window); + platform_setup_renderer(); + assets_switch_render_method(); + } + if (global_settings_page.active) { platform_window_make_current(&global_settings_page.window); @@ -50,7 +63,7 @@ void settings_page_update_render() { global_settings_page.window.do_draw = false; - render_clear(); + render_clear(&global_settings_page.window); camera_apply_transformations(&global_settings_page.window, &global_settings_page.camera); @@ -97,6 +110,14 @@ void settings_page_update_render() } ui_block_end(); + ui_block_begin(LAYOUT_HORIZONTAL); + { + if (ui_push_checkbox(&global_settings_page.cb_use_gpu, localize("use_gpu"))) + { + } + } + ui_block_end(); + ui_block_begin(LAYOUT_HORIZONTAL); { if (ui_push_hypertext_link(localize("copy_config_path"))) @@ -122,6 +143,7 @@ void settings_page_update_render() if (ui_push_button(&global_settings_page.btn_close, localize("save"))) { global_settings_page.active = false; + global_settings_page.use_gpu = global_settings_page.cb_use_gpu.state; settings_page_hide(); return; } @@ -157,7 +179,7 @@ void settings_page_show() load_current_settings_into_ui(); global_settings_page.window = platform_open_window(localize("mo_edit_settings"), - 350, 220, 350, 220, 350, 220); + 350, 240, 350, 240, 350, 240); settings_window = &global_settings_page.window; diff --git a/src/settings.h b/src/settings.h index 3d399cf..38dcf9d 100644 --- a/src/settings.h +++ b/src/settings.h @@ -18,6 +18,7 @@ typedef struct t_settings_page font *font_small; image *logo_img; + checkbox_state cb_use_gpu; button_state btn_close; button_state btn_save; dropdown_state dropdown_language; @@ -27,6 +28,7 @@ typedef struct t_settings_page checkbox_state checkbox_parallelize_search; s32 selected_tab_index; + bool use_gpu; char *current_locale_id; } settings_page; -- cgit v1.2.3-70-g09d2