From 4232b2a0e7a15be7726892d8176ae0eafff182b6 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 1 Jun 2022 20:40:42 +0200 Subject: [PATCH] REVIEWED: Created VS2022 projects for examples Some renames and reviews --- .../controls_test_suite/controls_test_suite.c | 6 +- .../fonts/FiveByFive10.ttf | Bin 35496 -> 0 bytes .../fonts/NorthernLights.ttf | Bin 39136 -> 0 bytes .../controls_test_suite/fonts/PIXEARG11.ttf | Bin 57520 -> 0 bytes .../fonts/PixelOperator8.ttf | Bin 19944 -> 0 bytes .../fonts/pixelpoiiz10.ttf | Bin 27028 -> 0 bytes .../controls_test_suite/fonts/prstartk8.ttf | Bin 19624 -> 0 bytes .../fonts/rainyhearts16.ttf | Bin 48784 -> 0 bytes examples/image_exporter/image_exporter.c | 2 +- .../design/raw_importer_REF.png | Bin .../design/raw_importer_REV0.png | Bin .../design/raw_importer_REV1.png | Bin .../design/raw_importer_REV2.png | Bin .../design/raw_importer_REV3.png | Bin .../design/raw_importer_REV4.png | Bin .../design/raw_importer_REV5.png | Bin .../image_2x2_RGBA.raw | Bin .../image_importer_raw.c} | 0 .../{gui_scroll_panel.c => scroll_panel.c} | 0 examples/style_selector/style_selector.c | 289 ++++++++++++++ examples/style_selector/styles/style_bluish.h | 354 +++++++++++++++++ examples/style_selector/styles/style_cyber.h | 340 +++++++++++++++++ examples/style_selector/styles/style_dark.h | 347 +++++++++++++++++ examples/style_selector/styles/style_jungle.h | 337 +++++++++++++++++ .../style_selector/styles/style_lavanda.h | 349 +++++++++++++++++ .../style_selector/styles/style_terminal.h | 333 ++++++++++++++++ examples/text_editor/text_editor.c | 12 +- .../textbox_selection.c} | 4 +- .../examples/custom_file_dialog.vcxproj | 357 ++++++++++++++++++ .../VS2022/examples/image_exporter.vcxproj | 357 ++++++++++++++++++ .../examples/image_importer_raw.vcxproj | 357 ++++++++++++++++++ .../VS2022/examples/portable_window.vcxproj | 357 ++++++++++++++++++ .../VS2022/examples/property_list.vcxproj | 357 ++++++++++++++++++ projects/VS2022/examples/scroll_panel.vcxproj | 357 ++++++++++++++++++ .../VS2022/examples/style_selector.vcxproj | 357 ++++++++++++++++++ projects/VS2022/examples/test.props | 27 ++ projects/VS2022/examples/text_editor.vcxproj | 357 ++++++++++++++++++ .../VS2022/examples/textbox_selection.vcxproj | 357 ++++++++++++++++++ projects/VS2022/raygui.sln | 207 +++++++++- src/extras/gui_textbox_extended.h | 14 +- 40 files changed, 5800 insertions(+), 34 deletions(-) delete mode 100644 examples/controls_test_suite/fonts/FiveByFive10.ttf delete mode 100644 examples/controls_test_suite/fonts/NorthernLights.ttf delete mode 100644 examples/controls_test_suite/fonts/PIXEARG11.ttf delete mode 100644 examples/controls_test_suite/fonts/PixelOperator8.ttf delete mode 100644 examples/controls_test_suite/fonts/pixelpoiiz10.ttf delete mode 100644 examples/controls_test_suite/fonts/prstartk8.ttf delete mode 100644 examples/controls_test_suite/fonts/rainyhearts16.ttf rename examples/{image_raw_importer => image_importer_raw}/design/raw_importer_REF.png (100%) rename examples/{image_raw_importer => image_importer_raw}/design/raw_importer_REV0.png (100%) rename examples/{image_raw_importer => image_importer_raw}/design/raw_importer_REV1.png (100%) rename examples/{image_raw_importer => image_importer_raw}/design/raw_importer_REV2.png (100%) rename examples/{image_raw_importer => image_importer_raw}/design/raw_importer_REV3.png (100%) rename examples/{image_raw_importer => image_importer_raw}/design/raw_importer_REV4.png (100%) rename examples/{image_raw_importer => image_importer_raw}/design/raw_importer_REV5.png (100%) rename examples/{image_raw_importer => image_importer_raw}/image_2x2_RGBA.raw (100%) rename examples/{image_raw_importer/image_raw_importer.c => image_importer_raw/image_importer_raw.c} (100%) rename examples/scroll_panel/{gui_scroll_panel.c => scroll_panel.c} (100%) create mode 100644 examples/style_selector/style_selector.c create mode 100644 examples/style_selector/styles/style_bluish.h create mode 100644 examples/style_selector/styles/style_cyber.h create mode 100644 examples/style_selector/styles/style_dark.h create mode 100644 examples/style_selector/styles/style_jungle.h create mode 100644 examples/style_selector/styles/style_lavanda.h create mode 100644 examples/style_selector/styles/style_terminal.h rename examples/{text_box_selection/textbox_extended_demo.c => textbox_selection/textbox_selection.c} (99%) create mode 100644 projects/VS2022/examples/custom_file_dialog.vcxproj create mode 100644 projects/VS2022/examples/image_exporter.vcxproj create mode 100644 projects/VS2022/examples/image_importer_raw.vcxproj create mode 100644 projects/VS2022/examples/portable_window.vcxproj create mode 100644 projects/VS2022/examples/property_list.vcxproj create mode 100644 projects/VS2022/examples/scroll_panel.vcxproj create mode 100644 projects/VS2022/examples/style_selector.vcxproj create mode 100644 projects/VS2022/examples/test.props create mode 100644 projects/VS2022/examples/text_editor.vcxproj create mode 100644 projects/VS2022/examples/textbox_selection.vcxproj diff --git a/examples/controls_test_suite/controls_test_suite.c b/examples/controls_test_suite/controls_test_suite.c index ba5209a..5307d80 100644 --- a/examples/controls_test_suite/controls_test_suite.c +++ b/examples/controls_test_suite/controls_test_suite.c @@ -203,14 +203,14 @@ int main() GuiGrid((Rectangle) { 560, 25 + 180 + 180, 100, 120 }, NULL, 20, 2); - GuiStatusBar((Rectangle){ 0, GetScreenHeight() - 20, GetScreenWidth(), 20 }, "This is a status bar"); + GuiStatusBar((Rectangle){ 0, (float)GetScreenHeight() - 20, (float)GetScreenWidth(), 20 }, "This is a status bar"); alphaValue = GuiColorBarAlpha((Rectangle){ 320, 490, 200, 30 }, NULL, alphaValue); if (showMessageBox) { DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); - int result = GuiMessageBox((Rectangle){ GetScreenWidth()/2 - 125, GetScreenHeight()/2 - 50, 250, 100 }, GuiIconText(ICON_EXIT, "Close Window"), "Do you really want to exit?", "Yes;No"); + int result = GuiMessageBox((Rectangle){ (float)GetScreenWidth()/2 - 125, (float)GetScreenHeight()/2 - 50, 250, 100 }, GuiIconText(ICON_EXIT, "Close Window"), "Do you really want to exit?", "Yes;No"); if ((result == 0) || (result == 2)) showMessageBox = false; else if (result == 1) exitWindow = true; @@ -219,7 +219,7 @@ int main() if (showTextInputBox) { DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); - int result = GuiTextInputBox((Rectangle){ GetScreenWidth()/2 - 120, GetScreenHeight()/2 - 60, 240, 140 }, "Save", GuiIconText(ICON_FILE_SAVE, "Save file as..."), "Ok;Cancel", textInput, 255, NULL); + int result = GuiTextInputBox((Rectangle){ (float)GetScreenWidth()/2 - 120, (float)GetScreenHeight()/2 - 60, 240, 140 }, "Save", GuiIconText(ICON_FILE_SAVE, "Save file as..."), "Ok;Cancel", textInput, 255, NULL); if (result == 1) { diff --git a/examples/controls_test_suite/fonts/FiveByFive10.ttf b/examples/controls_test_suite/fonts/FiveByFive10.ttf deleted file mode 100644 index df155e14602e1ccf259a393f39b606cfcb78eb2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35496 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®1E6rI7+v9_USQG@Zk2G4j^4b4wwQ6iR5G7ua9 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 s$Nu?Ktx0Z9Th966D1X5Qdxp% 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 jfc5ku7{`| diff --git a/examples/controls_test_suite/fonts/rainyhearts16.ttf b/examples/controls_test_suite/fonts/rainyhearts16.ttf deleted file mode 100644 index 245cd40f08ef33eef8ce408ce797a9e91de42eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48784 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 diff --git a/examples/image_exporter/image_exporter.c b/examples/image_exporter/image_exporter.c index 0967801..d5d62ce 100644 --- a/examples/image_exporter/image_exporter.c +++ b/examples/image_exporter/image_exporter.c @@ -23,7 +23,7 @@ //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ -int main(int argc, char *argv[0]) +int main(int argc, char *argv[]) { // Initialization //-------------------------------------------------------------------------------------- diff --git a/examples/image_raw_importer/design/raw_importer_REF.png b/examples/image_importer_raw/design/raw_importer_REF.png similarity index 100% rename from examples/image_raw_importer/design/raw_importer_REF.png rename to examples/image_importer_raw/design/raw_importer_REF.png diff --git a/examples/image_raw_importer/design/raw_importer_REV0.png b/examples/image_importer_raw/design/raw_importer_REV0.png similarity index 100% rename from examples/image_raw_importer/design/raw_importer_REV0.png rename to examples/image_importer_raw/design/raw_importer_REV0.png diff --git a/examples/image_raw_importer/design/raw_importer_REV1.png b/examples/image_importer_raw/design/raw_importer_REV1.png similarity index 100% rename from examples/image_raw_importer/design/raw_importer_REV1.png rename to examples/image_importer_raw/design/raw_importer_REV1.png diff --git a/examples/image_raw_importer/design/raw_importer_REV2.png b/examples/image_importer_raw/design/raw_importer_REV2.png similarity index 100% rename from examples/image_raw_importer/design/raw_importer_REV2.png rename to examples/image_importer_raw/design/raw_importer_REV2.png diff --git a/examples/image_raw_importer/design/raw_importer_REV3.png b/examples/image_importer_raw/design/raw_importer_REV3.png similarity index 100% rename from examples/image_raw_importer/design/raw_importer_REV3.png rename to examples/image_importer_raw/design/raw_importer_REV3.png diff --git a/examples/image_raw_importer/design/raw_importer_REV4.png b/examples/image_importer_raw/design/raw_importer_REV4.png similarity index 100% rename from examples/image_raw_importer/design/raw_importer_REV4.png rename to examples/image_importer_raw/design/raw_importer_REV4.png diff --git a/examples/image_raw_importer/design/raw_importer_REV5.png b/examples/image_importer_raw/design/raw_importer_REV5.png similarity index 100% rename from examples/image_raw_importer/design/raw_importer_REV5.png rename to examples/image_importer_raw/design/raw_importer_REV5.png diff --git a/examples/image_raw_importer/image_2x2_RGBA.raw b/examples/image_importer_raw/image_2x2_RGBA.raw similarity index 100% rename from examples/image_raw_importer/image_2x2_RGBA.raw rename to examples/image_importer_raw/image_2x2_RGBA.raw diff --git a/examples/image_raw_importer/image_raw_importer.c b/examples/image_importer_raw/image_importer_raw.c similarity index 100% rename from examples/image_raw_importer/image_raw_importer.c rename to examples/image_importer_raw/image_importer_raw.c diff --git a/examples/scroll_panel/gui_scroll_panel.c b/examples/scroll_panel/scroll_panel.c similarity index 100% rename from examples/scroll_panel/gui_scroll_panel.c rename to examples/scroll_panel/scroll_panel.c diff --git a/examples/style_selector/style_selector.c b/examples/style_selector/style_selector.c new file mode 100644 index 0000000..654b826 --- /dev/null +++ b/examples/style_selector/style_selector.c @@ -0,0 +1,289 @@ +/******************************************************************************************* +* +* raygui - controls test suite +* +* TEST CONTROLS: +* - GuiDropdownBox() +* - GuiCheckBox() +* - GuiSpinner() +* - GuiValueBox() +* - GuiTextBox() +* - GuiButton() +* - GuiComboBox() +* - GuiListView() +* - GuiToggleGroup() +* - GuiTextBoxMulti() +* - GuiColorPicker() +* - GuiSlider() +* - GuiSliderBar() +* - GuiProgressBar() +* - GuiColorBarAlpha() +* - GuiScrollPanel() +* +* +* DEPENDENCIES: +* raylib 4.0 - Windowing/input management and drawing. +* raygui 3.2 - Immediate-mode GUI controls. +* +* COMPILATION (Windows - MinGW): +* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5) +* +**********************************************************************************************/ + +#include "raylib.h" + +#define RAYGUI_IMPLEMENTATION +//#define RAYGUI_CUSTOM_ICONS // It requires providing gui_icons.h in the same directory +//#include "gui_icons.h" // External icons data provided, it can be generated with rGuiIcons tool +#include "../../src/raygui.h" + +// raygui embedded styles +#include "styles/style_cyber.h" // raygui style: cyber +#include "styles/style_jungle.h" // raygui style: jungle +#include "styles/style_lavanda.h" // raygui style: lavanda +#include "styles/style_dark.h" // raygui style: dark +#include "styles/style_bluish.h" // raygui style: bluish +#include "styles/style_terminal.h" // raygui style: terminal + +#include // Required for: strcpy() + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main() +{ + // Initialization + //--------------------------------------------------------------------------------------- + const int screenWidth = 690; + const int screenHeight = 560; + + InitWindow(screenWidth, screenHeight, "raygui - controls test suite"); + SetExitKey(0); + + // GUI controls initialization + //---------------------------------------------------------------------------------- + int dropdownBox000Active = 0; + bool dropDown000EditMode = false; + + int dropdownBox001Active = 0; + bool dropDown001EditMode = false; + + int spinner001Value = 0; + bool spinnerEditMode = false; + + int valueBox002Value = 0; + bool valueBoxEditMode = false; + + char textBoxText[64] = "Text box"; + bool textBoxEditMode = false; + + int listViewScrollIndex = 0; + int listViewActive = -1; + + int listViewExScrollIndex = 0; + int listViewExActive = 2; + int listViewExFocus = -1; + const char *listViewExList[8] = { "This", "is", "a", "list view", "with", "disable", "elements", "amazing!" }; + + char multiTextBoxText[256] = "Multi text box"; + bool multiTextBoxEditMode = false; + Color colorPickerValue = RED; + + int sliderValue = 50; + int sliderBarValue = 60; + float progressValue = 0.4f; + + bool forceSquaredChecked = false; + + float alphaValue = 0.5f; + + int comboBoxActive = 1; + + int toggleGroupActive = 0; + + Vector2 viewScroll = { 0, 0 }; + //---------------------------------------------------------------------------------- + + // Custom GUI font loading + //Font font = LoadFontEx("fonts/rainyhearts16.ttf", 12, 0, 0); + //GuiSetFont(font); + + bool exitWindow = false; + bool showMessageBox = false; + + char textInput[256] = { 0 }; + bool showTextInputBox = false; + + char textInputFileName[256] = { 0 }; + + GuiLoadStyleBluish(); + int visualStyleActive = 4; + int prevVisualStyleActive = 4; + + SetTargetFPS(60); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!exitWindow) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + exitWindow = WindowShouldClose(); + + if (IsKeyPressed(KEY_ESCAPE)) showMessageBox = !showMessageBox; + + if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_S)) showTextInputBox = true; + + if (IsFileDropped()) + { + int dropFileCount = 0; + char **droppedFiles = GetDroppedFiles(&dropFileCount); + + if ((dropFileCount > 0) && IsFileExtension(droppedFiles[0], ".rgs")) GuiLoadStyle(droppedFiles[0]); + + ClearDroppedFiles(); // Clear internal buffers + } + + if (visualStyleActive != prevVisualStyleActive) + { + GuiLoadStyleDefault(); + + switch (visualStyleActive) + { + case 0: break; // Default style + case 1: GuiLoadStyleJungle(); break; + case 2: GuiLoadStyleLavanda(); break; + case 3: GuiLoadStyleDark(); break; + case 4: GuiLoadStyleBluish(); break; + case 5: GuiLoadStyleCyber(); break; + case 6: GuiLoadStyleTerminal(); break; + default: break; + } + + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + + prevVisualStyleActive = visualStyleActive; + } + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); + + + // Visuals options + GuiLabel((Rectangle){ 10, 10, 60, 24 }, "Style:"); + visualStyleActive = GuiComboBox((Rectangle){ 60,10, 120, 24 }, "default;Jungle;Lavanda;Dark;Bluish;Cyber;Terminal", visualStyleActive); + + /* + // raygui: controls drawing + //---------------------------------------------------------------------------------- + if (dropDown000EditMode || dropDown001EditMode) GuiLock(); + else if (!dropDown000EditMode && !dropDown001EditMode) GuiUnlock(); + //GuiDisable(); + + // First GUI column + //GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + forceSquaredChecked = GuiCheckBox((Rectangle){ 25, 108, 15, 15 }, "FORCE CHECK!", forceSquaredChecked); + + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + //GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (GuiSpinner((Rectangle){ 25, 135, 125, 30 }, NULL, &spinner001Value, 0, 100, spinnerEditMode)) spinnerEditMode = !spinnerEditMode; + if (GuiValueBox((Rectangle){ 25, 175, 125, 30 }, NULL, &valueBox002Value, 0, 100, valueBoxEditMode)) valueBoxEditMode = !valueBoxEditMode; + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (GuiTextBox((Rectangle){ 25, 215, 125, 30 }, textBoxText, 64, textBoxEditMode)) textBoxEditMode = !textBoxEditMode; + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + if (GuiButton((Rectangle){ 25, 255, 125, 30 }, GuiIconText(ICON_FILE_SAVE, "Save File"))) showTextInputBox = true; + + GuiGroupBox((Rectangle){ 25, 310, 125, 150 }, "STATES"); + //GuiLock(); + GuiSetState(STATE_NORMAL); if (GuiButton((Rectangle){ 30, 320, 115, 30 }, "NORMAL")) { } + GuiSetState(STATE_FOCUSED); if (GuiButton((Rectangle){ 30, 355, 115, 30 }, "FOCUSED")) { } + GuiSetState(STATE_PRESSED); if (GuiButton((Rectangle){ 30, 390, 115, 30 }, "#15#PRESSED")) { } + GuiSetState(STATE_DISABLED); if (GuiButton((Rectangle){ 30, 425, 115, 30 }, "DISABLED")) { } + GuiSetState(STATE_NORMAL); + //GuiUnlock(); + + comboBoxActive = GuiComboBox((Rectangle){ 25, 470, 125, 30 }, "ONE;TWO;THREE;FOUR", comboBoxActive); + + // NOTE: GuiDropdownBox must draw after any other control that can be covered on unfolding + GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (GuiDropdownBox((Rectangle){ 25, 65, 125, 30 }, "#01#ONE;#02#TWO;#03#THREE;#04#FOUR", &dropdownBox001Active, dropDown001EditMode)) dropDown001EditMode = !dropDown001EditMode; + + GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + if (GuiDropdownBox((Rectangle){ 25, 25, 125, 30 }, "ONE;TWO;THREE", &dropdownBox000Active, dropDown000EditMode)) dropDown000EditMode = !dropDown000EditMode; + + // Second GUI column + listViewActive = GuiListView((Rectangle){ 165, 25, 140, 140 }, "Charmander;Bulbasaur;#18#Squirtel;Pikachu;Eevee;Pidgey", &listViewScrollIndex, listViewActive); + listViewExActive = GuiListViewEx((Rectangle){ 165, 180, 140, 200 }, listViewExList, 8, &listViewExFocus, &listViewExScrollIndex, listViewExActive); + + toggleGroupActive = GuiToggleGroup((Rectangle){ 165, 400, 140, 25 }, "#1#ONE\n#3#TWO\n#8#THREE\n#23#", toggleGroupActive); + + // Third GUI column + if (GuiTextBoxMulti((Rectangle){ 320, 25, 225, 140 }, multiTextBoxText, 256, multiTextBoxEditMode)) multiTextBoxEditMode = !multiTextBoxEditMode; + colorPickerValue = GuiColorPicker((Rectangle){ 320, 185, 196, 192 }, NULL, colorPickerValue); + + sliderValue = GuiSlider((Rectangle){ 355, 400, 165, 20 }, "TEST", TextFormat("%2.2f", (float)sliderValue), sliderValue, -50, 100); + sliderBarValue = GuiSliderBar((Rectangle){ 320, 430, 200, 20 }, NULL, TextFormat("%i", (int)sliderBarValue), sliderBarValue, 0, 100); + progressValue = GuiProgressBar((Rectangle){ 320, 460, 200, 20 }, NULL, NULL, progressValue, 0, 1); + + // NOTE: View rectangle could be used to perform some scissor test + Rectangle view = GuiScrollPanel((Rectangle){ 560, 25, 100, 160 }, NULL, (Rectangle){ 560, 25, 200, 400 }, &viewScroll); + + GuiPanel((Rectangle){ 560, 25 + 180, 100, 160 }, "Panel Info"); + + GuiGrid((Rectangle) { 560, 25 + 180 + 180, 100, 120 }, NULL, 20, 2); + + GuiStatusBar((Rectangle){ 0, (float)GetScreenHeight() - 20, (float)GetScreenWidth(), 20 }, "This is a status bar"); + + alphaValue = GuiColorBarAlpha((Rectangle){ 320, 490, 200, 30 }, NULL, alphaValue); + + if (showMessageBox) + { + DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); + int result = GuiMessageBox((Rectangle){ (float)GetScreenWidth()/2 - 125, (float)GetScreenHeight()/2 - 50, 250, 100 }, GuiIconText(ICON_EXIT, "Close Window"), "Do you really want to exit?", "Yes;No"); + + if ((result == 0) || (result == 2)) showMessageBox = false; + else if (result == 1) exitWindow = true; + } + + if (showTextInputBox) + { + DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); + int result = GuiTextInputBox((Rectangle){ (float)GetScreenWidth()/2 - 120, (float)GetScreenHeight()/2 - 60, 240, 140 }, "Save", GuiIconText(ICON_FILE_SAVE, "Save file as..."), "Ok;Cancel", textInput, 255, NULL); + + if (result == 1) + { + // TODO: Validate textInput value and save + + strcpy(textInputFileName, textInput); + } + + if ((result == 0) || (result == 1) || (result == 2)) + { + showTextInputBox = false; + strcpy(textInput, "\0"); + } + } + */ + //---------------------------------------------------------------------------------- + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} diff --git a/examples/style_selector/styles/style_bluish.h b/examples/style_selector/styles/style_bluish.h new file mode 100644 index 0000000..ffe20d7 --- /dev/null +++ b/examples/style_selector/styles/style_bluish.h @@ -0,0 +1,354 @@ +////////////////////////////////////////////////////////////////////////////////// +// // +// StyleAsCode exporter v1.2 - Style data exported as a values array // +// // +// USAGE: On init call: GuiLoadStyleBluish(); // +// // +// more info and bugs-report: github.com/raysan5/raygui // +// feedback and support: ray[at]raylibtech.com // +// // +// Copyright (c) 2020-2022 raylib technologies (@raylibtech) // +// // +////////////////////////////////////////////////////////////////////////////////// + +#define BLUISH_STYLE_PROPS_COUNT 14 + +// Custom style name: bluish +static const GuiStyleProp bluishStyleProps[BLUISH_STYLE_PROPS_COUNT] = { + { 0, 0, 0x5ca6a6ff }, // DEFAULT_BORDER_COLOR_NORMAL + { 0, 1, 0xb4e8f3ff }, // DEFAULT_BASE_COLOR_NORMAL + { 0, 2, 0x447e77ff }, // DEFAULT_TEXT_COLOR_NORMAL + { 0, 3, 0x5f8792ff }, // DEFAULT_BORDER_COLOR_FOCUSED + { 0, 4, 0xcdeff7ff }, // DEFAULT_BASE_COLOR_FOCUSED + { 0, 5, 0x4c6c74ff }, // DEFAULT_TEXT_COLOR_FOCUSED + { 0, 6, 0x3b5b5fff }, // DEFAULT_BORDER_COLOR_PRESSED + { 0, 7, 0xeaffffff }, // DEFAULT_BASE_COLOR_PRESSED + { 0, 8, 0x275057ff }, // DEFAULT_TEXT_COLOR_PRESSED + { 0, 9, 0x96aaacff }, // DEFAULT_BORDER_COLOR_DISABLED + { 0, 10, 0xc8d7d9ff }, // DEFAULT_BASE_COLOR_DISABLED + { 0, 11, 0x8c9c9eff }, // DEFAULT_TEXT_COLOR_DISABLED + { 0, 18, 0x84adb7ff }, // DEFAULT_LINE_COLOR + { 0, 19, 0xe8eef1ff }, // DEFAULT_BACKGROUND_COLOR +}; + +// WARNING: This style uses a custom font: (size: 10, spacing: 1) + +#define BLUISH_COMPRESSED_DATA_SIZE 1423 + +// Font image pixels data compressed (DEFLATE) +// NOTE: Original pixel data simplified to GRAYSCALE +static unsigned char bluishFontData[BLUISH_COMPRESSED_DATA_SIZE] = { 0xed, + 0xdd, 0xd1, 0x72, 0x9b, 0x3a, 0x10, 0x00, 0x50, 0xc4, 0xff, 0x7f, 0x72, 0x41, 0x77, 0x1a, 0x3b, 0x99, 0xb9, 0x2d, 0x2b, + 0x58, 0x21, 0x08, 0x6d, 0x4f, 0xcf, 0xb4, 0x0f, 0x91, 0x51, 0x24, 0x2d, 0xe0, 0x34, 0x5a, 0x2f, 0x75, 0x02, 0x00, 0xf8, + 0xcd, 0x1c, 0x7c, 0x6d, 0x0e, 0x5f, 0x3d, 0x27, 0x7a, 0x7a, 0x7d, 0x7d, 0x6e, 0xb4, 0xe7, 0x7a, 0x9b, 0x13, 0x3d, 0xb4, + 0x5a, 0xda, 0x6d, 0xbf, 0x2a, 0x6f, 0x23, 0x56, 0x76, 0xfe, 0x5a, 0x8f, 0xed, 0x55, 0xca, 0xbc, 0x7e, 0x4e, 0xcd, 0x62, + 0x5b, 0x0d, 0xbe, 0xb6, 0x6e, 0xce, 0xb7, 0xd6, 0x12, 0xb4, 0xcc, 0xb5, 0x06, 0xe3, 0xa9, 0x1f, 0x47, 0x6d, 0xf7, 0xd8, + 0x3a, 0x6a, 0xeb, 0x7b, 0x2c, 0x1b, 0x7d, 0x2c, 0xe1, 0x59, 0xf1, 0xf3, 0x3b, 0x46, 0x2b, 0xb4, 0x06, 0xf1, 0xac, 0x9b, + 0xaf, 0x7d, 0x29, 0x87, 0x5e, 0xdd, 0xfa, 0x0e, 0xb5, 0x2e, 0x75, 0x79, 0xaf, 0xc7, 0xaf, 0xb3, 0xa8, 0xa9, 0xd7, 0xc7, + 0x2d, 0xe7, 0xe3, 0xbf, 0x7e, 0x8c, 0xa7, 0x6c, 0x5c, 0x07, 0x3f, 0xa3, 0xb5, 0x06, 0xf1, 0x8a, 0xc6, 0xf3, 0x5a, 0xb9, + 0xb2, 0xd9, 0x63, 0xeb, 0xa8, 0xe9, 0xf0, 0x6a, 0x6f, 0x1f, 0xff, 0x1a, 0xe9, 0xf6, 0x3c, 0xca, 0x47, 0xdb, 0xd6, 0xda, + 0x2d, 0x83, 0xee, 0xab, 0xd1, 0x7c, 0xa7, 0xe6, 0xb5, 0xb5, 0xbd, 0x0a, 0x6b, 0xaa, 0xe5, 0x7c, 0xfc, 0xe3, 0x33, 0xba, + 0xbe, 0xff, 0x46, 0x33, 0x5b, 0x82, 0xf1, 0x94, 0xa0, 0xa5, 0x7d, 0xd4, 0x99, 0xf8, 0x97, 0xf7, 0x48, 0xe7, 0xe0, 0x7a, + 0xae, 0xc1, 0x15, 0x7d, 0x65, 0xf4, 0xf3, 0xf1, 0x2f, 0xef, 0x73, 0xb5, 0x04, 0xef, 0x4a, 0xf7, 0xc6, 0xbf, 0xbc, 0xef, + 0xff, 0x73, 0x30, 0xfa, 0x12, 0x46, 0x3f, 0xbe, 0xdb, 0x66, 0xde, 0x57, 0x73, 0xd7, 0xff, 0x6b, 0x9d, 0xa3, 0x73, 0xeb, + 0xba, 0xd8, 0xb7, 0xe7, 0x9b, 0x8b, 0x7f, 0x0d, 0xdf, 0x79, 0x3e, 0xcf, 0xe2, 0xb3, 0xb3, 0x58, 0x07, 0x5d, 0xff, 0x6b, + 0x38, 0x9e, 0xf2, 0xbe, 0xff, 0x6f, 0xcf, 0x39, 0x73, 0x15, 0x66, 0xe2, 0xbf, 0x17, 0xe3, 0x2b, 0xaf, 0xfd, 0xb8, 0xef, + 0x7c, 0xfc, 0x5f, 0x3d, 0x6e, 0x7d, 0x97, 0xab, 0xcf, 0xe2, 0x29, 0xf5, 0xf3, 0x5f, 0x69, 0xfc, 0xcc, 0xf3, 0x79, 0xee, + 0x64, 0xe6, 0x37, 0x2a, 0xce, 0xf7, 0xab, 0xbb, 0x33, 0xc8, 0xc4, 0xbf, 0x84, 0xab, 0x5a, 0x6e, 0x7f, 0xff, 0x6f, 0xc5, + 0xbf, 0x35, 0xd2, 0x56, 0xfc, 0x73, 0xb3, 0xa8, 0xc9, 0x9f, 0xc1, 0x9f, 0x17, 0xff, 0xfa, 0xf5, 0xff, 0xa1, 0x63, 0x73, + 0x8b, 0x5e, 0xdf, 0xea, 0xe9, 0x7b, 0x66, 0xdd, 0x33, 0x9e, 0xa7, 0xcd, 0x82, 0x33, 0x7e, 0x74, 0xc4, 0xf1, 0x87, 0xd8, + 0x03, 0x00, 0x00, 0x00, 0x0c, 0xcb, 0xf2, 0x19, 0x95, 0x61, 0x32, 0xba, 0xe5, 0x5c, 0x56, 0x50, 0x9c, 0x9d, 0xd3, 0xca, + 0x48, 0x6a, 0x8f, 0xf2, 0xae, 0xf5, 0x98, 0x6e, 0xca, 0xf9, 0xa9, 0x1d, 0x19, 0x29, 0x77, 0xb5, 0x2c, 0x87, 0xb3, 0x30, + 0xb6, 0x77, 0x73, 0xe3, 0xec, 0x9c, 0x35, 0x58, 0xab, 0xbd, 0x51, 0xde, 0xb7, 0x1e, 0x73, 0xc7, 0xe8, 0x7a, 0x7e, 0x5b, + 0x5e, 0x77, 0x76, 0xe7, 0x96, 0x54, 0xcb, 0xba, 0xbb, 0xd7, 0x97, 0xcb, 0x7c, 0x39, 0xb7, 0xaf, 0xda, 0xca, 0xce, 0x8b, + 0xf2, 0x3f, 0x5a, 0xa3, 0x8c, 0xf2, 0x2a, 0x6a, 0xf7, 0xac, 0x97, 0xa1, 0xc7, 0x2c, 0x5d, 0xf1, 0x8f, 0x67, 0x15, 0xef, + 0xcd, 0xb7, 0xb3, 0x1e, 0xe3, 0xde, 0x72, 0x2d, 0xc7, 0xb3, 0x0f, 0xa2, 0x18, 0xc7, 0x39, 0x12, 0xd9, 0xdc, 0x99, 0xda, + 0xc8, 0xab, 0xd8, 0x9b, 0xdb, 0x92, 0xda, 0x9b, 0xac, 0x3b, 0x6b, 0x78, 0x3e, 0x5b, 0xe6, 0x58, 0x76, 0xc6, 0xda, 0x98, + 0x6f, 0x3b, 0xc3, 0x64, 0x4d, 0x1d, 0xb3, 0x0e, 0xc8, 0x57, 0xc9, 0x9e, 0x3d, 0xad, 0x3c, 0x9c, 0xb5, 0x11, 0xff, 0x39, + 0x39, 0xb7, 0x57, 0xcb, 0x9c, 0xda, 0x0b, 0xae, 0x3b, 0x6b, 0x78, 0x3e, 0x5b, 0xe6, 0xd8, 0xfa, 0x95, 0xee, 0x3b, 0xf6, + 0xa8, 0x63, 0xae, 0x3b, 0x03, 0x6a, 0xba, 0x9f, 0xfa, 0x75, 0xa6, 0x8e, 0xbc, 0xff, 0x97, 0x8e, 0x77, 0xe4, 0x72, 0x3a, + 0x57, 0xe3, 0xf8, 0x1d, 0xbb, 0x2f, 0xc3, 0x64, 0xd4, 0x31, 0xcf, 0xca, 0xdd, 0x28, 0x9d, 0x77, 0xec, 0x7b, 0x5a, 0xae, + 0x88, 0x7f, 0x6f, 0x86, 0xc9, 0x3a, 0xec, 0x98, 0xe9, 0xf6, 0x9c, 0x9e, 0x1a, 0x5e, 0xff, 0xad, 0xf5, 0x18, 0xb9, 0x86, + 0xad, 0x3c, 0xa0, 0xf6, 0x08, 0xfe, 0x05, 0x8b, 0xdf, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x40, 0x22, 0xff, 0xa7, 0x9d, 0x7d, + 0x93, 0xcb, 0x50, 0x69, 0x67, 0xed, 0x64, 0x6b, 0xf4, 0xcc, 0xb7, 0x67, 0xdd, 0x8c, 0x6e, 0xe9, 0x59, 0x8b, 0xbd, 0x96, + 0xdc, 0x91, 0xfb, 0xbf, 0xef, 0x8e, 0x73, 0x4a, 0xa2, 0xdf, 0x6a, 0x2f, 0x1f, 0x47, 0x8d, 0xd9, 0xfd, 0xab, 0xbb, 0x23, + 0x7b, 0xfd, 0x3b, 0x3f, 0x30, 0x3f, 0xa9, 0x95, 0xb9, 0xf4, 0x39, 0xf2, 0x91, 0xbb, 0x85, 0xaf, 0x96, 0x65, 0x73, 0x2d, + 0x7a, 0xf7, 0xd0, 0x7a, 0xf2, 0x50, 0xda, 0xbb, 0x61, 0xe3, 0xe2, 0xdf, 0x3b, 0xe7, 0x7b, 0x5b, 0xb2, 0x75, 0x44, 0x9e, + 0x17, 0xff, 0x56, 0x96, 0xcf, 0xa8, 0xf8, 0x9f, 0xcb, 0x83, 0x19, 0x17, 0xff, 0x9e, 0x1c, 0xae, 0x78, 0xec, 0xad, 0x3c, + 0xa8, 0x3b, 0xe3, 0x1f, 0xd7, 0xd1, 0x3a, 0x12, 0xff, 0x7c, 0x96, 0x4f, 0x3e, 0xfe, 0xe7, 0xf2, 0x60, 0xc6, 0xc5, 0xbf, + 0x27, 0x87, 0x63, 0x6d, 0x54, 0x8b, 0x5a, 0xd3, 0xb5, 0x47, 0xea, 0x4e, 0x8e, 0xe1, 0xd2, 0x11, 0xff, 0x12, 0x8e, 0xf1, + 0x6c, 0xfe, 0x67, 0xe6, 0xfa, 0x2f, 0x97, 0xe5, 0xc1, 0x8c, 0xbd, 0xff, 0x8f, 0x5a, 0x87, 0xb2, 0x93, 0x7d, 0x58, 0x3a, + 0xb2, 0x45, 0xd6, 0xc1, 0x6b, 0x71, 0x2c, 0xdf, 0x61, 0x4c, 0xfc, 0x7b, 0xfa, 0x3a, 0x76, 0x4c, 0x36, 0xfe, 0xa5, 0x23, + 0xfe, 0x23, 0xc7, 0xde, 0x8e, 0x7f, 0x69, 0x64, 0x8b, 0xec, 0x1f, 0x33, 0x3a, 0xfe, 0xbd, 0x59, 0x2d, 0x65, 0x60, 0x5f, + 0x75, 0x70, 0xfc, 0xf3, 0x79, 0x32, 0x63, 0xc7, 0xde, 0x8e, 0x7f, 0xff, 0xe8, 0x5e, 0x7f, 0xe6, 0x0b, 0x72, 0xe8, 0x51, + 0x71, 0x06, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x7f, 0xa6, 0xc6, 0x13, 0xa9, 0xda, 0x59, 0x46, 0xc7, 0xb3, 0x85, 0x3e, 0x33, + 0x28, 0xb6, 0xf3, 0x27, 0xc6, 0x54, 0xfa, 0xd9, 0x7f, 0x76, 0x57, 0xf6, 0xfb, 0x44, 0xab, 0xd5, 0x33, 0xb6, 0xab, 0x9f, + 0x71, 0x76, 0x2c, 0xcb, 0xa7, 0x95, 0xf7, 0x92, 0xfb, 0x0c, 0x6a, 0x54, 0x9b, 0x66, 0x0e, 0x2a, 0xdd, 0x64, 0x3f, 0xbb, + 0xdf, 0xaa, 0x55, 0x11, 0xf7, 0x33, 0xb2, 0x8a, 0x45, 0x0d, 0xcf, 0xd7, 0xda, 0x31, 0xb6, 0x25, 0xf8, 0x6a, 0xd4, 0xc7, + 0xdc, 0xfd, 0x49, 0xe9, 0xfe, 0x5a, 0x0e, 0x47, 0x6b, 0x2a, 0xc5, 0x3b, 0x86, 0xaf, 0xbd, 0xee, 0xec, 0x19, 0xb0, 0x86, + 0xd7, 0xd8, 0xf6, 0x58, 0xe7, 0x30, 0xbf, 0x65, 0x0a, 0x9f, 0x66, 0x96, 0xaf, 0x55, 0x53, 0x83, 0xa7, 0x86, 0xb5, 0xf7, + 0x8f, 0xa2, 0xb1, 0x45, 0x4f, 0x4b, 0x9a, 0x82, 0x3e, 0x96, 0xee, 0xcf, 0x84, 0xd7, 0x9d, 0xe7, 0x48, 0x65, 0x7a, 0x6e, + 0x9d, 0x01, 0xad, 0x27, 0xb9, 0x2d, 0x03, 0x9e, 0x55, 0x92, 0xaf, 0x55, 0xd3, 0xca, 0x3c, 0x68, 0xf7, 0x96, 0xad, 0xcd, + 0x12, 0x9f, 0x33, 0xb9, 0x3b, 0xc3, 0xa8, 0x0a, 0x33, 0xc7, 0xee, 0x9c, 0xa5, 0x31, 0xa3, 0x29, 0x7d, 0x06, 0x5c, 0xfb, + 0x24, 0x8f, 0xeb, 0x32, 0x0f, 0x8e, 0xce, 0x62, 0xf4, 0xce, 0xf2, 0xf1, 0xf8, 0x4f, 0xa7, 0x6a, 0x82, 0x94, 0xee, 0x5c, + 0x99, 0xdc, 0x19, 0x70, 0x75, 0xfc, 0xaf, 0xca, 0x3c, 0x18, 0x55, 0x81, 0x63, 0x7d, 0x68, 0xfc, 0xf7, 0xaa, 0xcd, 0xe4, + 0x63, 0x99, 0xcf, 0x18, 0x9d, 0xbe, 0xe5, 0xce, 0x30, 0xfa, 0x98, 0x29, 0xfd, 0x3f, 0x99, 0x67, 0xc4, 0xbf, 0xaf, 0x42, + 0x4d, 0x49, 0xd7, 0x12, 0xfa, 0xae, 0xf8, 0xe7, 0x9f, 0x23, 0xd5, 0x77, 0xcc, 0xf8, 0xdc, 0xcb, 0x3b, 0xe2, 0xcf, 0x9f, + 0x53, 0xf9, 0x68, 0x91, 0x9f, 0x04, 0x00, 0x00, 0x00, 0x40, 0x52, 0xf9, 0x9f, 0x4c, 0xf6, 0xca, 0xf7, 0xb7, 0xcc, 0x3b, + 0xbb, 0x5a, 0xa5, 0xbb, 0xa5, 0x0c, 0xeb, 0xb3, 0x95, 0x63, 0x74, 0xf6, 0x99, 0x67, 0x9f, 0x7d, 0x97, 0x01, 0x3b, 0xe7, + 0xaf, 0x7f, 0xe7, 0x41, 0x3b, 0xeb, 0xe3, 0x5b, 0xae, 0xff, 0x34, 0xff, 0x15, 0xf5, 0x06, 0x5a, 0x15, 0x22, 0xe6, 0xc3, + 0xb9, 0x15, 0x4b, 0xb8, 0xa7, 0xba, 0x36, 0x6a, 0x06, 0xe4, 0xf7, 0x20, 0xbe, 0xbf, 0xca, 0xce, 0x92, 0x7c, 0x0e, 0xd5, + 0x7c, 0x63, 0x8d, 0x8d, 0x75, 0x27, 0x1f, 0x26, 0x97, 0x43, 0x13, 0xd7, 0x50, 0x98, 0x52, 0xaf, 0x8d, 0x9e, 0x49, 0xf4, + 0x67, 0xc6, 0x7f, 0x4a, 0xe6, 0xf6, 0xad, 0x07, 0xea, 0x65, 0x8c, 0xaa, 0xb1, 0x51, 0x3a, 0x32, 0x7c, 0x4a, 0xe3, 0xf9, + 0x63, 0xb9, 0xf8, 0x47, 0x4f, 0xab, 0x5b, 0x4f, 0x3e, 0xf9, 0xe9, 0x9a, 0x2a, 0x1b, 0xe3, 0x9f, 0x60, 0x33, 0xae, 0x9a, + 0xc7, 0xf8, 0x1a, 0x1b, 0xad, 0x9d, 0xf2, 0x38, 0xaf, 0x32, 0x17, 0xff, 0xab, 0x6a, 0x3b, 0x5c, 0x53, 0x65, 0xa3, 0xb7, + 0x42, 0x48, 0x4f, 0x6e, 0x4f, 0x79, 0x48, 0x8d, 0x8d, 0x6c, 0x85, 0x90, 0xf3, 0xf7, 0xff, 0xe7, 0xee, 0x54, 0xdf, 0x53, + 0x67, 0xa3, 0x27, 0x4f, 0xe7, 0xaa, 0x9d, 0xf9, 0xfc, 0xee, 0x7c, 0x26, 0xb7, 0x52, 0x65, 0x97, 0x51, 0x79, 0x3a, 0x4f, + 0xf2, 0x94, 0x67, 0x9e, 0xf1, 0xa4, 0x73, 0xda, 0x1a, 0xfc, 0xdb, 0x59, 0x5e, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, + 0xf0, 0x1f }; + +// Font characters rectangles data +static const Rectangle bluishFontRecs[95] = { + { 4, 4, 5 , 10 }, + { 17, 4, 2 , 8 }, + { 27, 4, 4 , 3 }, + { 39, 4, 6 , 8 }, + { 53, 4, 5 , 10 }, + { 66, 4, 6 , 8 }, + { 80, 4, 5 , 10 }, + { 93, 4, 2 , 3 }, + { 103, 4, 3 , 8 }, + { 114, 4, 3 , 8 }, + { 125, 4, 6 , 6 }, + { 139, 4, 6 , 6 }, + { 153, 4, 2 , 3 }, + { 163, 4, 5 , 2 }, + { 176, 4, 2 , 2 }, + { 186, 4, 6 , 8 }, + { 200, 4, 5 , 8 }, + { 213, 4, 3 , 8 }, + { 224, 4, 5 , 8 }, + { 237, 4, 5 , 8 }, + { 4, 22, 5 , 8 }, + { 17, 22, 5 , 8 }, + { 30, 22, 5 , 8 }, + { 43, 22, 5 , 8 }, + { 56, 22, 5 , 8 }, + { 69, 22, 5 , 8 }, + { 82, 22, 2 , 8 }, + { 92, 22, 2 , 9 }, + { 102, 22, 4 , 6 }, + { 114, 22, 5 , 4 }, + { 127, 22, 4 , 6 }, + { 139, 22, 5 , 8 }, + { 152, 22, 6 , 8 }, + { 166, 22, 5 , 8 }, + { 179, 22, 5 , 8 }, + { 192, 22, 5 , 8 }, + { 205, 22, 5 , 8 }, + { 218, 22, 5 , 8 }, + { 231, 22, 5 , 8 }, + { 4, 40, 5 , 8 }, + { 17, 40, 5 , 8 }, + { 30, 40, 4 , 8 }, + { 42, 40, 5 , 8 }, + { 55, 40, 5 , 8 }, + { 68, 40, 5 , 8 }, + { 81, 40, 8 , 8 }, + { 97, 40, 5 , 8 }, + { 110, 40, 5 , 8 }, + { 123, 40, 5 , 8 }, + { 136, 40, 5 , 9 }, + { 149, 40, 5 , 8 }, + { 162, 40, 5 , 8 }, + { 175, 40, 6 , 8 }, + { 189, 40, 5 , 8 }, + { 202, 40, 5 , 8 }, + { 215, 40, 8 , 8 }, + { 231, 40, 5 , 8 }, + { 4, 58, 5 , 8 }, + { 17, 58, 5 , 8 }, + { 30, 58, 3 , 8 }, + { 41, 58, 6 , 8 }, + { 55, 58, 3 , 8 }, + { 66, 58, 6 , 4 }, + { 80, 58, 5 , 1 }, + { 93, 58, 2 , 3 }, + { 103, 58, 5 , 6 }, + { 116, 58, 5 , 8 }, + { 129, 58, 5 , 6 }, + { 142, 58, 5 , 8 }, + { 155, 58, 5 , 6 }, + { 168, 58, 5 , 8 }, + { 181, 58, 5 , 7 }, + { 194, 58, 5 , 8 }, + { 207, 58, 2 , 8 }, + { 217, 58, 3 , 9 }, + { 228, 58, 5 , 8 }, + { 241, 58, 2 , 8 }, + { 4, 76, 8 , 6 }, + { 20, 76, 5 , 6 }, + { 33, 76, 5 , 6 }, + { 46, 76, 5 , 7 }, + { 59, 76, 5 , 7 }, + { 72, 76, 5 , 6 }, + { 85, 76, 5 , 6 }, + { 98, 76, 5 , 8 }, + { 111, 76, 5 , 6 }, + { 124, 76, 5 , 6 }, + { 137, 76, 8 , 6 }, + { 153, 76, 5 , 6 }, + { 166, 76, 5 , 7 }, + { 179, 76, 5 , 6 }, + { 192, 76, 4 , 8 }, + { 204, 76, 2 , 10 }, + { 214, 76, 4 , 8 }, + { 226, 76, 6 , 4 }, +}; + +// Font characters info data +// NOTE: No chars.image data provided +static const GlyphInfo bluishFontChars[95] = { + { 32, 0, 9, 5, { 0 }}, + { 33, 0, 1, 2, { 0 }}, + { 34, 0, 1, 4, { 0 }}, + { 35, 0, 1, 6, { 0 }}, + { 36, 0, 0, 5, { 0 }}, + { 37, 0, 1, 6, { 0 }}, + { 38, 0, 0, 5, { 0 }}, + { 39, 0, 1, 2, { 0 }}, + { 40, 0, 1, 3, { 0 }}, + { 41, 0, 1, 3, { 0 }}, + { 42, 0, 1, 6, { 0 }}, + { 43, 0, 2, 6, { 0 }}, + { 44, 0, 7, 2, { 0 }}, + { 45, 0, 4, 5, { 0 }}, + { 46, 0, 7, 2, { 0 }}, + { 47, 0, 1, 6, { 0 }}, + { 48, 0, 1, 5, { 0 }}, + { 49, 0, 1, 3, { 0 }}, + { 50, 0, 1, 5, { 0 }}, + { 51, 0, 1, 5, { 0 }}, + { 52, 0, 1, 5, { 0 }}, + { 53, 0, 1, 5, { 0 }}, + { 54, 0, 1, 5, { 0 }}, + { 55, 0, 1, 5, { 0 }}, + { 56, 0, 1, 5, { 0 }}, + { 57, 0, 1, 5, { 0 }}, + { 58, 0, 1, 2, { 0 }}, + { 59, 0, 1, 2, { 0 }}, + { 60, 0, 2, 4, { 0 }}, + { 61, 0, 3, 5, { 0 }}, + { 62, 0, 2, 4, { 0 }}, + { 63, 0, 1, 5, { 0 }}, + { 64, 0, 1, 6, { 0 }}, + { 65, 0, 1, 5, { 0 }}, + { 66, 0, 1, 5, { 0 }}, + { 67, 0, 1, 5, { 0 }}, + { 68, 0, 1, 5, { 0 }}, + { 69, 0, 1, 5, { 0 }}, + { 70, 0, 1, 5, { 0 }}, + { 71, 0, 1, 5, { 0 }}, + { 72, 0, 1, 5, { 0 }}, + { 73, 0, 1, 4, { 0 }}, + { 74, 0, 1, 5, { 0 }}, + { 75, 0, 1, 5, { 0 }}, + { 76, 0, 1, 5, { 0 }}, + { 77, 0, 1, 8, { 0 }}, + { 78, 0, 1, 5, { 0 }}, + { 79, 0, 1, 5, { 0 }}, + { 80, 0, 1, 5, { 0 }}, + { 81, 0, 1, 5, { 0 }}, + { 82, 0, 1, 5, { 0 }}, + { 83, 0, 1, 5, { 0 }}, + { 84, 0, 1, 6, { 0 }}, + { 85, 0, 1, 5, { 0 }}, + { 86, 0, 1, 5, { 0 }}, + { 87, 0, 1, 8, { 0 }}, + { 88, 0, 1, 5, { 0 }}, + { 89, 0, 1, 5, { 0 }}, + { 90, 0, 1, 5, { 0 }}, + { 91, 0, 1, 3, { 0 }}, + { 92, 0, 1, 6, { 0 }}, + { 93, 0, 1, 3, { 0 }}, + { 94, 0, 1, 6, { 0 }}, + { 95, 0, 9, 5, { 0 }}, + { 96, 0, 1, 2, { 0 }}, + { 97, 0, 3, 5, { 0 }}, + { 98, 0, 1, 5, { 0 }}, + { 99, 0, 3, 5, { 0 }}, + { 100, 0, 1, 5, { 0 }}, + { 101, 0, 3, 5, { 0 }}, + { 102, 0, 1, 5, { 0 }}, + { 103, 0, 3, 5, { 0 }}, + { 104, 0, 1, 5, { 0 }}, + { 105, 0, 1, 2, { 0 }}, + { 106, 0, 1, 3, { 0 }}, + { 107, 0, 1, 5, { 0 }}, + { 108, 0, 1, 2, { 0 }}, + { 109, 0, 3, 8, { 0 }}, + { 110, 0, 3, 5, { 0 }}, + { 111, 0, 3, 5, { 0 }}, + { 112, 0, 3, 5, { 0 }}, + { 113, 0, 3, 5, { 0 }}, + { 114, 0, 3, 5, { 0 }}, + { 115, 0, 3, 5, { 0 }}, + { 116, 0, 1, 5, { 0 }}, + { 117, 0, 3, 5, { 0 }}, + { 118, 0, 3, 5, { 0 }}, + { 119, 0, 3, 8, { 0 }}, + { 120, 0, 3, 5, { 0 }}, + { 121, 0, 3, 5, { 0 }}, + { 122, 0, 3, 5, { 0 }}, + { 123, 0, 1, 4, { 0 }}, + { 124, 0, 0, 2, { 0 }}, + { 125, 0, 1, 4, { 0 }}, + { 126, 0, 3, 6, { 0 }}, +}; + +// Style loading function: bluish +static void GuiLoadStyleBluish(void) +{ + // Load style properties provided + // NOTE: Default properties are propagated + for (int i = 0; i < BLUISH_STYLE_PROPS_COUNT; i++) + { + GuiSetStyle(bluishStyleProps[i].controlId, bluishStyleProps[i].propertyId, bluishStyleProps[i].propertyValue); + } + + // Custom font loading + // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function + int bluishFontDataSize = 0; + unsigned char *data = DecompressData(bluishFontData, BLUISH_COMPRESSED_DATA_SIZE, &bluishFontDataSize); + Image imFont = { data, 256, 256, 1, 2 }; + + Font font = { 0 }; + font.baseSize = 10; + font.glyphCount = 95; + + // Load texture from image + font.texture = LoadTextureFromImage(imFont); + UnloadImage(imFont); // Uncompressed data can be unloaded from memory + + // Copy char recs data from global fontRecs + // NOTE: Required to avoid issues if trying to free font + font.recs = (Rectangle *)malloc(font.glyphCount*sizeof(Rectangle)); + memcpy(font.recs, bluishFontRecs, font.glyphCount*sizeof(Rectangle)); + + // Copy font char info data from global fontChars + // NOTE: Required to avoid issues if trying to free font + font.glyphs = (GlyphInfo *)malloc(font.glyphCount*sizeof(GlyphInfo)); + memcpy(font.glyphs, bluishFontChars, font.glyphCount*sizeof(GlyphInfo)); + + GuiSetFont(font); + + // Setup a white rectangle on the font to be used on shapes drawing, + // this way we make sure all gui can be drawn on a single pass because no texture change is required + // NOTE: Setting up this rectangle is a manual process (for the moment) + Rectangle whiteChar = { 66, 5, 2, 2 }; + SetShapesTexture(font.texture, whiteChar); +} diff --git a/examples/style_selector/styles/style_cyber.h b/examples/style_selector/styles/style_cyber.h new file mode 100644 index 0000000..8588437 --- /dev/null +++ b/examples/style_selector/styles/style_cyber.h @@ -0,0 +1,340 @@ +////////////////////////////////////////////////////////////////////////////////// +// // +// StyleAsCode exporter v1.2 - Style data exported as a values array // +// // +// USAGE: On init call: GuiLoadStyleCyber(); // +// // +// more info and bugs-report: github.com/raysan5/raygui // +// feedback and support: ray[at]raylibtech.com // +// // +// Copyright (c) 2020-2022 raylib technologies (@raylibtech) // +// // +////////////////////////////////////////////////////////////////////////////////// + +#define CYBER_STYLE_PROPS_COUNT 16 + +// Custom style name: cyber +static const GuiStyleProp cyberStyleProps[CYBER_STYLE_PROPS_COUNT] = { + { 0, 0, 0x2f7486ff }, // DEFAULT_BORDER_COLOR_NORMAL + { 0, 1, 0x024658ff }, // DEFAULT_BASE_COLOR_NORMAL + { 0, 2, 0x51bfd3ff }, // DEFAULT_TEXT_COLOR_NORMAL + { 0, 3, 0x82cde0ff }, // DEFAULT_BORDER_COLOR_FOCUSED + { 0, 4, 0x3299b4ff }, // DEFAULT_BASE_COLOR_FOCUSED + { 0, 5, 0xb6e1eaff }, // DEFAULT_TEXT_COLOR_FOCUSED + { 0, 6, 0xeb7630ff }, // DEFAULT_BORDER_COLOR_PRESSED + { 0, 7, 0xffbc51ff }, // DEFAULT_BASE_COLOR_PRESSED + { 0, 8, 0xd86f36ff }, // DEFAULT_TEXT_COLOR_PRESSED + { 0, 9, 0x134b5aff }, // DEFAULT_BORDER_COLOR_DISABLED + { 0, 10, 0x02313dff }, // DEFAULT_BASE_COLOR_DISABLED + { 0, 11, 0x17505fff }, // DEFAULT_TEXT_COLOR_DISABLED + { 0, 16, 0x0000000e }, // DEFAULT_TEXT_SIZE + { 0, 17, 0x00000000 }, // DEFAULT_TEXT_SPACING + { 0, 18, 0x81c0d0ff }, // DEFAULT_LINE_COLOR + { 0, 19, 0x00222bff }, // DEFAULT_BACKGROUND_COLOR +}; + +// WARNING: This style uses a custom font: (size: 14, spacing: 0) + +#define CYBER_COMPRESSED_DATA_SIZE 1104 + +// Font image pixels data compressed (DEFLATE) +// NOTE: Original pixel data simplified to GRAYSCALE +static unsigned char cyberFontData[CYBER_COMPRESSED_DATA_SIZE] = { 0xed, + 0xdd, 0xe1, 0x6e, 0x9b, 0x30, 0x14, 0x05, 0x60, 0xb4, 0xf7, 0x7f, 0xe3, 0x8d, 0x9d, 0x49, 0x95, 0xb6, 0xa9, 0x9b, 0x02, + 0xf6, 0xb5, 0x4d, 0x48, 0xfa, 0xed, 0xfb, 0xd7, 0x94, 0x05, 0x7c, 0xb1, 0x81, 0xfa, 0xc4, 0xc9, 0x06, 0x00, 0xb0, 0x58, + 0x2e, 0x7e, 0xb7, 0x34, 0xff, 0x74, 0xde, 0x11, 0xfd, 0xfe, 0xf7, 0xdc, 0x63, 0x5f, 0x77, 0x74, 0x8f, 0x8e, 0x24, 0x27, + 0xc7, 0x99, 0x87, 0x2d, 0xf3, 0xef, 0x56, 0x39, 0xd8, 0xbe, 0x6f, 0x4f, 0xfb, 0xce, 0xc3, 0x1c, 0xee, 0xfd, 0xda, 0xf3, + 0x39, 0x87, 0x6d, 0xb6, 0x77, 0x6c, 0x75, 0xdc, 0xce, 0xab, 0xea, 0xff, 0xf9, 0xdf, 0xa3, 0xff, 0x29, 0x0d, 0xad, 0x56, + 0x3d, 0xbb, 0xc6, 0xeb, 0xbf, 0x75, 0x9d, 0x5f, 0xeb, 0xc7, 0xc5, 0x34, 0x54, 0xba, 0xbf, 0x1f, 0xad, 0x1a, 0xaf, 0xf7, + 0x86, 0x63, 0xd9, 0xcb, 0xef, 0x98, 0xee, 0x3d, 0xea, 0xad, 0x7f, 0x0e, 0x46, 0xee, 0x79, 0x3d, 0xaa, 0x7a, 0x36, 0x56, + 0xc6, 0x9f, 0x6b, 0xeb, 0x3f, 0x36, 0xfe, 0x9f, 0xbf, 0xdf, 0xf7, 0x0f, 0xed, 0x7b, 0xf5, 0x2a, 0xfd, 0xbf, 0xed, 0x3d, + 0x73, 0x93, 0xf1, 0xbf, 0x5e, 0xff, 0xbf, 0xfd, 0x3f, 0x03, 0x15, 0x6b, 0x3f, 0xae, 0x2b, 0xae, 0xff, 0xe3, 0xf6, 0xc6, + 0xbd, 0xcc, 0x84, 0xab, 0xde, 0xea, 0x7b, 0xed, 0xb1, 0xeb, 0x7f, 0x1a, 0xcf, 0xae, 0x75, 0xf5, 0xbf, 0xde, 0x8f, 0xe6, + 0x23, 0x78, 0x4e, 0xfd, 0xaf, 0x1b, 0xff, 0x7b, 0xee, 0xff, 0xf3, 0x26, 0xf5, 0x4f, 0x47, 0xaf, 0xea, 0x7d, 0xfa, 0x5c, + 0x79, 0xbf, 0xe2, 0xf9, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xd3, 0xac, 0x63, 0x0a, 0xc9, 0x86, 0xf7, 0x6e, + 0xa3, 0x96, 0xa3, 0xcc, 0x49, 0x4e, 0x35, 0x0d, 0xbf, 0x71, 0xb6, 0x7d, 0x6d, 0x1e, 0xfc, 0x38, 0x27, 0xbb, 0x36, 0xf1, + 0xb0, 0x35, 0x67, 0xc0, 0x67, 0x1c, 0x4d, 0x9a, 0xb7, 0xaf, 0x65, 0x25, 0x8f, 0xf3, 0x68, 0xb5, 0x1c, 0x74, 0x86, 0x32, + 0x8b, 0x19, 0x7c, 0x7d, 0x74, 0xa4, 0x38, 0x4b, 0x35, 0x3d, 0xfe, 0xe9, 0x8a, 0xa3, 0xc9, 0xa7, 0x4c, 0xe4, 0xfc, 0xd6, + 0x38, 0xce, 0x9a, 0x54, 0xfb, 0xef, 0xda, 0x1c, 0x74, 0xff, 0x58, 0x9f, 0x49, 0xe9, 0x94, 0xda, 0xd9, 0xfc, 0xbb, 0xa5, + 0x46, 0x8f, 0x66, 0x9f, 0x98, 0xb1, 0x69, 0x4b, 0x1a, 0x65, 0xb0, 0x0f, 0xed, 0x85, 0xb6, 0xfc, 0x96, 0xfd, 0x8f, 0xad, + 0x38, 0x26, 0xae, 0xa9, 0xfe, 0x59, 0xde, 0xed, 0xd1, 0xef, 0xef, 0x43, 0x9f, 0xa4, 0x48, 0x7e, 0x7e, 0xd8, 0x97, 0x64, + 0xac, 0x72, 0x78, 0x45, 0x4a, 0xd7, 0x58, 0xdf, 0x33, 0x26, 0xb5, 0xe5, 0xa0, 0xf7, 0x85, 0x09, 0xb3, 0x2c, 0xca, 0xee, + 0x3f, 0xea, 0xff, 0xd7, 0x8d, 0x76, 0xdb, 0xd2, 0xeb, 0xf3, 0x9c, 0x2b, 0x74, 0x3d, 0x07, 0xbf, 0xf6, 0xfa, 0x7f, 0xd5, + 0x19, 0xb3, 0x62, 0xfc, 0x9f, 0xff, 0x94, 0x33, 0x7a, 0x4f, 0x9b, 0x62, 0x5e, 0x77, 0xf6, 0x1d, 0xef, 0xda, 0xfb, 0xff, + 0xd6, 0xa3, 0x49, 0xf1, 0x53, 0x5f, 0x57, 0xb5, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x9a, 0xfe, 0x4d, + 0x69, 0xc6, 0x7a, 0x6c, 0xeb, 0x7a, 0xfe, 0x72, 0x5d, 0x4e, 0x26, 0x27, 0xbf, 0xdb, 0xba, 0x5e, 0xd9, 0x79, 0x8a, 0x77, + 0xbf, 0x41, 0x0a, 0x78, 0x2c, 0x53, 0x98, 0xa5, 0x79, 0x97, 0xde, 0xff, 0x63, 0x56, 0xfd, 0x73, 0x98, 0xe4, 0xcb, 0x85, + 0x29, 0xdf, 0xf5, 0x99, 0xe8, 0x99, 0x7d, 0xe5, 0x7e, 0xf5, 0xaf, 0xae, 0x37, 0x99, 0x83, 0xd4, 0x7b, 0x4e, 0x32, 0xb1, + 0x77, 0xaa, 0xff, 0x36, 0xa1, 0xfe, 0xf5, 0xf1, 0x3f, 0x27, 0xe9, 0xe2, 0x34, 0x8d, 0x65, 0x73, 0x73, 0xfb, 0xad, 0x67, + 0xed, 0xe3, 0x15, 0x27, 0xcf, 0xd6, 0x33, 0x7d, 0x7e, 0xff, 0xae, 0x8e, 0xff, 0x2b, 0xfb, 0x7f, 0x5e, 0xaa, 0xff, 0xb7, + 0x5c, 0xff, 0xeb, 0x29, 0xfe, 0x0c, 0xa6, 0x80, 0xf7, 0xe6, 0xfa, 0xde, 0x67, 0xfc, 0x9f, 0x5b, 0xff, 0xdc, 0xe2, 0xfe, + 0x2f, 0x4b, 0xc6, 0xe7, 0xf6, 0xf1, 0x25, 0x83, 0x89, 0xee, 0xb9, 0x77, 0xf0, 0xd7, 0xde, 0xff, 0x8f, 0xf5, 0xa0, 0xf6, + 0x63, 0xca, 0xf4, 0xf1, 0x77, 0x74, 0xed, 0xdf, 0xb9, 0xe3, 0x3f, 0xaf, 0xf4, 0xd9, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x8f, 0x96, 0xe2, 0x6a, 0x5d, 0xe9, 0x5c, 0x13, 0xaa, 0xb2, 0xfa, 0x6a, 0x7d, 0x9e, 0x76, 0xce, 0x2c, 0x6f, + 0x86, 0xe7, 0xe8, 0xdb, 0x5e, 0x4f, 0x79, 0x3e, 0xbd, 0x67, 0x36, 0xbf, 0x27, 0xa3, 0x90, 0xf2, 0x1c, 0xec, 0x75, 0xab, + 0x85, 0x8e, 0xcf, 0x0e, 0x8f, 0x7e, 0x63, 0xf2, 0xfa, 0xfa, 0xb7, 0x7c, 0x7f, 0x74, 0x3d, 0x0b, 0x36, 0xf6, 0xcd, 0xfe, + 0x39, 0xcc, 0x87, 0x8e, 0x9f, 0x01, 0xf5, 0x6c, 0xcd, 0x3b, 0xd5, 0xff, 0xbc, 0x4d, 0x53, 0xae, 0xfe, 0xd8, 0xb7, 0x81, + 0xaf, 0xcd, 0x60, 0xec, 0x4d, 0xe7, 0x46, 0x6d, 0xad, 0xd7, 0x7d, 0x78, 0x55, 0xdc, 0x2b, 0xeb, 0x3f, 0x5e, 0x89, 0x2c, + 0xc9, 0xa8, 0xe7, 0xb2, 0x4f, 0xdf, 0x54, 0x72, 0x7e, 0xf5, 0x6d, 0xe7, 0xd5, 0xbf, 0xa5, 0x67, 0x8f, 0xf7, 0xff, 0x91, + 0x57, 0xd3, 0xdc, 0x0b, 0xef, 0x95, 0xc1, 0xca, 0xc0, 0x5e, 0x5c, 0x59, 0xff, 0xe3, 0xea, 0xcd, 0xb8, 0xfe, 0x8f, 0x55, + 0xf8, 0xbc, 0x05, 0x7e, 0xa8, 0xff, 0xe0, 0x73, 0x46, 0x1a, 0x9e, 0xa3, 0xaa, 0x4f, 0x18, 0xe7, 0xaf, 0x8c, 0x65, 0x94, + 0x47, 0x9f, 0x11, 0x9e, 0x71, 0x6d, 0xb8, 0xea, 0xe9, 0xd0, 0xf3, 0xbf, 0xbf, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x8a, 0xf3, 0x63, 0x79, 0x93, 0xf9, 0xc5, 0x34, 0x7d, 0x8b, 0xf6, 0xf9, 0xea, 0xa9, 0xc7, 0x6b, 0xaf, 0xee, 0xa5, + 0xd4, 0x55, 0x7d, 0x9f, 0xe6, 0x27, 0x04, 0xfe, 0xdf, 0x72, 0xef, 0x98, 0x05, 0xcd, 0xf4, 0xe4, 0x6a, 0x26, 0xa5, 0x3a, + 0x7a, 0xf2, 0xc6, 0xfd, 0xc9, 0xa9, 0x39, 0xaf, 0xce, 0xca, 0xb6, 0xcd, 0xa9, 0xff, 0x58, 0x76, 0x3a, 0xcb, 0x52, 0x13, + 0x5f, 0xa7, 0xfe, 0x5b, 0x71, 0xbd, 0xd2, 0xb9, 0xfd, 0xbf, 0x67, 0xbf, 0x52, 0x4e, 0x35, 0x57, 0xfa, 0x7f, 0xde, 0xbe, + 0xfe, 0xb5, 0xd6, 0xcc, 0x94, 0x1e, 0x57, 0xcb, 0x4e, 0xed, 0xe5, 0xf4, 0x69, 0x6f, 0xfd, 0x73, 0x69, 0xff, 0xdf, 0x1a, + 0x57, 0xc3, 0x9c, 0xd9, 0x96, 0xf5, 0xf5, 0x8a, 0x57, 0xdf, 0x85, 0xd5, 0x3f, 0x21, 0x31, 0xa3, 0xfe, 0x63, 0xab, 0x68, + 0x3e, 0xa7, 0x3d, 0x56, 0xec, 0x5d, 0x6e, 0x90, 0x41, 0xed, 0xeb, 0x25, 0x33, 0xfb, 0xff, 0xca, 0x7b, 0x0c, 0xf5, 0x5f, + 0xf1, 0xce, 0x57, 0xd4, 0x7f, 0xfb, 0x52, 0xe9, 0xcc, 0xf7, 0xcf, 0xa2, 0x4a, 0xda, 0x7e, 0xed, 0xbf, 0x40, 0x69, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xd9, 0xf3, 0x6e, 0x79, 0x42, 0x9a, 0xaa, 0x25, 0x4f, 0xd3, 0x96, 0x14, 0x39, 0x9e, + 0x5b, 0x32, 0xc3, 0xb4, 0xaa, 0xfe, 0x47, 0xdf, 0x54, 0xdc, 0x9e, 0x50, 0xcb, 0x92, 0x9f, 0xaa, 0xfd, 0x15, 0xf5, 0xdf, + 0x9a, 0x92, 0x6b, 0x99, 0x96, 0x7b, 0xbd, 0x53, 0x1e, 0xec, 0x7d, 0xce, 0x80, 0xfa, 0xea, 0x9d, 0xf5, 0xfe, 0x3f, 0x73, + 0x3d, 0x67, 0xf5, 0x5f, 0x93, 0xbf, 0x68, 0x5f, 0xbd, 0xb1, 0xb2, 0x4a, 0xed, 0xcc, 0x75, 0xdb, 0x9d, 0x01, 0xef, 0x96, + 0xef, 0xd2, 0xff, 0xbf, 0xea, 0xa7, 0x0b, 0xd5, 0x1f, 0xf5, 0x67, 0xfc, 0xf9, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x0f, 0xbf, 0x00 }; + +// Font characters rectangles data +static const Rectangle cyberFontRecs[95] = { + { 4, 4, 4 , 14 }, + { 16, 4, 1 , 8 }, + { 25, 4, 4 , 3 }, + { 37, 4, 8 , 8 }, + { 53, 4, 8 , 9 }, + { 69, 4, 8 , 8 }, + { 85, 4, 8 , 8 }, + { 101, 4, 1 , 3 }, + { 110, 4, 4 , 9 }, + { 122, 4, 4 , 9 }, + { 134, 4, 5 , 6 }, + { 147, 4, 5 , 6 }, + { 160, 4, 2 , 2 }, + { 170, 4, 4 , 1 }, + { 182, 4, 1 , 1 }, + { 191, 4, 8 , 8 }, + { 207, 4, 8 , 8 }, + { 223, 4, 2 , 8 }, + { 233, 4, 8 , 8 }, + { 4, 26, 8 , 8 }, + { 20, 26, 8 , 8 }, + { 36, 26, 8 , 8 }, + { 52, 26, 8 , 8 }, + { 68, 26, 7 , 8 }, + { 83, 26, 8 , 8 }, + { 99, 26, 8 , 8 }, + { 115, 26, 1 , 4 }, + { 124, 26, 2 , 5 }, + { 134, 26, 4 , 8 }, + { 146, 26, 5 , 3 }, + { 159, 26, 4 , 8 }, + { 171, 26, 7 , 8 }, + { 186, 26, 8 , 8 }, + { 202, 26, 8 , 8 }, + { 218, 26, 8 , 8 }, + { 234, 26, 8 , 8 }, + { 4, 48, 8 , 8 }, + { 20, 48, 7 , 8 }, + { 35, 48, 7 , 8 }, + { 50, 48, 8 , 8 }, + { 66, 48, 8 , 8 }, + { 82, 48, 5 , 8 }, + { 95, 48, 7 , 8 }, + { 110, 48, 8 , 8 }, + { 126, 48, 7 , 8 }, + { 141, 48, 8 , 8 }, + { 157, 48, 8 , 8 }, + { 173, 48, 8 , 8 }, + { 189, 48, 8 , 8 }, + { 205, 48, 8 , 9 }, + { 221, 48, 8 , 8 }, + { 237, 48, 8 , 8 }, + { 4, 70, 8 , 8 }, + { 20, 70, 8 , 8 }, + { 36, 70, 8 , 8 }, + { 52, 70, 9 , 8 }, + { 69, 70, 8 , 8 }, + { 85, 70, 8 , 8 }, + { 101, 70, 8 , 8 }, + { 117, 70, 4 , 9 }, + { 129, 70, 8 , 8 }, + { 145, 70, 4 , 9 }, + { 157, 70, 4 , 3 }, + { 169, 70, 7 , 1 }, + { 184, 70, 2 , 3 }, + { 194, 70, 7 , 5 }, + { 209, 70, 7 , 8 }, + { 224, 70, 7 , 5 }, + { 239, 70, 7 , 8 }, + { 4, 92, 7 , 5 }, + { 19, 92, 4 , 8 }, + { 31, 92, 7 , 7 }, + { 46, 92, 7 , 8 }, + { 61, 92, 1 , 8 }, + { 70, 92, 3 , 10 }, + { 81, 92, 7 , 8 }, + { 96, 92, 4 , 8 }, + { 108, 92, 9 , 5 }, + { 125, 92, 7 , 5 }, + { 140, 92, 7 , 5 }, + { 155, 92, 7 , 7 }, + { 170, 92, 7 , 7 }, + { 185, 92, 5 , 5 }, + { 198, 92, 7 , 5 }, + { 213, 92, 5 , 8 }, + { 226, 92, 7 , 5 }, + { 4, 114, 7 , 5 }, + { 19, 114, 9 , 5 }, + { 36, 114, 7 , 5 }, + { 51, 114, 7 , 7 }, + { 66, 114, 7 , 5 }, + { 81, 114, 4 , 9 }, + { 93, 114, 1 , 9 }, + { 102, 114, 4 , 9 }, + { 114, 114, 8 , 2 }, +}; + +// Font characters info data +// NOTE: No chars.image data provided +static const GlyphInfo cyberFontChars[95] = { + { 32, 0, 11, 4, { 0 }}, + { 33, 0, 3, 2, { 0 }}, + { 34, 0, 3, 4, { 0 }}, + { 35, 0, 3, 8, { 0 }}, + { 36, 0, 3, 8, { 0 }}, + { 37, 0, 3, 8, { 0 }}, + { 38, 0, 3, 8, { 0 }}, + { 39, 0, 3, 2, { 0 }}, + { 40, 0, 3, 4, { 0 }}, + { 41, 0, 3, 4, { 0 }}, + { 42, 0, 4, 6, { 0 }}, + { 43, 0, 4, 6, { 0 }}, + { 44, 0, 10, 3, { 0 }}, + { 45, 0, 7, 5, { 0 }}, + { 46, 0, 10, 2, { 0 }}, + { 47, 0, 3, 8, { 0 }}, + { 48, 0, 3, 8, { 0 }}, + { 49, 0, 3, 3, { 0 }}, + { 50, 0, 3, 8, { 0 }}, + { 51, 0, 3, 8, { 0 }}, + { 52, 0, 3, 8, { 0 }}, + { 53, 0, 3, 8, { 0 }}, + { 54, 0, 3, 8, { 0 }}, + { 55, 0, 3, 7, { 0 }}, + { 56, 0, 3, 8, { 0 }}, + { 57, 0, 3, 8, { 0 }}, + { 58, 0, 6, 2, { 0 }}, + { 59, 0, 6, 3, { 0 }}, + { 60, 0, 3, 5, { 0 }}, + { 61, 0, 6, 6, { 0 }}, + { 62, 0, 3, 5, { 0 }}, + { 63, 0, 3, 7, { 0 }}, + { 64, 0, 3, 8, { 0 }}, + { 65, 0, 3, 8, { 0 }}, + { 66, 0, 3, 8, { 0 }}, + { 67, 0, 3, 8, { 0 }}, + { 68, 0, 3, 8, { 0 }}, + { 69, 0, 3, 7, { 0 }}, + { 70, 0, 3, 7, { 0 }}, + { 71, 0, 3, 8, { 0 }}, + { 72, 0, 3, 8, { 0 }}, + { 73, 0, 3, 6, { 0 }}, + { 74, 0, 3, 7, { 0 }}, + { 75, 0, 3, 8, { 0 }}, + { 76, 0, 3, 7, { 0 }}, + { 77, 0, 3, 9, { 0 }}, + { 78, 0, 3, 8, { 0 }}, + { 79, 0, 3, 8, { 0 }}, + { 80, 0, 3, 8, { 0 }}, + { 81, 0, 3, 8, { 0 }}, + { 82, 0, 3, 8, { 0 }}, + { 83, 0, 3, 8, { 0 }}, + { 84, 0, 3, 8, { 0 }}, + { 85, 0, 3, 8, { 0 }}, + { 86, 0, 3, 8, { 0 }}, + { 87, 0, 3, 10, { 0 }}, + { 88, 0, 3, 8, { 0 }}, + { 89, 0, 3, 8, { 0 }}, + { 90, 0, 3, 8, { 0 }}, + { 91, 0, 3, 4, { 0 }}, + { 92, 0, 3, 8, { 0 }}, + { 93, 0, 3, 4, { 0 }}, + { 94, 0, 3, 4, { 0 }}, + { 95, 0, 11, 7, { 0 }}, + { 96, 0, 3, 3, { 0 }}, + { 97, 0, 6, 7, { 0 }}, + { 98, 0, 3, 7, { 0 }}, + { 99, 0, 6, 7, { 0 }}, + { 100, 0, 3, 7, { 0 }}, + { 101, 0, 6, 7, { 0 }}, + { 102, 0, 3, 5, { 0 }}, + { 103, 0, 6, 7, { 0 }}, + { 104, 0, 3, 7, { 0 }}, + { 105, 0, 3, 2, { 0 }}, + { 106, -2, 3, 2, { 0 }}, + { 107, 0, 3, 7, { 0 }}, + { 108, 0, 3, 4, { 0 }}, + { 109, 0, 6, 10, { 0 }}, + { 110, 0, 6, 7, { 0 }}, + { 111, 0, 6, 7, { 0 }}, + { 112, 0, 6, 7, { 0 }}, + { 113, 0, 6, 7, { 0 }}, + { 114, 0, 6, 6, { 0 }}, + { 115, 0, 6, 7, { 0 }}, + { 116, 0, 3, 6, { 0 }}, + { 117, 0, 6, 7, { 0 }}, + { 118, 0, 6, 7, { 0 }}, + { 119, 0, 6, 10, { 0 }}, + { 120, 0, 6, 7, { 0 }}, + { 121, 0, 6, 7, { 0 }}, + { 122, 0, 6, 7, { 0 }}, + { 123, 0, 3, 5, { 0 }}, + { 124, 0, 3, 2, { 0 }}, + { 125, 0, 3, 5, { 0 }}, + { 126, 0, 6, 8, { 0 }}, +}; + +// Style loading function: cyber +static void GuiLoadStyleCyber(void) +{ + // Load style properties provided + // NOTE: Default properties are propagated + for (int i = 0; i < CYBER_STYLE_PROPS_COUNT; i++) + { + GuiSetStyle(cyberStyleProps[i].controlId, cyberStyleProps[i].propertyId, cyberStyleProps[i].propertyValue); + } + + // Custom font loading + // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function + int cyberFontDataSize = 0; + unsigned char *data = DecompressData(cyberFontData, CYBER_COMPRESSED_DATA_SIZE, &cyberFontDataSize); + Image imFont = { data, 256, 256, 1, 2 }; + + Font font = { 0 }; + font.baseSize = 14; + font.glyphCount = 95; + + // Load texture from image + font.texture = LoadTextureFromImage(imFont); + UnloadImage(imFont); // Uncompressed data can be unloaded from memory + + // Copy char recs data from global fontRecs + // NOTE: Required to avoid issues if trying to free font + font.recs = (Rectangle *)malloc(font.glyphCount*sizeof(Rectangle)); + memcpy(font.recs, cyberFontRecs, font.glyphCount*sizeof(Rectangle)); + + // Copy font char info data from global fontChars + // NOTE: Required to avoid issues if trying to free font + font.glyphs = (GlyphInfo *)malloc(font.glyphCount*sizeof(GlyphInfo)); + memcpy(font.glyphs, cyberFontChars, font.glyphCount*sizeof(GlyphInfo)); + + GuiSetFont(font); + + // Setup a white rectangle on the font to be used on shapes drawing, + // this way we make sure all gui can be drawn on a single pass because no texture change is required + // NOTE: Setting up this rectangle is a manual process (for the moment) + Rectangle whiteChar = { 89, 9, 2, 2 }; + SetShapesTexture(font.texture, whiteChar); +} diff --git a/examples/style_selector/styles/style_dark.h b/examples/style_selector/styles/style_dark.h new file mode 100644 index 0000000..17d6f13 --- /dev/null +++ b/examples/style_selector/styles/style_dark.h @@ -0,0 +1,347 @@ +////////////////////////////////////////////////////////////////////////////////// +// // +// StyleAsCode exporter v1.2 - Style data exported as a values array // +// // +// USAGE: On init call: GuiLoadStyleDark(); // +// // +// more info and bugs-report: github.com/raysan5/raygui // +// feedback and support: ray[at]raylibtech.com // +// // +// Copyright (c) 2020-2022 raylib technologies (@raylibtech) // +// // +////////////////////////////////////////////////////////////////////////////////// + +#define DARK_STYLE_PROPS_COUNT 22 + +// Custom style name: dark +static const GuiStyleProp darkStyleProps[DARK_STYLE_PROPS_COUNT] = { + { 0, 0, 0x878787ff }, // DEFAULT_BORDER_COLOR_NORMAL + { 0, 1, 0x2c2c2cff }, // DEFAULT_BASE_COLOR_NORMAL + { 0, 2, 0xc3c3c3ff }, // DEFAULT_TEXT_COLOR_NORMAL + { 0, 3, 0xe1e1e1ff }, // DEFAULT_BORDER_COLOR_FOCUSED + { 0, 4, 0x848484ff }, // DEFAULT_BASE_COLOR_FOCUSED + { 0, 5, 0x181818ff }, // DEFAULT_TEXT_COLOR_FOCUSED + { 0, 6, 0x000000ff }, // DEFAULT_BORDER_COLOR_PRESSED + { 0, 7, 0xefefefff }, // DEFAULT_BASE_COLOR_PRESSED + { 0, 8, 0x202020ff }, // DEFAULT_TEXT_COLOR_PRESSED + { 0, 9, 0x6a6a6aff }, // DEFAULT_BORDER_COLOR_DISABLED + { 0, 10, 0x818181ff }, // DEFAULT_BASE_COLOR_DISABLED + { 0, 11, 0x606060ff }, // DEFAULT_TEXT_COLOR_DISABLED + { 0, 16, 0x00000010 }, // DEFAULT_TEXT_SIZE + { 0, 17, 0x00000000 }, // DEFAULT_TEXT_SPACING + { 0, 18, 0x9d9d9dff }, // DEFAULT_LINE_COLOR + { 0, 19, 0x3c3c3cff }, // DEFAULT_BACKGROUND_COLOR + { 1, 5, 0xf7f7f7ff }, // LABEL_TEXT_COLOR_FOCUSED + { 1, 8, 0x898989ff }, // LABEL_TEXT_COLOR_PRESSED + { 4, 5, 0xb0b0b0ff }, // SLIDER_TEXT_COLOR_FOCUSED + { 5, 5, 0x848484ff }, // PROGRESSBAR_TEXT_COLOR_FOCUSED + { 9, 5, 0xf5f5f5ff }, // TEXTBOX_TEXT_COLOR_FOCUSED + { 10, 5, 0xf6f6f6ff }, // VALUEBOX_TEXT_COLOR_FOCUSED +}; + +// WARNING: This style uses a custom font: PixelOperator.ttf (size: 16, spacing: 0) + +#define DARK_COMPRESSED_DATA_SIZE 1031 + +// Font image pixels data compressed (DEFLATE) +// NOTE: Original pixel data simplified to GRAYSCALE +static unsigned char darkFontData[DARK_COMPRESSED_DATA_SIZE] = { 0xed, + 0xdd, 0xd1, 0x76, 0x9b, 0x30, 0x0c, 0x00, 0x50, 0xff, 0xff, 0x4f, 0x6b, 0x4f, 0x3b, 0xeb, 0xb6, 0x16, 0x90, 0x90, 0x8d, + 0x93, 0xdc, 0xdd, 0x97, 0x9d, 0x36, 0x25, 0xc4, 0xc2, 0xc6, 0x04, 0xc9, 0xc4, 0x00, 0x00, 0xf8, 0x47, 0x7c, 0xfb, 0x93, + 0xf8, 0xf1, 0x95, 0x71, 0x79, 0x3b, 0xc7, 0x3f, 0xff, 0xfd, 0xdb, 0x38, 0x78, 0xaf, 0x6b, 0xfb, 0x9a, 0x7d, 0xdf, 0x48, + 0xb4, 0xc4, 0xf7, 0xfb, 0x17, 0x97, 0xb7, 0xfb, 0xd3, 0xe7, 0xcb, 0xbf, 0xfe, 0x68, 0x4b, 0xe7, 0xed, 0xfc, 0x54, 0xfc, + 0xe3, 0x52, 0x24, 0xe2, 0x62, 0xdb, 0x5c, 0x6f, 0xc5, 0xa3, 0x77, 0x8e, 0xe6, 0x16, 0x3c, 0x3f, 0x3a, 0x7f, 0x8a, 0x74, + 0xbe, 0x3d, 0xe2, 0xa0, 0x1f, 0xcd, 0x8d, 0xff, 0xd7, 0x7f, 0xb9, 0x7e, 0x1c, 0xc9, 0x88, 0x76, 0xf4, 0xf4, 0xe3, 0xfd, + 0x8c, 0xd4, 0xf6, 0x67, 0xc4, 0x3f, 0x5a, 0xc7, 0xae, 0x68, 0xed, 0xff, 0xc7, 0xaf, 0xcc, 0xf6, 0xb7, 0x48, 0xf6, 0xdd, + 0x8e, 0x36, 0xa9, 0xf5, 0xff, 0xee, 0xe8, 0xff, 0xf9, 0xec, 0x7d, 0xe3, 0x50, 0x7e, 0x5c, 0x5e, 0x19, 0xff, 0x4a, 0xec, + 0xae, 0x8e, 0x5c, 0x95, 0x3e, 0x31, 0x36, 0x88, 0x7f, 0xf6, 0x38, 0x3c, 0x6e, 0xab, 0x91, 0x3e, 0x33, 0x3c, 0x1f, 0xff, + 0xf3, 0xf1, 0x3f, 0x26, 0xc4, 0xff, 0xf9, 0x79, 0xf4, 0x9f, 0x88, 0x45, 0xb2, 0x2f, 0xe7, 0xce, 0x31, 0x91, 0xe8, 0x45, + 0xf5, 0xd6, 0xab, 0x9d, 0xff, 0xbf, 0x46, 0x3f, 0xde, 0x38, 0xfe, 0x91, 0x9c, 0xdf, 0x66, 0xe7, 0x38, 0x3b, 0xb4, 0xc2, + 0xf9, 0xfc, 0xff, 0x78, 0xef, 0xe2, 0xe6, 0xd8, 0x15, 0x2f, 0xd6, 0xfb, 0x3b, 0xe3, 0x1f, 0xd3, 0xe2, 0x1f, 0x4b, 0xe2, + 0x3f, 0x0e, 0xaf, 0x6a, 0xe3, 0xf6, 0x0c, 0x7b, 0xcf, 0xf8, 0x67, 0xaf, 0xff, 0x6b, 0x23, 0xec, 0xf3, 0x2d, 0x11, 0x37, + 0xaf, 0x41, 0x78, 0xfd, 0x6f, 0x11, 0x43, 0xf4, 0x7d, 0x8f, 0x8c, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xef, + 0xd0, 0x45, 0x53, 0xb6, 0x6c, 0x25, 0x53, 0xfd, 0x5e, 0x9e, 0x7f, 0x2e, 0x6b, 0xf7, 0x6c, 0xef, 0xf2, 0xfb, 0xde, 0xf9, + 0x37, 0x47, 0x59, 0xc8, 0xb5, 0x1c, 0xeb, 0x2b, 0x95, 0x16, 0x9d, 0xb9, 0x25, 0xf5, 0x4c, 0xf5, 0xee, 0x3b, 0x49, 0x51, + 0xae, 0x2b, 0xe8, 0xf9, 0x54, 0x77, 0x7e, 0xd3, 0x13, 0xa5, 0xae, 0xf8, 0x8f, 0x2d, 0xe2, 0x9f, 0xcf, 0x13, 0xca, 0x1f, + 0xb7, 0x91, 0xce, 0x47, 0x8b, 0xd6, 0x9c, 0xad, 0x68, 0x8d, 0x52, 0x24, 0x2a, 0xad, 0x7a, 0x72, 0x4e, 0x77, 0xef, 0xff, + 0xd7, 0x32, 0xb2, 0x3f, 0x2b, 0xfe, 0xf9, 0x73, 0xeb, 0xdd, 0x33, 0xec, 0x8a, 0x5c, 0x82, 0x6a, 0xa5, 0x4c, 0x3e, 0xfe, + 0xf9, 0xde, 0x73, 0xb6, 0xb5, 0x51, 0xca, 0xa3, 0xbe, 0x9b, 0x01, 0x9e, 0xad, 0x52, 0x5b, 0x9d, 0x8f, 0x3a, 0x3f, 0x23, + 0x37, 0x2e, 0xd4, 0xb8, 0xed, 0xdb, 0xff, 0x63, 0x42, 0xff, 0x5f, 0x93, 0x8f, 0x1c, 0x4b, 0x8f, 0x92, 0xb3, 0x5e, 0xd4, + 0x75, 0x56, 0x7b, 0x95, 0xf8, 0xaf, 0xfe, 0x6c, 0xb1, 0x65, 0xd6, 0xd8, 0xbc, 0x36, 0xda, 0x7d, 0xfe, 0xdf, 0x75, 0xc5, + 0x7e, 0xbf, 0x52, 0x7d, 0x4d, 0xf4, 0xa3, 0xf4, 0x3d, 0x48, 0x65, 0x8e, 0xd4, 0x7b, 0xfd, 0x9f, 0x9f, 0xc1, 0x87, 0x0c, + 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8f, 0xca, 0xff, 0x5f, 0x93, 0x11, 0x34, 0x4a, 0x2b, 0xa1, 0xcf, 0xcf, + 0xb9, 0xbf, 0xb3, 0x26, 0x78, 0x3c, 0x9c, 0x61, 0x7e, 0x5c, 0x2d, 0xf0, 0xda, 0xf1, 0x7f, 0xfe, 0x37, 0xa3, 0xb0, 0x7e, + 0xe7, 0xca, 0xf8, 0x8f, 0x42, 0x34, 0x7a, 0xb2, 0xe4, 0x73, 0x5b, 0x89, 0xff, 0xfe, 0xb7, 0x63, 0xfc, 0xc7, 0x92, 0xf8, + 0xc7, 0xcb, 0xc7, 0xbf, 0x52, 0x6b, 0x71, 0x9c, 0x59, 0x2b, 0xfe, 0xe7, 0x6d, 0x1b, 0xa5, 0x2a, 0x8c, 0xfe, 0xf8, 0x47, + 0x71, 0x2b, 0x71, 0x72, 0x44, 0xf5, 0xe6, 0xdc, 0xf7, 0xe4, 0xe9, 0xad, 0x8d, 0x7f, 0xf7, 0x73, 0x3f, 0x76, 0xea, 0xff, + 0xd7, 0xea, 0xae, 0x66, 0x67, 0x1f, 0xdf, 0xe9, 0xe9, 0x4f, 0xf6, 0xff, 0xee, 0x67, 0x6b, 0xad, 0x3e, 0xff, 0xcf, 0x9a, + 0xff, 0x8d, 0xf4, 0x68, 0x12, 0xdb, 0xc6, 0xff, 0xce, 0x2c, 0xb4, 0x3b, 0xfe, 0xf1, 0x22, 0xf3, 0xff, 0x51, 0x38, 0x3e, + 0x67, 0xcf, 0xff, 0xaf, 0x3d, 0xef, 0x68, 0xef, 0xf8, 0x8f, 0x1b, 0xe7, 0xd7, 0x58, 0x72, 0xfd, 0x3f, 0x4e, 0xae, 0x36, + 0x7a, 0xde, 0x67, 0xb4, 0xad, 0xdf, 0xff, 0xf7, 0xbe, 0xe5, 0x6b, 0xf5, 0xb3, 0x2b, 0x16, 0x58, 0x75, 0x1d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xfe, 0xff, 0xd9, 0x1d, 0xe4, 0xfc, 0xbd, 0xe8, 0xd1, 0x78, 0x6f, 0x3f, 0x9a, 0x32, 0x19, + 0xc6, 0xc1, 0x9d, 0xf8, 0xec, 0x0a, 0x7c, 0x3d, 0x99, 0xb9, 0x47, 0x7b, 0xdf, 0x57, 0xd3, 0x30, 0x6e, 0xef, 0x51, 0x7e, + 0x3d, 0xc1, 0xe7, 0x57, 0x96, 0x8d, 0xc6, 0xcc, 0xae, 0x75, 0xd5, 0x36, 0x33, 0x73, 0xc6, 0xbb, 0xeb, 0x3f, 0xba, 0x5a, + 0x23, 0x6e, 0x8c, 0x0c, 0xb3, 0xe3, 0x5f, 0x5f, 0xe9, 0xbb, 0x7a, 0x7c, 0xad, 0x88, 0x7f, 0x4f, 0x16, 0x69, 0x3e, 0xf2, + 0x6b, 0xd6, 0xd3, 0x3e, 0x7b, 0x9e, 0xca, 0xba, 0xdc, 0xc7, 0x4a, 0x06, 0xed, 0xbb, 0xc6, 0xff, 0xf9, 0xf5, 0xb4, 0x67, + 0x55, 0x76, 0xf5, 0x66, 0xd0, 0x8b, 0xff, 0xbc, 0xda, 0xbe, 0x58, 0x38, 0x32, 0x55, 0x2b, 0x68, 0xe6, 0xd5, 0x0c, 0x76, + 0x57, 0x91, 0xcc, 0x1f, 0xff, 0x6b, 0xcf, 0xb9, 0xaa, 0x3c, 0x1d, 0x68, 0xb7, 0xfe, 0xdf, 0x99, 0x3b, 0xbd, 0x4b, 0xfc, + 0xeb, 0xb3, 0xfc, 0xd1, 0x34, 0x2b, 0x7d, 0x6e, 0xfc, 0x5f, 0xfd, 0xc4, 0x8b, 0xfa, 0x3c, 0xfc, 0x89, 0x3d, 0xa9, 0xbc, + 0x73, 0xe5, 0xaf, 0xb2, 0x99, 0xfd, 0x9d, 0xf1, 0xdf, 0xef, 0x08, 0xe0, 0xe9, 0x51, 0x8c, 0xf7, 0x3a, 0x02, 0x54, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x36, 0xbb, 0xe3, 0x7e, 0x9c, 0xa5, 0x13, 0x2d, 0x19, 0x37, 0xbb, 0xaf, 0xa5, + 0x3f, 0x4e, 0xd6, 0xa7, 0xbd, 0x96, 0xdb, 0x15, 0xdb, 0xde, 0x0f, 0xae, 0xb6, 0x7f, 0x57, 0xfe, 0xf4, 0xee, 0x6b, 0xe9, + 0xdf, 0x5f, 0x93, 0x33, 0x4e, 0x8e, 0x8e, 0x57, 0x8c, 0x7f, 0x25, 0x67, 0xf4, 0xf9, 0xb5, 0x94, 0xa3, 0x94, 0xf1, 0x1a, + 0x9b, 0xe7, 0xcc, 0xed, 0x94, 0x8b, 0xbd, 0x72, 0xfc, 0x8f, 0x72, 0x74, 0xa2, 0x21, 0x0f, 0x5a, 0xfc, 0x47, 0xba, 0x16, + 0x6f, 0xe7, 0xfe, 0xff, 0xc4, 0xda, 0xeb, 0xef, 0x17, 0xff, 0xce, 0x8a, 0xab, 0x19, 0x6b, 0x69, 0xe7, 0xab, 0x3b, 0xdf, + 0xbf, 0xff, 0x57, 0xe7, 0xff, 0x3d, 0xe3, 0xff, 0xea, 0xb5, 0xb4, 0xf3, 0xf3, 0xff, 0xcf, 0x18, 0xff, 0xef, 0xbc, 0x22, + 0x73, 0xac, 0xbd, 0x5e, 0x5e, 0xae, 0xf8, 0x7f, 0x7a, 0x5e, 0xee, 0xdd, 0xeb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x46, 0xbf, 0x00 }; + +// Font characters rectangles data +static const Rectangle darkFontRecs[95] = { + { 4, 4, 4 , 16 }, + { 16, 4, 1 , 9 }, + { 25, 4, 3 , 3 }, + { 36, 4, 6 , 9 }, + { 50, 4, 5 , 13 }, + { 63, 4, 7 , 9 }, + { 78, 4, 5 , 9 }, + { 91, 4, 1 , 3 }, + { 100, 4, 3 , 9 }, + { 111, 4, 3 , 9 }, + { 122, 4, 5 , 5 }, + { 135, 4, 5 , 5 }, + { 148, 4, 2 , 3 }, + { 158, 4, 4 , 1 }, + { 170, 4, 1 , 1 }, + { 179, 4, 3 , 9 }, + { 190, 4, 5 , 9 }, + { 203, 4, 3 , 9 }, + { 214, 4, 5 , 9 }, + { 227, 4, 5 , 9 }, + { 240, 4, 5 , 9 }, + { 4, 28, 5 , 9 }, + { 17, 28, 5 , 9 }, + { 30, 28, 5 , 9 }, + { 43, 28, 5 , 9 }, + { 56, 28, 5 , 9 }, + { 69, 28, 1 , 7 }, + { 78, 28, 2 , 9 }, + { 88, 28, 3 , 5 }, + { 99, 28, 4 , 3 }, + { 111, 28, 3 , 5 }, + { 122, 28, 5 , 9 }, + { 135, 28, 7 , 9 }, + { 150, 28, 5 , 9 }, + { 163, 28, 5 , 9 }, + { 176, 28, 5 , 9 }, + { 189, 28, 5 , 9 }, + { 202, 28, 5 , 9 }, + { 215, 28, 5 , 9 }, + { 228, 28, 5 , 9 }, + { 241, 28, 5 , 9 }, + { 4, 52, 1 , 9 }, + { 13, 52, 5 , 9 }, + { 26, 52, 5 , 9 }, + { 39, 52, 5 , 9 }, + { 52, 52, 7 , 9 }, + { 67, 52, 5 , 9 }, + { 80, 52, 5 , 9 }, + { 93, 52, 5 , 9 }, + { 106, 52, 5 , 9 }, + { 119, 52, 5 , 9 }, + { 132, 52, 5 , 9 }, + { 145, 52, 5 , 9 }, + { 158, 52, 5 , 9 }, + { 171, 52, 5 , 9 }, + { 184, 52, 7 , 9 }, + { 199, 52, 5 , 9 }, + { 212, 52, 5 , 9 }, + { 225, 52, 5 , 9 }, + { 238, 52, 3 , 9 }, + { 4, 76, 3 , 9 }, + { 15, 76, 3 , 9 }, + { 26, 76, 5 , 3 }, + { 39, 76, 5 , 1 }, + { 52, 76, 2 , 2 }, + { 62, 76, 5 , 7 }, + { 75, 76, 5 , 9 }, + { 88, 76, 5 , 7 }, + { 101, 76, 5 , 9 }, + { 114, 76, 5 , 7 }, + { 127, 76, 4 , 9 }, + { 139, 76, 5 , 9 }, + { 152, 76, 5 , 9 }, + { 165, 76, 1 , 9 }, + { 174, 76, 5 , 11 }, + { 187, 76, 5 , 9 }, + { 200, 76, 2 , 9 }, + { 210, 76, 7 , 7 }, + { 225, 76, 5 , 7 }, + { 238, 76, 5 , 7 }, + { 4, 100, 5 , 9 }, + { 17, 100, 5 , 9 }, + { 30, 100, 5 , 7 }, + { 43, 100, 5 , 7 }, + { 56, 100, 4 , 8 }, + { 68, 100, 5 , 7 }, + { 81, 100, 5 , 7 }, + { 94, 100, 7 , 7 }, + { 109, 100, 5 , 7 }, + { 122, 100, 5 , 9 }, + { 135, 100, 5 , 7 }, + { 148, 100, 4 , 9 }, + { 160, 100, 1 , 9 }, + { 169, 100, 4 , 9 }, + { 181, 100, 6 , 2 }, +}; + +// Font glyphs info data +// NOTE: No glyphs.image data provided +static const GlyphInfo darkFontChars[95] = { + { 32, 0, 13, 4, { 0 }}, + { 33, 2, 4, 5, { 0 }}, + { 34, 2, 4, 7, { 0 }}, + { 35, 1, 4, 8, { 0 }}, + { 36, 1, 2, 7, { 0 }}, + { 37, 1, 4, 9, { 0 }}, + { 38, 1, 4, 7, { 0 }}, + { 39, 2, 4, 5, { 0 }}, + { 40, 3, 4, 7, { 0 }}, + { 41, 1, 4, 7, { 0 }}, + { 42, 1, 4, 7, { 0 }}, + { 43, 1, 6, 7, { 0 }}, + { 44, 1, 12, 5, { 0 }}, + { 45, 1, 8, 6, { 0 }}, + { 46, 2, 12, 5, { 0 }}, + { 47, 1, 4, 5, { 0 }}, + { 48, 1, 4, 7, { 0 }}, + { 49, 2, 4, 7, { 0 }}, + { 50, 1, 4, 7, { 0 }}, + { 51, 1, 4, 7, { 0 }}, + { 52, 1, 4, 7, { 0 }}, + { 53, 1, 4, 7, { 0 }}, + { 54, 1, 4, 7, { 0 }}, + { 55, 1, 4, 7, { 0 }}, + { 56, 1, 4, 7, { 0 }}, + { 57, 1, 4, 7, { 0 }}, + { 58, 2, 6, 5, { 0 }}, + { 59, 1, 6, 5, { 0 }}, + { 60, 1, 6, 5, { 0 }}, + { 61, 1, 7, 6, { 0 }}, + { 62, 1, 6, 5, { 0 }}, + { 63, 1, 4, 7, { 0 }}, + { 64, 1, 4, 9, { 0 }}, + { 65, 1, 4, 7, { 0 }}, + { 66, 1, 4, 7, { 0 }}, + { 67, 1, 4, 7, { 0 }}, + { 68, 1, 4, 7, { 0 }}, + { 69, 1, 4, 7, { 0 }}, + { 70, 1, 4, 7, { 0 }}, + { 71, 1, 4, 7, { 0 }}, + { 72, 1, 4, 7, { 0 }}, + { 73, 2, 4, 5, { 0 }}, + { 74, 1, 4, 7, { 0 }}, + { 75, 1, 4, 7, { 0 }}, + { 76, 1, 4, 7, { 0 }}, + { 77, 1, 4, 9, { 0 }}, + { 78, 1, 4, 7, { 0 }}, + { 79, 1, 4, 7, { 0 }}, + { 80, 1, 4, 7, { 0 }}, + { 81, 1, 4, 7, { 0 }}, + { 82, 1, 4, 7, { 0 }}, + { 83, 1, 4, 7, { 0 }}, + { 84, 1, 4, 7, { 0 }}, + { 85, 1, 4, 7, { 0 }}, + { 86, 1, 4, 7, { 0 }}, + { 87, 1, 4, 9, { 0 }}, + { 88, 1, 4, 7, { 0 }}, + { 89, 1, 4, 7, { 0 }}, + { 90, 1, 4, 7, { 0 }}, + { 91, 3, 4, 7, { 0 }}, + { 92, 1, 4, 5, { 0 }}, + { 93, 1, 4, 7, { 0 }}, + { 94, 1, 4, 7, { 0 }}, + { 95, 0, 14, 5, { 0 }}, + { 96, 1, 4, 5, { 0 }}, + { 97, 1, 6, 7, { 0 }}, + { 98, 1, 4, 7, { 0 }}, + { 99, 1, 6, 7, { 0 }}, + { 100, 1, 4, 7, { 0 }}, + { 101, 1, 6, 7, { 0 }}, + { 102, 1, 4, 6, { 0 }}, + { 103, 1, 6, 7, { 0 }}, + { 104, 1, 4, 7, { 0 }}, + { 105, 2, 4, 5, { 0 }}, + { 106, 1, 4, 7, { 0 }}, + { 107, 1, 4, 7, { 0 }}, + { 108, 2, 4, 5, { 0 }}, + { 109, 1, 6, 9, { 0 }}, + { 110, 1, 6, 7, { 0 }}, + { 111, 1, 6, 7, { 0 }}, + { 112, 1, 6, 7, { 0 }}, + { 113, 1, 6, 7, { 0 }}, + { 114, 1, 6, 7, { 0 }}, + { 115, 1, 6, 7, { 0 }}, + { 116, 1, 5, 6, { 0 }}, + { 117, 1, 6, 7, { 0 }}, + { 118, 1, 6, 7, { 0 }}, + { 119, 1, 6, 9, { 0 }}, + { 120, 1, 6, 7, { 0 }}, + { 121, 1, 6, 7, { 0 }}, + { 122, 1, 6, 7, { 0 }}, + { 123, 2, 4, 7, { 0 }}, + { 124, 2, 4, 5, { 0 }}, + { 125, 1, 4, 7, { 0 }}, + { 126, 1, 4, 8, { 0 }}, +}; + +// Style loading function: dark +static void GuiLoadStyleDark(void) +{ + // Load style properties provided + // NOTE: Default properties are propagated + for (int i = 0; i < DARK_STYLE_PROPS_COUNT; i++) + { + GuiSetStyle(darkStyleProps[i].controlId, darkStyleProps[i].propertyId, darkStyleProps[i].propertyValue); + } + + // Custom font loading + // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function + int darkFontDataSize = 0; + unsigned char *data = DecompressData(darkFontData, DARK_COMPRESSED_DATA_SIZE, &darkFontDataSize); + Image imFont = { data, 256, 256, 1, 2 }; + + Font font = { 0 }; + font.baseSize = 16; + font.glyphCount = 95; + + // Load texture from image + font.texture = LoadTextureFromImage(imFont); + UnloadImage(imFont); // Uncompressed data can be unloaded from memory + + // Copy char recs data from global fontRecs + // NOTE: Required to avoid issues if trying to free font + font.recs = (Rectangle *)malloc(font.glyphCount*sizeof(Rectangle)); + memcpy(font.recs, darkFontRecs, font.glyphCount*sizeof(Rectangle)); + + // Copy font char info data from global fontChars + // NOTE: Required to avoid issues if trying to free font + font.glyphs = (GlyphInfo *)malloc(font.glyphCount*sizeof(GlyphInfo)); + memcpy(font.glyphs, darkFontChars, font.glyphCount*sizeof(GlyphInfo)); + + GuiSetFont(font); + + // TODO: Setup a white rectangle on the font to be used on shapes drawing, + // this way we make sure all gui can be drawn on a single pass because no texture change is required + // NOTE: Setting up this rectangle is a manual process (for the moment) + Rectangle whiteChar = { 124, 6, 1, 1 }; + SetShapesTexture(font.texture, whiteChar); + + //----------------------------------------------------------------- + + // TODO: Custom user style setup: Set specific properties here (if required) + // i.e. Controls specific BORDER_WIDTH, TEXT_PADDING, TEXT_ALIGNMENT +} diff --git a/examples/style_selector/styles/style_jungle.h b/examples/style_selector/styles/style_jungle.h new file mode 100644 index 0000000..1ff60d9 --- /dev/null +++ b/examples/style_selector/styles/style_jungle.h @@ -0,0 +1,337 @@ +////////////////////////////////////////////////////////////////////////////////// +// // +// StyleAsCode exporter v1.2 - Style data exported as a values array // +// // +// USAGE: On init call: GuiLoadStyleJungle(); // +// // +// more info and bugs-report: github.com/raysan5/raygui // +// feedback and support: ray[at]raylibtech.com // +// // +// Copyright (c) 2020-2022 raylib technologies (@raylibtech) // +// // +////////////////////////////////////////////////////////////////////////////////// + +#define JUNGLE_STYLE_PROPS_COUNT 16 + +// Custom style name: jungle +static const GuiStyleProp jungleStyleProps[JUNGLE_STYLE_PROPS_COUNT] = { + { 0, 0, 0x60827dff }, // DEFAULT_BORDER_COLOR_NORMAL + { 0, 1, 0x2c3334ff }, // DEFAULT_BASE_COLOR_NORMAL + { 0, 2, 0x82a29fff }, // DEFAULT_TEXT_COLOR_NORMAL + { 0, 3, 0x5f9aa8ff }, // DEFAULT_BORDER_COLOR_FOCUSED + { 0, 4, 0x334e57ff }, // DEFAULT_BASE_COLOR_FOCUSED + { 0, 5, 0x6aa9b8ff }, // DEFAULT_TEXT_COLOR_FOCUSED + { 0, 6, 0xa9cb8dff }, // DEFAULT_BORDER_COLOR_PRESSED + { 0, 7, 0x3b6357ff }, // DEFAULT_BASE_COLOR_PRESSED + { 0, 8, 0x97af81ff }, // DEFAULT_TEXT_COLOR_PRESSED + { 0, 9, 0x5b6462ff }, // DEFAULT_BORDER_COLOR_DISABLED + { 0, 10, 0x2c3334ff }, // DEFAULT_BASE_COLOR_DISABLED + { 0, 11, 0x666b69ff }, // DEFAULT_TEXT_COLOR_DISABLED + { 0, 16, 0x0000000c }, // DEFAULT_TEXT_SIZE + { 0, 17, 0x00000000 }, // DEFAULT_TEXT_SPACING + { 0, 18, 0x638465ff }, // DEFAULT_LINE_COLOR + { 0, 19, 0x2b3a3aff }, // DEFAULT_BACKGROUND_COLOR +}; + +// WARNING: This style uses a custom font: (size: 12, spacing: 0) + +#define JUNGLE_COMPRESSED_DATA_SIZE 1059 + +// Font image pixels data compressed (DEFLATE) +// NOTE: Original pixel data simplified to GRAYSCALE +static unsigned char jungleFontData[JUNGLE_COMPRESSED_DATA_SIZE] = { 0xed, + 0xdd, 0xe1, 0x6e, 0xdb, 0x20, 0x14, 0x06, 0x50, 0x84, 0xfa, 0xfe, 0xaf, 0xcc, 0xd4, 0x6d, 0xdd, 0xb4, 0x35, 0xc6, 0xdc, + 0x0b, 0xd8, 0x69, 0x7a, 0x7a, 0xd4, 0x3f, 0x71, 0xeb, 0xd8, 0x5c, 0x83, 0x53, 0xf1, 0x15, 0xb7, 0x02, 0x00, 0xf0, 0xc9, + 0xfb, 0xd7, 0xe3, 0xd7, 0x1e, 0x6d, 0x29, 0xbf, 0xb7, 0x8c, 0xef, 0xeb, 0xe3, 0xf5, 0x5f, 0x5b, 0xea, 0xe1, 0x4f, 0x3c, + 0xde, 0x63, 0x3d, 0x38, 0x86, 0xa3, 0xa3, 0x3e, 0x3e, 0xb2, 0x12, 0xda, 0x72, 0xbc, 0xff, 0xe3, 0xf6, 0x2a, 0x81, 0x73, + 0xf8, 0xf7, 0xab, 0x04, 0xce, 0xa5, 0xff, 0x7b, 0xbb, 0xeb, 0xdf, 0x6f, 0x83, 0xe3, 0x6d, 0xbf, 0xbe, 0xdf, 0x5b, 0xa2, + 0x06, 0xf6, 0x79, 0xfc, 0xf3, 0x25, 0x74, 0x05, 0xc6, 0xaf, 0x8c, 0x58, 0xeb, 0xf6, 0x7e, 0xfa, 0xec, 0x1c, 0x5a, 0xf0, + 0x08, 0x3e, 0x5e, 0xdf, 0x59, 0xff, 0xf2, 0xe7, 0x3d, 0xc6, 0xfb, 0xff, 0x59, 0x55, 0x5a, 0x7b, 0x7b, 0xd8, 0x12, 0xa5, + 0x5b, 0x9b, 0x9a, 0x78, 0xa7, 0x15, 0x57, 0x73, 0x59, 0xd4, 0xba, 0xb5, 0x7b, 0x0e, 0x2d, 0x51, 0xff, 0xdc, 0x15, 0xba, + 0x6a, 0x3f, 0xb9, 0xfe, 0xff, 0xee, 0xed, 0xe7, 0x15, 0xd0, 0xdf, 0xeb, 0xfc, 0x11, 0xaf, 0xea, 0xff, 0x65, 0x6b, 0xf5, + 0x67, 0xea, 0x7f, 0xc5, 0xf8, 0xdf, 0xff, 0xf9, 0x7e, 0x9b, 0x3d, 0xde, 0x5f, 0xfd, 0xdd, 0xff, 0xe3, 0x77, 0xcf, 0x15, + 0xf5, 0x8f, 0xdf, 0xff, 0xf7, 0x56, 0x7f, 0xc5, 0xf8, 0xff, 0x8c, 0x9f, 0x23, 0xcf, 0xee, 0xe3, 0x8f, 0xaf, 0x9d, 0xb6, + 0xbd, 0xff, 0xdf, 0xa1, 0x57, 0xfd, 0xb3, 0xcf, 0x7f, 0x6d, 0x62, 0x9c, 0xdd, 0xdd, 0xff, 0x33, 0xfb, 0xfa, 0x68, 0x89, + 0x96, 0xe8, 0x9f, 0x5f, 0xb5, 0xfe, 0xbd, 0xea, 0xb3, 0x62, 0xac, 0x89, 0xdc, 0xe5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5e, 0x73, 0xc6, 0xa4, 0x3f, 0xff, 0xbe, 0x72, 0x26, 0x72, 0xd7, 0xb6, 0xf1, 0xb4, 0x41, 0x24, 0xb9, 0x52, 0x13, 0x2d, + 0x76, 0x57, 0xbb, 0xec, 0x4a, 0xfb, 0x95, 0x70, 0x36, 0x63, 0xe4, 0x68, 0xb2, 0xef, 0x37, 0x53, 0xff, 0x1a, 0x9c, 0x7b, + 0xed, 0x27, 0xf4, 0x8e, 0xf2, 0x8c, 0xc7, 0x33, 0xd7, 0xb3, 0xe7, 0x17, 0xdd, 0x16, 0x1b, 0x01, 0xca, 0x25, 0xfd, 0x7f, + 0x2c, 0xc3, 0xb4, 0x27, 0xdd, 0xf8, 0x38, 0x67, 0xd6, 0x3b, 0xd6, 0xb7, 0x70, 0xa2, 0xf0, 0xef, 0x6c, 0xf3, 0xde, 0xeb, + 0x7b, 0x75, 0xea, 0x33, 0x9b, 0x28, 0xc9, 0x5c, 0x93, 0x99, 0x04, 0xeb, 0x8a, 0xf1, 0x7f, 0x4d, 0xff, 0xef, 0x5d, 0xa7, + 0xed, 0xbf, 0xef, 0x35, 0xe3, 0xf8, 0x5d, 0xf5, 0xdf, 0x31, 0x56, 0x97, 0x81, 0x51, 0x21, 0x7b, 0x2c, 0xb9, 0xfb, 0x7f, + 0x26, 0xa9, 0xd3, 0x4b, 0x2b, 0xe5, 0x3f, 0x4f, 0xdd, 0xd1, 0xff, 0x67, 0xfa, 0x78, 0x6e, 0xfc, 0xef, 0xd7, 0x7f, 0x5d, + 0xba, 0xad, 0xdd, 0xf2, 0x69, 0x7a, 0xa4, 0x8f, 0x3d, 0xd7, 0xfd, 0x9f, 0x95, 0x79, 0xc6, 0xfb, 0xfe, 0x9e, 0x52, 0x15, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xe6, 0xf1, 0xae, 0xca, 0x94, 0xb4, 0xc1, 0x55, 0x7c, 0x8e, 0xf3, 0x5a, 0x57, + 0xa5, 0xf5, 0xae, 0x6f, 0xef, 0xd5, 0xb9, 0x8f, 0x15, 0x73, 0xd2, 0x99, 0x15, 0xcc, 0xe6, 0xb3, 0x88, 0xed, 0x29, 0x12, + 0x79, 0x3b, 0xda, 0xed, 0xce, 0xfa, 0x67, 0x8e, 0x27, 0x5f, 0xff, 0x96, 0x5c, 0x61, 0xf0, 0x6c, 0x65, 0x98, 0xe7, 0xaa, + 0x7f, 0x26, 0x75, 0x30, 0x53, 0xff, 0xf3, 0xb1, 0xaa, 0x74, 0xea, 0x11, 0x1f, 0xe3, 0xb3, 0xf5, 0x6f, 0xc9, 0x75, 0x1f, + 0xf7, 0xdc, 0xc5, 0xf6, 0xd4, 0x3f, 0xd3, 0x6e, 0xaf, 0x32, 0xfe, 0x9f, 0xef, 0xb3, 0x26, 0xc7, 0xff, 0x76, 0x3a, 0xaa, + 0xb4, 0xe5, 0x69, 0xd4, 0x78, 0x9f, 0x1a, 0x6d, 0x9f, 0xef, 0x5b, 0xff, 0xb2, 0xa5, 0xfe, 0x7b, 0xde, 0xf1, 0xeb, 0xdc, + 0xff, 0x33, 0xab, 0x57, 0xdf, 0x91, 0x73, 0x9b, 0xcb, 0x86, 0x9f, 0x6d, 0xbd, 0xa2, 0x65, 0xf6, 0x8d, 0xff, 0x52, 0x80, + 0x5f, 0x27, 0x25, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc5, 0x1c, 0x45, 0x7e, 0xee, 0x6c, 0xc7, 0x0c, 0xe0, 0xe7, + 0xd7, 0xeb, 0xc0, 0x1c, 0xe6, 0xff, 0xaf, 0xd7, 0x83, 0xc4, 0x48, 0x0b, 0xae, 0xf9, 0x97, 0x7b, 0x1e, 0xef, 0xe8, 0x3a, + 0x68, 0xf9, 0x04, 0xe1, 0x8a, 0x79, 0xc0, 0xeb, 0xeb, 0x5f, 0x86, 0xe6, 0x63, 0x3f, 0x57, 0xb2, 0x26, 0x32, 0x43, 0x35, + 0xb8, 0xe2, 0x53, 0x6f, 0x85, 0xa8, 0x78, 0x9a, 0xe9, 0xbc, 0x15, 0x32, 0x6b, 0xdd, 0x9d, 0xed, 0x2d, 0xf7, 0x84, 0xe2, + 0x5e, 0x3a, 0xe6, 0x2c, 0xcb, 0x12, 0x3f, 0xf3, 0x1a, 0x3e, 0xb7, 0x3a, 0x30, 0x06, 0xec, 0xcf, 0x48, 0x97, 0x70, 0x7f, + 0x9c, 0xcb, 0xdd, 0xed, 0xaf, 0x7f, 0x19, 0xc8, 0xf8, 0xad, 0x4e, 0xa4, 0xb4, 0x93, 0xa7, 0xdf, 0x66, 0xae, 0x80, 0xdd, + 0xf5, 0x3f, 0x3b, 0xd7, 0x7c, 0x4a, 0xa8, 0x2c, 0xbd, 0x6e, 0x56, 0xd7, 0x7f, 0xe4, 0x3a, 0x5d, 0x7d, 0x05, 0x67, 0xae, + 0x80, 0x6b, 0xfa, 0x7f, 0x0b, 0xd7, 0xbf, 0x3f, 0x36, 0xac, 0x6f, 0xbd, 0x4c, 0x0a, 0x28, 0x37, 0xa2, 0xcc, 0xa6, 0xd5, + 0x32, 0x55, 0xac, 0xa9, 0x91, 0xe3, 0x8a, 0x4f, 0xd0, 0xb9, 0x67, 0x55, 0xaf, 0x4e, 0x6c, 0xe6, 0x5a, 0xe2, 0xfa, 0xfa, + 0xb7, 0xf4, 0x13, 0xbf, 0xeb, 0xd3, 0x3d, 0xfd, 0x3a, 0xd7, 0xeb, 0xf2, 0x89, 0xbd, 0xf5, 0xfd, 0xff, 0xf9, 0xfe, 0x1b, + 0xed, 0x8a, 0xdf, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x9e, 0x6b, 0x14, 0xc4, 0x57, 0xaa, 0x39, 0xff, 0x8d, 0xec, + 0xb3, 0xb3, 0xae, 0x7c, 0x76, 0xee, 0xae, 0xe7, 0xdb, 0xe5, 0xd7, 0x05, 0x6b, 0x5b, 0x9e, 0x00, 0xb7, 0x7e, 0xde, 0x6c, + 0x6e, 0x15, 0xb3, 0xb3, 0x16, 0xca, 0xae, 0xb8, 0x15, 0xcd, 0x60, 0xcc, 0xe4, 0x7a, 0xb2, 0x99, 0x8f, 0xf5, 0x39, 0xbc, + 0x35, 0xd9, 0xb6, 0x5c, 0xff, 0xcf, 0xe5, 0x42, 0x9e, 0xad, 0xfe, 0xe5, 0xa2, 0x7c, 0xde, 0x4c, 0xfd, 0x67, 0x9f, 0xfe, + 0x9c, 0x4f, 0x64, 0xc5, 0x5b, 0xf5, 0x15, 0xea, 0x3f, 0x96, 0xde, 0xcd, 0xe4, 0x08, 0x57, 0xe7, 0xf0, 0xee, 0xaa, 0x7f, + 0x4b, 0x3d, 0x3b, 0x77, 0xa6, 0xfe, 0x73, 0x79, 0xf9, 0xeb, 0xfa, 0x7f, 0xfe, 0x1d, 0xcb, 0x96, 0x27, 0xa3, 0xcf, 0xf6, + 0xd6, 0xd8, 0x4a, 0x8d, 0x77, 0x24, 0xb5, 0xd6, 0xe7, 0xe5, 0x76, 0x25, 0xbb, 0xee, 0x4d, 0x2f, 0xae, 0xca, 0xaf, 0xce, + 0xae, 0xfe, 0x7d, 0x47, 0xfd, 0x65, 0xc7, 0x5e, 0xfb, 0x2a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6e, 0xf3, 0x38, + 0xeb, 0x9e, 0x47, 0x15, 0x5d, 0xd5, 0xad, 0x85, 0x57, 0x68, 0x63, 0xd7, 0x0c, 0x70, 0xe9, 0x54, 0x69, 0x2e, 0xfd, 0x72, + 0xf4, 0x6a, 0xed, 0x26, 0x45, 0xb8, 0xbb, 0xfe, 0x35, 0xbc, 0x56, 0x5b, 0x7c, 0x45, 0x33, 0x9e, 0xb5, 0xfe, 0xf9, 0x14, + 0x97, 0x2b, 0xe0, 0x15, 0x92, 0x1c, 0x99, 0x9c, 0x9b, 0xfe, 0xff, 0x9a, 0xff, 0x07, 0xa2, 0xfe, 0x92, 0x5c, 0xea, 0xcf, + 0xca, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x29, 0x3f, 0x00 }; + +// Font characters rectangles data +static const Rectangle jungleFontRecs[95] = { + { 4, 4, 5 , 12 }, + { 17, 4, 2 , 7 }, + { 27, 4, 5 , 3 }, + { 40, 4, 5 , 5 }, + { 53, 4, 6 , 7 }, + { 67, 4, 7 , 7 }, + { 82, 4, 5 , 7 }, + { 95, 4, 3 , 3 }, + { 106, 4, 4 , 8 }, + { 118, 4, 4 , 8 }, + { 130, 4, 5 , 5 }, + { 143, 4, 5 , 5 }, + { 156, 4, 2 , 3 }, + { 166, 4, 5 , 1 }, + { 179, 4, 2 , 2 }, + { 189, 4, 7 , 7 }, + { 204, 4, 7 , 6 }, + { 219, 4, 6 , 6 }, + { 233, 4, 6 , 6 }, + { 4, 24, 6 , 6 }, + { 18, 24, 6 , 6 }, + { 32, 24, 6 , 6 }, + { 46, 24, 6 , 6 }, + { 60, 24, 6 , 6 }, + { 74, 24, 6 , 6 }, + { 88, 24, 6 , 6 }, + { 102, 24, 2 , 5 }, + { 112, 24, 2 , 6 }, + { 122, 24, 3 , 5 }, + { 133, 24, 5 , 3 }, + { 146, 24, 3 , 5 }, + { 157, 24, 6 , 7 }, + { 171, 24, 7 , 7 }, + { 186, 24, 6 , 7 }, + { 200, 24, 6 , 7 }, + { 214, 24, 6 , 7 }, + { 228, 24, 6 , 7 }, + { 4, 44, 6 , 7 }, + { 18, 44, 6 , 7 }, + { 32, 44, 6 , 7 }, + { 46, 44, 6 , 7 }, + { 60, 44, 6 , 7 }, + { 74, 44, 6 , 7 }, + { 88, 44, 6 , 7 }, + { 102, 44, 6 , 7 }, + { 116, 44, 7 , 7 }, + { 131, 44, 6 , 7 }, + { 145, 44, 6 , 7 }, + { 159, 44, 6 , 7 }, + { 173, 44, 7 , 8 }, + { 188, 44, 6 , 7 }, + { 202, 44, 6 , 7 }, + { 216, 44, 6 , 7 }, + { 230, 44, 6 , 7 }, + { 4, 64, 6 , 7 }, + { 18, 64, 7 , 7 }, + { 33, 64, 6 , 7 }, + { 47, 64, 6 , 7 }, + { 61, 64, 6 , 7 }, + { 75, 64, 4 , 8 }, + { 87, 64, 7 , 7 }, + { 102, 64, 4 , 8 }, + { 114, 64, 4 , 2 }, + { 126, 64, 6 , 1 }, + { 140, 64, 2 , 2 }, + { 150, 64, 6 , 5 }, + { 164, 64, 6 , 7 }, + { 178, 64, 6 , 5 }, + { 192, 64, 6 , 7 }, + { 206, 64, 6 , 5 }, + { 220, 64, 6 , 7 }, + { 234, 64, 6 , 7 }, + { 4, 84, 6 , 7 }, + { 18, 84, 6 , 7 }, + { 32, 84, 5 , 8 }, + { 45, 84, 6 , 7 }, + { 59, 84, 6 , 7 }, + { 73, 84, 7 , 5 }, + { 88, 84, 6 , 5 }, + { 102, 84, 6 , 5 }, + { 116, 84, 6 , 7 }, + { 130, 84, 6 , 7 }, + { 144, 84, 6 , 5 }, + { 158, 84, 6 , 5 }, + { 172, 84, 6 , 6 }, + { 186, 84, 6 , 5 }, + { 200, 84, 6 , 5 }, + { 214, 84, 7 , 5 }, + { 229, 84, 6 , 5 }, + { 4, 104, 6 , 7 }, + { 18, 104, 6 , 5 }, + { 32, 104, 4 , 8 }, + { 44, 104, 2 , 8 }, + { 54, 104, 4 , 8 }, + { 66, 104, 5 , 2 }, +}; + +// Font characters info data +// NOTE: No chars.image data provided +static const GlyphInfo jungleFontChars[95] = { + { 32, 0, 9, 5, { 0 }}, + { 33, 0, 2, 3, { 0 }}, + { 34, 0, 2, 6, { 0 }}, + { 35, 0, 3, 6, { 0 }}, + { 36, 0, 2, 7, { 0 }}, + { 37, 0, 2, 8, { 0 }}, + { 38, 0, 2, 6, { 0 }}, + { 39, 0, 2, 4, { 0 }}, + { 40, 0, 2, 5, { 0 }}, + { 41, 0, 2, 5, { 0 }}, + { 42, 0, 2, 6, { 0 }}, + { 43, 0, 3, 6, { 0 }}, + { 44, 0, 7, 3, { 0 }}, + { 45, 0, 5, 6, { 0 }}, + { 46, 0, 7, 3, { 0 }}, + { 47, 0, 2, 8, { 0 }}, + { 48, 0, 3, 8, { 0 }}, + { 49, 0, 3, 7, { 0 }}, + { 50, 0, 3, 7, { 0 }}, + { 51, 0, 3, 7, { 0 }}, + { 52, 0, 3, 7, { 0 }}, + { 53, 0, 3, 7, { 0 }}, + { 54, 0, 3, 7, { 0 }}, + { 55, 0, 3, 7, { 0 }}, + { 56, 0, 3, 7, { 0 }}, + { 57, 0, 3, 7, { 0 }}, + { 58, 0, 4, 3, { 0 }}, + { 59, 0, 4, 3, { 0 }}, + { 60, 0, 3, 4, { 0 }}, + { 61, 0, 4, 6, { 0 }}, + { 62, 0, 3, 4, { 0 }}, + { 63, 0, 2, 7, { 0 }}, + { 64, 0, 2, 8, { 0 }}, + { 65, 0, 2, 7, { 0 }}, + { 66, 0, 2, 7, { 0 }}, + { 67, 0, 2, 7, { 0 }}, + { 68, 0, 2, 7, { 0 }}, + { 69, 0, 2, 7, { 0 }}, + { 70, 0, 2, 7, { 0 }}, + { 71, 0, 2, 7, { 0 }}, + { 72, 0, 2, 7, { 0 }}, + { 73, 0, 2, 7, { 0 }}, + { 74, 0, 2, 7, { 0 }}, + { 75, 0, 2, 7, { 0 }}, + { 76, 0, 2, 7, { 0 }}, + { 77, 0, 2, 8, { 0 }}, + { 78, 0, 2, 7, { 0 }}, + { 79, 0, 2, 7, { 0 }}, + { 80, 0, 2, 7, { 0 }}, + { 81, 0, 2, 7, { 0 }}, + { 82, 0, 2, 7, { 0 }}, + { 83, 0, 2, 7, { 0 }}, + { 84, 0, 2, 7, { 0 }}, + { 85, 0, 2, 7, { 0 }}, + { 86, 0, 2, 7, { 0 }}, + { 87, 0, 2, 8, { 0 }}, + { 88, 0, 2, 7, { 0 }}, + { 89, 0, 2, 7, { 0 }}, + { 90, 0, 2, 7, { 0 }}, + { 91, 0, 2, 5, { 0 }}, + { 92, 0, 2, 8, { 0 }}, + { 93, 0, 2, 5, { 0 }}, + { 94, 0, -1, 5, { 0 }}, + { 95, 0, 10, 7, { 0 }}, + { 96, 0, -1, 3, { 0 }}, + { 97, 0, 4, 7, { 0 }}, + { 98, 0, 2, 7, { 0 }}, + { 99, 0, 4, 7, { 0 }}, + { 100, 0, 2, 7, { 0 }}, + { 101, 0, 4, 7, { 0 }}, + { 102, 0, 2, 7, { 0 }}, + { 103, 0, 4, 7, { 0 }}, + { 104, 0, 2, 7, { 0 }}, + { 105, 0, 2, 7, { 0 }}, + { 106, 0, 2, 6, { 0 }}, + { 107, 0, 2, 7, { 0 }}, + { 108, 0, 2, 7, { 0 }}, + { 109, 0, 4, 8, { 0 }}, + { 110, 0, 4, 7, { 0 }}, + { 111, 0, 4, 7, { 0 }}, + { 112, 0, 4, 7, { 0 }}, + { 113, 0, 4, 7, { 0 }}, + { 114, 0, 4, 7, { 0 }}, + { 115, 0, 4, 7, { 0 }}, + { 116, 0, 3, 7, { 0 }}, + { 117, 0, 4, 7, { 0 }}, + { 118, 0, 4, 7, { 0 }}, + { 119, 0, 4, 8, { 0 }}, + { 120, 0, 4, 7, { 0 }}, + { 121, 0, 4, 7, { 0 }}, + { 122, 0, 4, 7, { 0 }}, + { 123, 0, 2, 5, { 0 }}, + { 124, 0, 2, 3, { 0 }}, + { 125, 0, 2, 5, { 0 }}, + { 126, 0, -1, 6, { 0 }}, +}; + +// Style loading function: jungle +static void GuiLoadStyleJungle(void) +{ + // Load style properties provided + // NOTE: Default properties are propagated + for (int i = 0; i < JUNGLE_STYLE_PROPS_COUNT; i++) + { + GuiSetStyle(jungleStyleProps[i].controlId, jungleStyleProps[i].propertyId, jungleStyleProps[i].propertyValue); + } + + // Custom font loading + // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function + int jungleFontDataSize = 0; + unsigned char *data = DecompressData(jungleFontData, JUNGLE_COMPRESSED_DATA_SIZE, &jungleFontDataSize); + Image imFont = { data, 256, 256, 1, 2 }; + + Font font = { 0 }; + font.baseSize = 12; + font.glyphCount = 95; + + // Load texture from image + font.texture = LoadTextureFromImage(imFont); + UnloadImage(imFont); // Uncompressed data can be unloaded from memory + + // Copy char recs data from global fontRecs + // NOTE: Required to avoid issues if trying to free font + font.recs = (Rectangle *)malloc(font.glyphCount*sizeof(Rectangle)); + memcpy(font.recs, jungleFontRecs, font.glyphCount*sizeof(Rectangle)); + + // Copy font char info data from global fontChars + // NOTE: Required to avoid issues if trying to free font + font.glyphs = (GlyphInfo *)malloc(font.glyphCount*sizeof(GlyphInfo)); + memcpy(font.glyphs, jungleFontChars, font.glyphCount*sizeof(GlyphInfo)); + + GuiSetFont(font); + + // Setup a white rectangle on the font to be used on shapes drawing, + // this way we make sure all gui can be drawn on a single pass because no texture change is required + // NOTE: Setting up this rectangle is a manual process (for the moment) + Rectangle whiteChar = { 27, 4, 2, 2 }; + SetShapesTexture(font.texture, whiteChar); +} diff --git a/examples/style_selector/styles/style_lavanda.h b/examples/style_selector/styles/style_lavanda.h new file mode 100644 index 0000000..21f93a1 --- /dev/null +++ b/examples/style_selector/styles/style_lavanda.h @@ -0,0 +1,349 @@ +////////////////////////////////////////////////////////////////////////////////// +// // +// StyleAsCode exporter v1.2 - Style data exported as a values array // +// // +// USAGE: On init call: GuiLoadStyleLavanda(); // +// // +// more info and bugs-report: github.com/raysan5/raygui // +// feedback and support: ray[at]raylibtech.com // +// // +// Copyright (c) 2020-2022 raylib technologies (@raylibtech) // +// // +////////////////////////////////////////////////////////////////////////////////// + +#define LAVANDA_STYLE_PROPS_COUNT 15 + +// Custom style name: lavanda +static const GuiStyleProp lavandaStyleProps[LAVANDA_STYLE_PROPS_COUNT] = { + { 0, 0, 0xab9bd3ff }, // DEFAULT_BORDER_COLOR_NORMAL + { 0, 1, 0x3e4350ff }, // DEFAULT_BASE_COLOR_NORMAL + { 0, 2, 0xdadaf4ff }, // DEFAULT_TEXT_COLOR_NORMAL + { 0, 3, 0xee84a0ff }, // DEFAULT_BORDER_COLOR_FOCUSED + { 0, 4, 0xf4b7c7ff }, // DEFAULT_BASE_COLOR_FOCUSED + { 0, 5, 0xb7657bff }, // DEFAULT_TEXT_COLOR_FOCUSED + { 0, 6, 0xd5c8dbff }, // DEFAULT_BORDER_COLOR_PRESSED + { 0, 7, 0x966ec0ff }, // DEFAULT_BASE_COLOR_PRESSED + { 0, 8, 0xd7ccf7ff }, // DEFAULT_TEXT_COLOR_PRESSED + { 0, 9, 0x8fa2bdff }, // DEFAULT_BORDER_COLOR_DISABLED + { 0, 10, 0x6b798dff }, // DEFAULT_BASE_COLOR_DISABLED + { 0, 11, 0x8292a9ff }, // DEFAULT_TEXT_COLOR_DISABLED + { 0, 16, 0x00000010 }, // DEFAULT_TEXT_SIZE + { 0, 18, 0x84adb7ff }, // DEFAULT_LINE_COLOR + { 0, 19, 0x5b5b81ff }, // DEFAULT_BACKGROUND_COLOR +}; + +// WARNING: This style uses a custom font: (size: 16, spacing: 1) + +#define LAVANDA_COMPRESSED_DATA_SIZE 1317 + +// Font image pixels data compressed (DEFLATE) +// NOTE: Original pixel data simplified to GRAYSCALE +static unsigned char lavandaFontData[LAVANDA_COMPRESSED_DATA_SIZE] = { 0xed, + 0xdd, 0x4b, 0x96, 0xa3, 0x48, 0x0c, 0x05, 0x50, 0xf6, 0xbf, 0xe9, 0xd7, 0xa3, 0x3a, 0xdd, 0x7d, 0xaa, 0x0c, 0x21, 0x85, + 0xc0, 0x76, 0xd6, 0xcd, 0x3b, 0x4b, 0xff, 0x00, 0x11, 0x80, 0xcd, 0x13, 0xe4, 0x00, 0x00, 0xf8, 0x4d, 0xfe, 0xf8, 0x9f, + 0x9c, 0x3c, 0x37, 0xcb, 0xef, 0xf4, 0xeb, 0xff, 0xb9, 0x78, 0xc6, 0xff, 0x9f, 0xb5, 0xf6, 0xbe, 0x59, 0xfe, 0xfc, 0xce, + 0x23, 0xf9, 0xe3, 0xf4, 0x65, 0xe3, 0xf5, 0xaf, 0xde, 0xa1, 0xfe, 0xfc, 0x7f, 0xff, 0xbe, 0xa1, 0xfe, 0x59, 0x78, 0xe5, + 0xf9, 0xe3, 0xd9, 0x58, 0x27, 0xae, 0x96, 0x56, 0xca, 0x6b, 0xcc, 0xce, 0x52, 0x3d, 0x9b, 0xc6, 0xca, 0xf3, 0x27, 0xa6, + 0xb0, 0x5e, 0xff, 0x9c, 0x2e, 0xcb, 0xd7, 0xff, 0x3f, 0x5f, 0xa7, 0xee, 0xae, 0x7f, 0x67, 0x1c, 0xe5, 0xa6, 0xa5, 0x5a, + 0x1d, 0x6f, 0xd5, 0x39, 0x9d, 0x99, 0xd2, 0x4e, 0x95, 0x56, 0xd6, 0xee, 0x5c, 0xbc, 0x77, 0x06, 0xa6, 0xf9, 0xd5, 0xb4, + 0xdd, 0x3d, 0x8a, 0xd6, 0xd7, 0xd8, 0x8c, 0xcc, 0x51, 0x6e, 0x1c, 0xff, 0x53, 0x63, 0xf4, 0xcf, 0xaf, 0xbe, 0xda, 0x4b, + 0x64, 0xbc, 0xfe, 0x53, 0x6b, 0xff, 0x3b, 0xea, 0x9f, 0xdb, 0xa7, 0x3d, 0xcb, 0xcf, 0xbb, 0xda, 0x93, 0xe6, 0x72, 0x6a, + 0x73, 0x79, 0xe4, 0x96, 0x1b, 0xc6, 0xff, 0x27, 0x1c, 0x53, 0x7f, 0x7f, 0xfd, 0x8f, 0xc5, 0xad, 0xf8, 0xd1, 0x38, 0x0a, + 0xfc, 0x59, 0xf5, 0x3f, 0xaf, 0x70, 0xc6, 0xf6, 0xf2, 0x79, 0xcb, 0x7c, 0x75, 0xe6, 0xee, 0xbf, 0x8f, 0xa7, 0xf1, 0xea, + 0xbf, 0xb3, 0xfe, 0xd9, 0x18, 0x87, 0xcf, 0xef, 0x01, 0xf7, 0x8e, 0x49, 0x7e, 0xbd, 0x3a, 0x0f, 0xef, 0xff, 0x9f, 0xab, + 0x7f, 0xf5, 0xfb, 0xff, 0xd5, 0x77, 0xad, 0x6f, 0xf8, 0x25, 0xe9, 0x5d, 0x63, 0xec, 0x6f, 0x59, 0x0a, 0xea, 0xaf, 0xfe, + 0xd6, 0xb6, 0xcf, 0x3f, 0xf6, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xeb, 0xcc, 0x44, 0x4e, 0x93, 0x5d, 0xd5, 0x44, + 0x6d, 0x8a, 0xd9, 0xc4, 0x5c, 0xa4, 0x3f, 0x76, 0x72, 0xf9, 0xb5, 0x6e, 0x80, 0xb4, 0xce, 0xd1, 0x1f, 0x5b, 0xe9, 0xb7, + 0xb4, 0xa6, 0x64, 0x32, 0xff, 0x9f, 0x91, 0xec, 0x69, 0x37, 0xe5, 0x96, 0xed, 0xf3, 0x63, 0xd5, 0x39, 0x4e, 0x23, 0xa9, + 0x7c, 0xbd, 0xf6, 0xf5, 0x3b, 0x23, 0x32, 0x94, 0xa8, 0x4d, 0xfb, 0xbc, 0x64, 0x46, 0x13, 0x86, 0x69, 0x7d, 0x4e, 0x6e, + 0x49, 0xd5, 0x64, 0x28, 0x87, 0xdf, 0x9b, 0xb7, 0xee, 0x5a, 0x95, 0xc6, 0x16, 0x70, 0xbe, 0xfe, 0x95, 0xed, 0x72, 0x7f, + 0xfa, 0x52, 0x3a, 0x6f, 0x9f, 0xdb, 0xc6, 0xff, 0xf5, 0x68, 0x4c, 0xb3, 0xc7, 0x21, 0xe5, 0x6d, 0x43, 0xca, 0xfd, 0x66, + 0xdd, 0xa4, 0x5d, 0x1a, 0x63, 0x3d, 0xe5, 0x8e, 0xb5, 0xab, 0x31, 0xb2, 0x3e, 0xe5, 0x19, 0x4a, 0x2b, 0x77, 0xfa, 0x44, + 0xd2, 0xe8, 0x24, 0xdb, 0x1d, 0xc9, 0xb9, 0x79, 0xfc, 0x5f, 0x1f, 0x33, 0xcc, 0x6c, 0x9d, 0x32, 0x32, 0xf5, 0x79, 0x5b, + 0x7a, 0x2c, 0xcd, 0x3d, 0xd8, 0x6e, 0x25, 0xf3, 0x48, 0xc6, 0x35, 0x83, 0x1d, 0x8b, 0xc7, 0x56, 0x0e, 0xfc, 0x73, 0x13, + 0xda, 0xaf, 0xb6, 0xff, 0x59, 0xcc, 0x9e, 0x7d, 0x5b, 0xfd, 0xbb, 0x3d, 0x7d, 0xdf, 0x5c, 0xff, 0x7a, 0x35, 0x56, 0xeb, + 0x5f, 0x3f, 0xe2, 0xc8, 0xc9, 0xde, 0x77, 0x3a, 0xe7, 0x98, 0x72, 0xe7, 0x7d, 0xe7, 0x3b, 0x63, 0x3e, 0xbe, 0xfa, 0xbb, + 0xdd, 0x56, 0x29, 0x1f, 0xdb, 0x9c, 0xf7, 0x46, 0xbf, 0x3e, 0x1a, 0x89, 0x84, 0xe9, 0x47, 0xfc, 0x46, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe7, 0x36, 0x53, 0xce, 0xdc, 0x4e, 0xa6, 0x99, 0xd3, 0xce, 0x22, 0x9f, 0xe7, 0x24, + 0x8f, 0x66, 0x96, 0xbf, 0xfe, 0xba, 0x9c, 0x5e, 0x21, 0x37, 0x23, 0xb9, 0x9e, 0x6c, 0x67, 0x1e, 0xb2, 0x9d, 0xcc, 0xbd, + 0xca, 0xc0, 0x74, 0xea, 0x9f, 0xa5, 0xb4, 0x43, 0x27, 0xa3, 0xd4, 0xc9, 0x29, 0x65, 0xe3, 0xda, 0x9b, 0x69, 0x27, 0xbd, + 0xd6, 0x52, 0x67, 0xb9, 0x31, 0xf9, 0x37, 0x51, 0xff, 0x34, 0xd2, 0xe2, 0x59, 0x4a, 0x5d, 0x77, 0x33, 0x79, 0xdd, 0x2c, + 0x57, 0xef, 0x0a, 0x83, 0xd9, 0x4a, 0xfa, 0x5d, 0x57, 0x20, 0x9b, 0xa3, 0x3f, 0xed, 0x8e, 0x88, 0xb5, 0xbc, 0x78, 0xb7, + 0x5b, 0x20, 0x0b, 0xa9, 0xff, 0x8c, 0x65, 0xf2, 0xf6, 0xb2, 0x7c, 0x79, 0x43, 0xfd, 0xe7, 0xba, 0x67, 0x2a, 0x57, 0x9a, + 0xad, 0xef, 0x2d, 0xf2, 0xe3, 0xeb, 0x7f, 0xd7, 0xf6, 0x7f, 0x25, 0x9f, 0x9b, 0x5b, 0xb2, 0xad, 0x95, 0xf1, 0x9f, 0xa5, + 0x34, 0xeb, 0x6c, 0xfd, 0x8f, 0xa5, 0x24, 0x6c, 0x4e, 0xf3, 0xfc, 0xf5, 0xd7, 0x65, 0x34, 0xdf, 0x9c, 0x66, 0x06, 0xfb, + 0xba, 0x2b, 0xe1, 0xf9, 0xfa, 0x1f, 0x37, 0x74, 0x33, 0x66, 0xe4, 0xe8, 0x68, 0x6e, 0xff, 0x9f, 0x46, 0x15, 0x3f, 0xb9, + 0xfe, 0x53, 0xc7, 0xff, 0x69, 0xcf, 0xc5, 0x5a, 0x0f, 0xec, 0xd9, 0x27, 0xce, 0xf5, 0x5d, 0x75, 0xe7, 0x23, 0x1b, 0x09, + 0xf2, 0x34, 0xfa, 0x03, 0xa6, 0x3a, 0xa7, 0xd7, 0xfa, 0xbf, 0xb3, 0xdc, 0x85, 0x79, 0xf5, 0x3e, 0x29, 0xa7, 0xd9, 0xbb, + 0xf5, 0xef, 0xf5, 0x28, 0xac, 0xce, 0xc7, 0xd1, 0xc8, 0xf9, 0xf7, 0x7e, 0x7f, 0x59, 0x79, 0xcf, 0xdc, 0xdc, 0x0d, 0xf1, + 0x99, 0x57, 0x4f, 0xcf, 0x6d, 0x7d, 0x0f, 0x9f, 0x94, 0xf4, 0x7f, 0x67, 0xfd, 0x3f, 0xb1, 0x03, 0x4b, 0xb7, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xe7, 0x7f, 0x5e, 0x27, 0x03, 0x2b, 0xd7, 0xdc, 0xef, 0xdf, 0x5f, 0xa0, 0xf6, 0x19, + 0xd3, 0xe7, 0xe4, 0x6b, 0x29, 0x8a, 0x34, 0xce, 0x69, 0xaf, 0x7e, 0xe6, 0xfe, 0xd9, 0xd2, 0xfd, 0xfc, 0xc9, 0xde, 0x14, + 0x55, 0x93, 0xf6, 0xc7, 0x58, 0xfa, 0xb2, 0x97, 0xc9, 0xa9, 0x65, 0xca, 0x52, 0xba, 0x66, 0x79, 0xde, 0x70, 0xb6, 0xfc, + 0xe7, 0xd4, 0xbf, 0x9a, 0xbe, 0x4a, 0x2b, 0xb1, 0x56, 0xad, 0x73, 0xe5, 0x93, 0x33, 0xb2, 0x5c, 0xab, 0x99, 0xe0, 0x5e, + 0xa6, 0x35, 0x03, 0x15, 0x38, 0x6e, 0xba, 0x23, 0xc8, 0xfa, 0x3e, 0x26, 0xad, 0xed, 0x70, 0x4a, 0x5b, 0xff, 0xea, 0xd6, + 0x62, 0xa2, 0xfe, 0xb9, 0x35, 0xff, 0x77, 0x6f, 0xfd, 0x9f, 0xca, 0xb0, 0xd5, 0xfb, 0x5b, 0xfa, 0x6b, 0xcc, 0xea, 0xf6, + 0x3f, 0x23, 0xe3, 0x3f, 0x83, 0xf9, 0xdf, 0x6c, 0xde, 0x87, 0xe9, 0x1b, 0xeb, 0xbf, 0x73, 0x37, 0x97, 0x7b, 0xb6, 0xdc, + 0xb5, 0x7d, 0x70, 0xc6, 0xf6, 0xff, 0x19, 0x99, 0xdb, 0xe3, 0x8d, 0x57, 0x7e, 0x4f, 0xeb, 0x2e, 0x4b, 0x47, 0xb1, 0x23, + 0xae, 0x36, 0x52, 0xea, 0x77, 0x0b, 0xc9, 0x4d, 0x47, 0x4f, 0xd9, 0xda, 0x43, 0x7f, 0x43, 0xfd, 0x3b, 0x47, 0x06, 0x47, + 0xfb, 0x9b, 0x41, 0xe5, 0x28, 0x79, 0xa6, 0xe3, 0x32, 0x37, 0xd6, 0x3f, 0x23, 0x9d, 0x81, 0x9f, 0x5b, 0xff, 0x27, 0xd6, + 0x9a, 0x99, 0x23, 0xdf, 0xce, 0x77, 0xd1, 0x89, 0x3b, 0xea, 0xa4, 0xf5, 0x6d, 0xf2, 0xb8, 0xed, 0xd7, 0x8a, 0xef, 0xcb, + 0xa3, 0x67, 0xf4, 0x91, 0xf9, 0xe5, 0x97, 0xc7, 0x96, 0xcc, 0xcf, 0xa9, 0xff, 0x33, 0x7d, 0x1d, 0xd3, 0x7b, 0xa2, 0x77, + 0xef, 0x53, 0x33, 0xb2, 0x07, 0x46, 0x97, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x3b, 0x5f, 0x97, 0xad, 0x6c, 0x6c, + 0x2f, 0x8f, 0x34, 0x91, 0xcd, 0xe9, 0xa4, 0xbc, 0x8e, 0xf6, 0xd5, 0xf5, 0xbb, 0xb9, 0xc2, 0xf3, 0xf3, 0x63, 0x59, 0x3c, + 0x67, 0x56, 0xcf, 0x3a, 0x55, 0xd3, 0x23, 0xe7, 0x49, 0xd4, 0x94, 0x92, 0xa7, 0xb9, 0xbc, 0xce, 0x7b, 0xe5, 0x1a, 0xbd, + 0x6b, 0xd7, 0x61, 0xad, 0x64, 0xf3, 0x7b, 0x57, 0xd7, 0x4f, 0x2b, 0x25, 0x38, 0x99, 0x13, 0xdc, 0xc9, 0x7d, 0x5c, 0xad, + 0x5f, 0xb9, 0xe8, 0x5c, 0xc8, 0x48, 0xaa, 0xfd, 0x3a, 0x4f, 0x5d, 0xef, 0x0e, 0x9a, 0x4c, 0x5b, 0xed, 0xdc, 0x0d, 0x22, + 0x83, 0x3d, 0x0a, 0xf7, 0x65, 0x26, 0x26, 0xb7, 0xff, 0xfb, 0xcb, 0xb9, 0x92, 0x4b, 0xda, 0xdf, 0x52, 0xef, 0xd5, 0xff, + 0xfa, 0xde, 0x25, 0xf7, 0xf5, 0x28, 0x3d, 0x55, 0xff, 0xce, 0x52, 0xbb, 0xbf, 0xfe, 0xb5, 0x94, 0x74, 0x6f, 0x0c, 0x5f, + 0x5f, 0x5d, 0x3b, 0xc3, 0x69, 0xc7, 0x9f, 0x5d, 0xff, 0x6c, 0xec, 0x81, 0xf7, 0x32, 0xf8, 0x57, 0x5d, 0x0c, 0x4f, 0xd6, + 0x7f, 0xae, 0x47, 0x35, 0xb7, 0xf5, 0x0a, 0xf6, 0xeb, 0x7f, 0x14, 0xf7, 0xbf, 0xc7, 0xe2, 0x1d, 0x1c, 0x26, 0xba, 0x86, + 0xfb, 0xdb, 0xe3, 0xd9, 0x63, 0xbc, 0xfa, 0xb4, 0x3f, 0x3d, 0xfe, 0xe7, 0x33, 0xaa, 0x79, 0x2c, 0x83, 0x7a, 0x47, 0xcf, + 0x70, 0xef, 0x1a, 0xf2, 0x53, 0xd3, 0xfe, 0xde, 0xfa, 0x3f, 0x93, 0x50, 0xce, 0x1b, 0xeb, 0x3f, 0xff, 0x59, 0x69, 0xf7, + 0x15, 0xfc, 0xdc, 0xcc, 0x74, 0x3e, 0xa8, 0x6e, 0xdf, 0xb5, 0x8c, 0x64, 0xe6, 0xd5, 0x5f, 0xfd, 0xff, 0xde, 0x3c, 0x7f, + 0xa4, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xed, 0x1f }; + +// Font characters rectangles data +static const Rectangle lavandaFontRecs[95] = { + { 4, 4, 5 , 16 }, + { 17, 4, 1 , 9 }, + { 26, 4, 3 , 3 }, + { 37, 4, 7 , 8 }, + { 52, 4, 5 , 11 }, + { 65, 4, 10 , 8 }, + { 83, 4, 7 , 9 }, + { 98, 4, 1 , 3 }, + { 107, 4, 3 , 12 }, + { 118, 4, 3 , 12 }, + { 129, 4, 5 , 4 }, + { 142, 4, 5 , 5 }, + { 155, 4, 2 , 3 }, + { 165, 4, 3 , 1 }, + { 176, 4, 1 , 1 }, + { 185, 4, 4 , 12 }, + { 197, 4, 5 , 9 }, + { 210, 4, 3 , 9 }, + { 221, 4, 5 , 9 }, + { 234, 4, 5 , 9 }, + { 4, 28, 5 , 9 }, + { 17, 28, 5 , 9 }, + { 30, 28, 5 , 9 }, + { 43, 28, 5 , 9 }, + { 56, 28, 5 , 9 }, + { 69, 28, 5 , 9 }, + { 82, 28, 1 , 4 }, + { 91, 28, 2 , 6 }, + { 101, 28, 4 , 5 }, + { 113, 28, 4 , 3 }, + { 125, 28, 4 , 5 }, + { 137, 28, 5 , 9 }, + { 150, 28, 7 , 10 }, + { 165, 28, 7 , 9 }, + { 180, 28, 6 , 9 }, + { 194, 28, 5 , 9 }, + { 207, 28, 6 , 9 }, + { 221, 28, 5 , 9 }, + { 234, 28, 5 , 9 }, + { 4, 52, 6 , 9 }, + { 18, 52, 5 , 10 }, + { 31, 52, 1 , 9 }, + { 40, 52, 6 , 9 }, + { 54, 52, 6 , 9 }, + { 68, 52, 5 , 9 }, + { 81, 52, 8 , 11 }, + { 97, 52, 6 , 10 }, + { 111, 52, 7 , 9 }, + { 126, 52, 5 , 9 }, + { 139, 52, 7 , 11 }, + { 154, 52, 5 , 9 }, + { 167, 52, 6 , 9 }, + { 181, 52, 7 , 9 }, + { 196, 52, 6 , 9 }, + { 210, 52, 6 , 10 }, + { 224, 52, 9 , 10 }, + { 4, 76, 6 , 11 }, + { 18, 76, 5 , 10 }, + { 31, 76, 5 , 9 }, + { 44, 76, 3 , 12 }, + { 55, 76, 4 , 12 }, + { 67, 76, 3 , 12 }, + { 78, 76, 5 , 4 }, + { 91, 76, 6 , 1 }, + { 105, 76, 3 , 3 }, + { 116, 76, 6 , 7 }, + { 130, 76, 5 , 9 }, + { 143, 76, 4 , 7 }, + { 155, 76, 5 , 10 }, + { 168, 76, 4 , 7 }, + { 180, 76, 3 , 10 }, + { 191, 76, 4 , 11 }, + { 203, 76, 5 , 11 }, + { 216, 76, 1 , 9 }, + { 225, 76, 5 , 12 }, + { 238, 76, 5 , 9 }, + { 4, 100, 1 , 9 }, + { 13, 100, 8 , 9 }, + { 29, 100, 5 , 9 }, + { 42, 100, 4 , 7 }, + { 54, 100, 5 , 10 }, + { 67, 100, 5 , 10 }, + { 80, 100, 5 , 7 }, + { 93, 100, 5 , 7 }, + { 106, 100, 3 , 9 }, + { 117, 100, 5 , 7 }, + { 130, 100, 5 , 8 }, + { 143, 100, 9 , 8 }, + { 160, 100, 5 , 9 }, + { 173, 100, 6 , 9 }, + { 187, 100, 4 , 7 }, + { 199, 100, 5 , 12 }, + { 212, 100, 1 , 12 }, + { 221, 100, 5 , 12 }, + { 234, 100, 6 , 2 }, +}; + +// Font characters info data +// NOTE: No chars.image data provided +static const GlyphInfo lavandaFontChars[95] = { + { 32, 0, 12, 5, { 0 }}, + { 33, 0, 3, 2, { 0 }}, + { 34, 0, 3, 4, { 0 }}, + { 35, 0, 3, 8, { 0 }}, + { 36, 0, 2, 6, { 0 }}, + { 37, 0, 4, 11, { 0 }}, + { 38, 0, 3, 8, { 0 }}, + { 39, 0, 3, 2, { 0 }}, + { 40, 0, 2, 4, { 0 }}, + { 41, 0, 2, 4, { 0 }}, + { 42, 0, 3, 6, { 0 }}, + { 43, 0, 5, 6, { 0 }}, + { 44, 0, 10, 3, { 0 }}, + { 45, 0, 7, 4, { 0 }}, + { 46, 0, 11, 2, { 0 }}, + { 47, 0, 2, 5, { 0 }}, + { 48, 0, 3, 6, { 0 }}, + { 49, 0, 3, 4, { 0 }}, + { 50, 0, 3, 6, { 0 }}, + { 51, 0, 3, 6, { 0 }}, + { 52, 0, 3, 6, { 0 }}, + { 53, 0, 3, 6, { 0 }}, + { 54, 0, 3, 6, { 0 }}, + { 55, 0, 3, 6, { 0 }}, + { 56, 0, 3, 6, { 0 }}, + { 57, 0, 3, 6, { 0 }}, + { 58, 0, 7, 2, { 0 }}, + { 59, 0, 7, 3, { 0 }}, + { 60, 0, 5, 5, { 0 }}, + { 61, 0, 6, 5, { 0 }}, + { 62, 0, 5, 5, { 0 }}, + { 63, 0, 3, 6, { 0 }}, + { 64, 0, 4, 8, { 0 }}, + { 65, 0, 3, 8, { 0 }}, + { 66, 0, 3, 7, { 0 }}, + { 67, 0, 3, 6, { 0 }}, + { 68, 0, 3, 7, { 0 }}, + { 69, 0, 3, 6, { 0 }}, + { 70, 0, 3, 6, { 0 }}, + { 71, 0, 3, 7, { 0 }}, + { 72, 0, 2, 6, { 0 }}, + { 73, 0, 3, 2, { 0 }}, + { 74, 0, 3, 7, { 0 }}, + { 75, 0, 3, 7, { 0 }}, + { 76, 0, 3, 6, { 0 }}, + { 77, 0, 3, 9, { 0 }}, + { 78, 0, 2, 7, { 0 }}, + { 79, 0, 3, 8, { 0 }}, + { 80, 0, 3, 6, { 0 }}, + { 81, 0, 3, 8, { 0 }}, + { 82, 0, 3, 6, { 0 }}, + { 83, 0, 3, 7, { 0 }}, + { 84, 0, 3, 8, { 0 }}, + { 85, 0, 3, 7, { 0 }}, + { 86, 0, 2, 7, { 0 }}, + { 87, 0, 2, 10, { 0 }}, + { 88, 0, 3, 7, { 0 }}, + { 89, 0, 3, 6, { 0 }}, + { 90, 0, 3, 6, { 0 }}, + { 91, 0, 2, 4, { 0 }}, + { 92, 0, 2, 5, { 0 }}, + { 93, 0, 2, 4, { 0 }}, + { 94, 0, 3, 6, { 0 }}, + { 95, 0, 13, 7, { 0 }}, + { 96, 0, 3, 4, { 0 }}, + { 97, 0, 5, 7, { 0 }}, + { 98, 0, 3, 6, { 0 }}, + { 99, 0, 5, 5, { 0 }}, + { 100, 0, 2, 6, { 0 }}, + { 101, 0, 5, 5, { 0 }}, + { 102, 0, 2, 4, { 0 }}, + { 103, 0, 4, 5, { 0 }}, + { 104, 0, 3, 6, { 0 }}, + { 105, 0, 3, 2, { 0 }}, + { 106, -1, 3, 5, { 0 }}, + { 107, 0, 3, 6, { 0 }}, + { 108, 0, 3, 2, { 0 }}, + { 109, 0, 5, 9, { 0 }}, + { 110, 0, 5, 6, { 0 }}, + { 111, 0, 5, 5, { 0 }}, + { 112, 0, 5, 6, { 0 }}, + { 113, 0, 5, 6, { 0 }}, + { 114, 0, 5, 6, { 0 }}, + { 115, 0, 5, 6, { 0 }}, + { 116, 0, 3, 4, { 0 }}, + { 117, 0, 5, 6, { 0 }}, + { 118, 0, 4, 6, { 0 }}, + { 119, 0, 4, 10, { 0 }}, + { 120, 0, 5, 6, { 0 }}, + { 121, -1, 5, 6, { 0 }}, + { 122, 0, 5, 5, { 0 }}, + { 123, 0, 2, 6, { 0 }}, + { 124, 0, 2, 2, { 0 }}, + { 125, 0, 2, 6, { 0 }}, + { 126, 0, 7, 7, { 0 }}, +}; + +// Style loading function: lavanda +static void GuiLoadStyleLavanda(void) +{ + // Load style properties provided + // NOTE: Default properties are propagated + for (int i = 0; i < LAVANDA_STYLE_PROPS_COUNT; i++) + { + GuiSetStyle(lavandaStyleProps[i].controlId, lavandaStyleProps[i].propertyId, lavandaStyleProps[i].propertyValue); + } + + // Custom font loading + // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function + int lavandaFontDataSize = 0; + unsigned char *data = DecompressData(lavandaFontData, LAVANDA_COMPRESSED_DATA_SIZE, &lavandaFontDataSize); + Image imFont = { data, 256, 256, 1, 2 }; + + Font font = { 0 }; + font.baseSize = 16; + font.glyphCount = 95; + + // Load texture from image + font.texture = LoadTextureFromImage(imFont); + UnloadImage(imFont); // Uncompressed data can be unloaded from memory + + // Copy char recs data from global fontRecs + // NOTE: Required to avoid issues if trying to free font + font.recs = (Rectangle *)malloc(font.glyphCount*sizeof(Rectangle)); + memcpy(font.recs, lavandaFontRecs, font.glyphCount*sizeof(Rectangle)); + + // Copy font char info data from global fontChars + // NOTE: Required to avoid issues if trying to free font + font.glyphs = (GlyphInfo *)malloc(font.glyphCount*sizeof(GlyphInfo)); + memcpy(font.glyphs, lavandaFontChars, font.glyphCount*sizeof(GlyphInfo)); + + GuiSetFont(font); + + // Setup a white rectangle on the font to be used on shapes drawing, + // this way we make sure all gui can be drawn on a single pass because no texture change is required + // NOTE: Setting up this rectangle is a manual process (for the moment) + Rectangle whiteChar = { 130, 5, 2, 2 }; + SetShapesTexture(font.texture, whiteChar); +} diff --git a/examples/style_selector/styles/style_terminal.h b/examples/style_selector/styles/style_terminal.h new file mode 100644 index 0000000..20877e4 --- /dev/null +++ b/examples/style_selector/styles/style_terminal.h @@ -0,0 +1,333 @@ +////////////////////////////////////////////////////////////////////////////////// +// // +// StyleAsCode exporter v1.2 - Style data exported as a values array // +// // +// USAGE: On init call: GuiLoadStyleTerminal(); // +// // +// more info and bugs-report: github.com/raysan5/raygui // +// feedback and support: ray[at]raylibtech.com // +// // +// Copyright (c) 2020-2022 raylib technologies (@raylibtech) // +// // +////////////////////////////////////////////////////////////////////////////////// + +#define TERMINAL_STYLE_PROPS_COUNT 16 + +// Custom style name: terminal +static const GuiStyleProp terminalStyleProps[TERMINAL_STYLE_PROPS_COUNT] = { + { 0, 0, 0x1c8d00ff }, // DEFAULT_BORDER_COLOR_NORMAL + { 0, 1, 0x161313ff }, // DEFAULT_BASE_COLOR_NORMAL + { 0, 2, 0x38f620ff }, // DEFAULT_TEXT_COLOR_NORMAL + { 0, 3, 0xc3fbc6ff }, // DEFAULT_BORDER_COLOR_FOCUSED + { 0, 4, 0x43bf2eff }, // DEFAULT_BASE_COLOR_FOCUSED + { 0, 5, 0xdcfadcff }, // DEFAULT_TEXT_COLOR_FOCUSED + { 0, 6, 0x1f5b19ff }, // DEFAULT_BORDER_COLOR_PRESSED + { 0, 7, 0x43ff28ff }, // DEFAULT_BASE_COLOR_PRESSED + { 0, 8, 0x1e6f15ff }, // DEFAULT_TEXT_COLOR_PRESSED + { 0, 9, 0x223b22ff }, // DEFAULT_BORDER_COLOR_DISABLED + { 0, 10, 0x182c18ff }, // DEFAULT_BASE_COLOR_DISABLED + { 0, 11, 0x244125ff }, // DEFAULT_TEXT_COLOR_DISABLED + { 0, 16, 0x00000010 }, // DEFAULT_TEXT_SIZE + { 0, 17, 0x00000000 }, // DEFAULT_TEXT_SPACING + { 0, 18, 0xe6fce3ff }, // DEFAULT_LINE_COLOR + { 0, 19, 0x0c1505ff }, // DEFAULT_BACKGROUND_COLOR +}; + +// WARNING: This style uses a custom font: (size: 16, spacing: 0) + +#define TERMINAL_COMPRESSED_DATA_SIZE 964 + +// Font image pixels data compressed (DEFLATE) +// NOTE: Original pixel data simplified to GRAYSCALE +static unsigned char terminalFontData[TERMINAL_COMPRESSED_DATA_SIZE] = { 0xed, + 0xdd, 0x41, 0xb6, 0x9b, 0x30, 0x0c, 0x05, 0x50, 0xf6, 0xbf, 0x69, 0x75, 0xd0, 0xd3, 0x41, 0x7b, 0x9a, 0x0f, 0x92, 0x65, + 0xc7, 0xc0, 0xed, 0x9d, 0xa5, 0x09, 0x9f, 0xf0, 0x02, 0x38, 0xb6, 0xec, 0xc4, 0x01, 0x00, 0xf0, 0x8f, 0xf8, 0xef, 0x23, + 0xf1, 0xf1, 0x99, 0x71, 0x79, 0x3b, 0xbf, 0x1f, 0x8d, 0x8f, 0x7f, 0xe5, 0xcf, 0xbf, 0x2b, 0x5b, 0xba, 0xfe, 0xac, 0x48, + 0xed, 0xdd, 0xd8, 0x5e, 0xd5, 0xb6, 0x93, 0x7d, 0xf6, 0xcf, 0xfb, 0x13, 0x1b, 0xe4, 0x7f, 0xfe, 0x6e, 0x33, 0xc7, 0x33, + 0xca, 0xe9, 0xe5, 0x3f, 0x9d, 0x33, 0xcf, 0xa1, 0xec, 0x3e, 0xd6, 0x8e, 0xc9, 0x1e, 0xf9, 0x67, 0xff, 0x46, 0x6e, 0xbf, + 0x63, 0x68, 0xcf, 0x6b, 0xe7, 0xf4, 0xd8, 0xde, 0xdd, 0x39, 0xff, 0xe3, 0xe3, 0x95, 0xbc, 0x7a, 0x1c, 0x57, 0xe5, 0x3f, + 0xfe, 0x2e, 0xe5, 0x7f, 0xf6, 0xcc, 0x7c, 0x96, 0x3f, 0xa7, 0x17, 0x37, 0xcf, 0x3f, 0xdb, 0xee, 0x79, 0x66, 0xfe, 0x9f, + 0xae, 0x0c, 0x3f, 0xdf, 0x93, 0x3f, 0xbf, 0x66, 0xe5, 0xdd, 0x7b, 0x4e, 0xfe, 0x67, 0xf7, 0xd1, 0xeb, 0xc7, 0x22, 0xdb, + 0x32, 0x5c, 0x9f, 0xff, 0x48, 0x8b, 0xec, 0xde, 0xf9, 0xc7, 0xc9, 0xb1, 0x8a, 0x81, 0xf6, 0xed, 0xe8, 0x35, 0x43, 0xfe, + 0xdf, 0xce, 0xff, 0xb8, 0x41, 0xfe, 0x47, 0x43, 0xfb, 0xaf, 0xf2, 0xce, 0x9e, 0x90, 0x7f, 0xed, 0xdd, 0xdd, 0x33, 0xff, + 0xea, 0xf7, 0xff, 0xcf, 0x7d, 0x1e, 0xf2, 0x7f, 0xd2, 0xf5, 0x3f, 0x4e, 0xae, 0x1d, 0x23, 0xed, 0x97, 0x3d, 0xf3, 0x8f, + 0x4b, 0x57, 0xcb, 0xf1, 0xde, 0xc2, 0xec, 0x35, 0xf7, 0x0d, 0x7d, 0xd4, 0xbb, 0xe7, 0xcf, 0x8a, 0x51, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xd0, 0x83, 0x5e, 0xa9, 0x31, 0xef, 0xfd, 0x9f, 0x5c, 0xed, 0x5c, 0xbd, 0x9e, 0xfe, 0xea, 0x1e, 0xc6, + 0xf2, 0xa3, 0x32, 0x3b, 0x97, 0x39, 0x23, 0xc8, 0x99, 0xd1, 0xfb, 0xd1, 0xba, 0xc4, 0x98, 0x5e, 0x81, 0x1b, 0xd3, 0xde, + 0x61, 0xa5, 0x1e, 0x20, 0x16, 0x8d, 0xf9, 0xdf, 0x23, 0xff, 0x28, 0x8c, 0xa7, 0x77, 0xcc, 0x26, 0x91, 0xff, 0xd3, 0xce, + 0xff, 0xb3, 0x7d, 0xff, 0xfb, 0x13, 0x25, 0xff, 0x5d, 0xf2, 0x3f, 0xd2, 0xf7, 0xb5, 0x18, 0xaa, 0x1c, 0x78, 0x4f, 0xfe, + 0xf9, 0x16, 0xc8, 0x51, 0x9c, 0xf1, 0xd7, 0x51, 0x97, 0x3e, 0x7f, 0x6e, 0xce, 0x59, 0xfe, 0x95, 0xb6, 0x5c, 0x25, 0xff, + 0xb3, 0x5c, 0x72, 0xd5, 0xe5, 0xbd, 0x73, 0x15, 0xeb, 0xb3, 0x77, 0xf6, 0xad, 0xce, 0x7e, 0xce, 0xf5, 0xff, 0x5e, 0xf9, + 0xaf, 0xaf, 0xe1, 0x8a, 0x0b, 0x75, 0xac, 0xf2, 0xff, 0xde, 0xf9, 0x1f, 0x5f, 0xbc, 0x2a, 0xc8, 0x5f, 0xfe, 0x6f, 0xca, + 0xbf, 0xda, 0x62, 0x8b, 0xd6, 0xad, 0xed, 0x78, 0xff, 0xcf, 0xae, 0xaf, 0xb1, 0xae, 0xff, 0xef, 0x28, 0xf6, 0x86, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x86, 0xfa, 0xff, 0x7c, 0x15, 0x7e, 0xd7, 0xd8, 0x67, 0x6c, 0x31, 0xfb, 0x60, 0xc6, + 0x5c, 0x86, 0xea, 0x11, 0xea, 0xda, 0x62, 0x7e, 0x0d, 0xb5, 0x9e, 0x95, 0xf8, 0xf3, 0x5b, 0x99, 0x31, 0xce, 0x3e, 0x7b, + 0xd4, 0xbe, 0x52, 0xff, 0xb0, 0x32, 0xff, 0x4a, 0xad, 0x85, 0xfc, 0xe5, 0x2f, 0x7f, 0xf9, 0xcb, 0x7f, 0xaf, 0xfc, 0xcf, + 0xd7, 0x8b, 0x8f, 0xa1, 0x2a, 0xba, 0x5a, 0x9d, 0x51, 0x67, 0xed, 0xfb, 0x8a, 0x76, 0xcf, 0x48, 0x9d, 0x7d, 0x7c, 0x39, + 0xff, 0xb3, 0xd9, 0x6f, 0x63, 0x35, 0x94, 0xdf, 0x3e, 0xff, 0x77, 0x99, 0x67, 0x17, 0xc5, 0x33, 0xbd, 0x6b, 0xaf, 0x23, + 0x7d, 0xfe, 0x8f, 0x9f, 0xfb, 0xf2, 0xdf, 0x3f, 0xff, 0x91, 0x2a, 0x6c, 0xf9, 0xef, 0x93, 0xff, 0x59, 0xc2, 0xf2, 0x7f, + 0x7a, 0xfe, 0x9f, 0x7f, 0x87, 0xee, 0x2e, 0xf9, 0x77, 0x57, 0xc5, 0x57, 0xf3, 0xef, 0xac, 0x8c, 0xaf, 0xf6, 0xa2, 0x45, + 0x71, 0x3d, 0x82, 0x48, 0xf7, 0x83, 0x56, 0xf2, 0x37, 0x0f, 0x00, 0xf6, 0x9b, 0x79, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xab, 0x7a, 0xc5, 0x73, 0x95, 0x6f, 0x7d, 0xeb, 0x81, 0x1d, 0x93, 0x47, 0xf6, 0x6a, 0xe3, 0x98, 0xe3, 0xbf, 0x5e, 0x70, + 0xa4, 0x46, 0x54, 0x2b, 0x7b, 0xdd, 0xb9, 0xbe, 0x5a, 0xa4, 0x47, 0x4a, 0xb2, 0x35, 0x4a, 0xf9, 0xf1, 0x98, 0x9e, 0xd5, + 0xf0, 0x3a, 0xab, 0x15, 0xaa, 0x55, 0xa2, 0xfd, 0xc7, 0x20, 0xca, 0x75, 0x0c, 0x47, 0x53, 0x05, 0xc1, 0x8c, 0xb5, 0xbd, + 0xe5, 0x2f, 0xff, 0xae, 0x5f, 0x8f, 0x99, 0x51, 0x0d, 0xdc, 0x53, 0x8d, 0x12, 0x83, 0xd5, 0x37, 0xeb, 0xf2, 0xff, 0xce, + 0x0a, 0xde, 0xeb, 0x6a, 0xbe, 0xb2, 0x9f, 0xa6, 0x68, 0x4c, 0x50, 0xfe, 0xdf, 0xcf, 0xbf, 0x7a, 0x34, 0xde, 0x93, 0x7f, + 0x47, 0x6d, 0xf9, 0x93, 0xf2, 0x8f, 0x86, 0x99, 0xcf, 0x63, 0xf3, 0x66, 0xde, 0x90, 0xff, 0x8c, 0xfb, 0x6f, 0x4f, 0x6b, + 0xe2, 0x7d, 0xe7, 0x7f, 0x47, 0x75, 0xf1, 0xfc, 0x2b, 0xc3, 0x9c, 0xd7, 0xec, 0x98, 0xff, 0xfa, 0xaa, 0x48, 0xf9, 0xcf, + 0xbf, 0xfe, 0xef, 0x9c, 0x7f, 0xa5, 0x77, 0x68, 0xf5, 0x9d, 0xa1, 0xfb, 0x35, 0x33, 0xd7, 0x4f, 0x91, 0xbf, 0x0a, 0xf4, + 0x3b, 0xf4, 0xff, 0x77, 0x3e, 0x1f, 0x67, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x8d, 0xac, 0x75, 0xfe, 0x9e, 0x75, + 0xb6, 0xe2, 0x62, 0xe5, 0x3a, 0x8a, 0xb5, 0x15, 0xc0, 0xe2, 0x72, 0x7d, 0xcf, 0xde, 0xe3, 0x01, 0x6b, 0xd6, 0x4c, 0xae, + 0xae, 0xae, 0xf7, 0xdd, 0xfc, 0xb3, 0xa3, 0xa0, 0xd7, 0x1f, 0xdb, 0xef, 0xb7, 0xf0, 0x9f, 0x9e, 0x7f, 0xf7, 0x3a, 0xda, + 0xdd, 0x9f, 0x89, 0xa7, 0xe7, 0xff, 0xf3, 0x9d, 0x61, 0x45, 0xfe, 0xf5, 0x35, 0x3b, 0x8f, 0x87, 0x64, 0xfd, 0xbd, 0xfc, + 0xb3, 0x33, 0x7b, 0x76, 0x39, 0xff, 0xe7, 0xdc, 0x13, 0xe4, 0x7f, 0x97, 0xf6, 0xdf, 0x21, 0xff, 0xcd, 0xf2, 0xef, 0x5f, + 0x47, 0xbb, 0x3a, 0xb7, 0xec, 0x7a, 0x5b, 0xef, 0x4d, 0xdf, 0xff, 0x8e, 0x86, 0x79, 0xe0, 0xe7, 0x6b, 0x2f, 0x77, 0xaf, + 0xa3, 0x5c, 0xf9, 0xfe, 0xf7, 0xf4, 0x6a, 0xc9, 0x58, 0x52, 0xcf, 0xb6, 0xcf, 0xf1, 0x89, 0x29, 0xf3, 0xe6, 0xe5, 0xbf, + 0x7b, 0xfe, 0xb5, 0x6f, 0xe3, 0xcf, 0xcf, 0x7f, 0xe5, 0xd1, 0x7f, 0xc6, 0xd9, 0x21, 0xff, 0x77, 0xd7, 0x72, 0xcb, 0xff, + 0x5d, 0xd7, 0xad, 0xd1, 0xfe, 0x7f, 0xcc, 0xef, 0x40, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x7e, 0x01 }; + +// Font characters rectangles data +static const Rectangle terminalFontRecs[95] = { + { 4, 4, 4 , 16 }, + { 16, 4, 1 , 11 }, + { 25, 4, 3 , 3 }, + { 36, 4, 6 , 11 }, + { 50, 4, 5 , 11 }, + { 63, 4, 5 , 11 }, + { 76, 4, 5 , 11 }, + { 89, 4, 1 , 2 }, + { 98, 4, 2 , 13 }, + { 108, 4, 2 , 13 }, + { 118, 4, 3 , 3 }, + { 129, 4, 5 , 5 }, + { 142, 4, 1 , 3 }, + { 151, 4, 5 , 1 }, + { 164, 4, 1 , 1 }, + { 173, 4, 6 , 12 }, + { 187, 4, 5 , 11 }, + { 200, 4, 2 , 11 }, + { 210, 4, 5 , 11 }, + { 223, 4, 5 , 11 }, + { 236, 4, 5 , 11 }, + { 4, 28, 5 , 11 }, + { 17, 28, 5 , 11 }, + { 30, 28, 5 , 11 }, + { 43, 28, 5 , 11 }, + { 56, 28, 5 , 11 }, + { 69, 28, 1 , 8 }, + { 78, 28, 1 , 10 }, + { 87, 28, 4 , 5 }, + { 99, 28, 5 , 3 }, + { 112, 28, 4 , 5 }, + { 124, 28, 5 , 11 }, + { 137, 28, 11 , 11 }, + { 156, 28, 5 , 11 }, + { 169, 28, 5 , 11 }, + { 182, 28, 5 , 11 }, + { 195, 28, 5 , 11 }, + { 208, 28, 5 , 11 }, + { 221, 28, 5 , 11 }, + { 234, 28, 5 , 11 }, + { 4, 52, 5 , 11 }, + { 17, 52, 1 , 11 }, + { 26, 52, 5 , 11 }, + { 39, 52, 5 , 11 }, + { 52, 52, 5 , 11 }, + { 65, 52, 7 , 11 }, + { 80, 52, 5 , 11 }, + { 93, 52, 5 , 11 }, + { 106, 52, 5 , 11 }, + { 119, 52, 5 , 13 }, + { 132, 52, 5 , 11 }, + { 145, 52, 5 , 11 }, + { 158, 52, 5 , 11 }, + { 171, 52, 5 , 11 }, + { 184, 52, 5 , 11 }, + { 197, 52, 7 , 11 }, + { 212, 52, 5 , 11 }, + { 225, 52, 5 , 11 }, + { 238, 52, 5 , 11 }, + { 4, 76, 2 , 13 }, + { 14, 76, 6 , 12 }, + { 28, 76, 2 , 13 }, + { 38, 76, 5 , 4 }, + { 51, 76, 5 , 1 }, + { 64, 76, 2 , 2 }, + { 74, 76, 5 , 8 }, + { 87, 76, 5 , 11 }, + { 100, 76, 5 , 8 }, + { 113, 76, 5 , 11 }, + { 126, 76, 5 , 8 }, + { 139, 76, 4 , 11 }, + { 151, 76, 5 , 10 }, + { 164, 76, 5 , 11 }, + { 177, 76, 1 , 11 }, + { 186, 76, 1 , 13 }, + { 195, 76, 5 , 11 }, + { 208, 76, 1 , 11 }, + { 217, 76, 7 , 8 }, + { 232, 76, 5 , 8 }, + { 4, 100, 5 , 8 }, + { 17, 100, 5 , 10 }, + { 30, 100, 5 , 10 }, + { 43, 100, 4 , 8 }, + { 55, 100, 5 , 8 }, + { 68, 100, 3 , 11 }, + { 79, 100, 5 , 8 }, + { 92, 100, 5 , 8 }, + { 105, 100, 7 , 8 }, + { 120, 100, 5 , 8 }, + { 133, 100, 5 , 10 }, + { 146, 100, 5 , 8 }, + { 159, 100, 3 , 13 }, + { 170, 100, 1 , 15 }, + { 179, 100, 3 , 13 }, + { 190, 100, 5 , 3 }, +}; + +// Font characters info data +// NOTE: No chars.image data provided +static const GlyphInfo terminalFontChars[95] = { + { 32, 0, 14, 4, { 0 }}, + { 33, 1, 3, 3, { 0 }}, + { 34, 1, 3, 5, { 0 }}, + { 35, 1, 3, 8, { 0 }}, + { 36, 1, 3, 7, { 0 }}, + { 37, 1, 3, 7, { 0 }}, + { 38, 1, 3, 7, { 0 }}, + { 39, 1, 3, 3, { 0 }}, + { 40, 1, 2, 4, { 0 }}, + { 41, 1, 2, 4, { 0 }}, + { 42, 1, 3, 5, { 0 }}, + { 43, 1, 7, 7, { 0 }}, + { 44, 1, 13, 3, { 0 }}, + { 45, 1, 9, 7, { 0 }}, + { 46, 1, 13, 3, { 0 }}, + { 47, 1, 2, 8, { 0 }}, + { 48, 1, 3, 7, { 0 }}, + { 49, 1, 3, 4, { 0 }}, + { 50, 1, 3, 7, { 0 }}, + { 51, 1, 3, 7, { 0 }}, + { 52, 1, 3, 7, { 0 }}, + { 53, 1, 3, 7, { 0 }}, + { 54, 1, 3, 7, { 0 }}, + { 55, 1, 3, 7, { 0 }}, + { 56, 1, 3, 7, { 0 }}, + { 57, 1, 3, 7, { 0 }}, + { 58, 1, 6, 3, { 0 }}, + { 59, 1, 6, 3, { 0 }}, + { 60, 1, 7, 6, { 0 }}, + { 61, 1, 8, 7, { 0 }}, + { 62, 1, 7, 6, { 0 }}, + { 63, 1, 3, 7, { 0 }}, + { 64, 2, 3, 15, { 0 }}, + { 65, 1, 3, 7, { 0 }}, + { 66, 1, 3, 7, { 0 }}, + { 67, 1, 3, 7, { 0 }}, + { 68, 1, 3, 7, { 0 }}, + { 69, 1, 3, 7, { 0 }}, + { 70, 1, 3, 7, { 0 }}, + { 71, 1, 3, 7, { 0 }}, + { 72, 1, 3, 7, { 0 }}, + { 73, 1, 3, 3, { 0 }}, + { 74, 1, 3, 7, { 0 }}, + { 75, 1, 3, 7, { 0 }}, + { 76, 1, 3, 7, { 0 }}, + { 77, 1, 3, 9, { 0 }}, + { 78, 1, 3, 7, { 0 }}, + { 79, 1, 3, 7, { 0 }}, + { 80, 1, 3, 7, { 0 }}, + { 81, 1, 3, 7, { 0 }}, + { 82, 1, 3, 7, { 0 }}, + { 83, 1, 3, 7, { 0 }}, + { 84, 1, 3, 7, { 0 }}, + { 85, 1, 3, 7, { 0 }}, + { 86, 1, 3, 7, { 0 }}, + { 87, 1, 3, 9, { 0 }}, + { 88, 1, 3, 7, { 0 }}, + { 89, 1, 3, 7, { 0 }}, + { 90, 1, 3, 7, { 0 }}, + { 91, 1, 2, 4, { 0 }}, + { 92, 1, 2, 8, { 0 }}, + { 93, 1, 2, 4, { 0 }}, + { 94, 1, 3, 7, { 0 }}, + { 95, 1, 15, 7, { 0 }}, + { 96, 1, 0, 4, { 0 }}, + { 97, 1, 6, 7, { 0 }}, + { 98, 1, 3, 7, { 0 }}, + { 99, 1, 6, 7, { 0 }}, + { 100, 1, 3, 7, { 0 }}, + { 101, 1, 6, 7, { 0 }}, + { 102, 1, 3, 6, { 0 }}, + { 103, 1, 6, 7, { 0 }}, + { 104, 1, 3, 7, { 0 }}, + { 105, 1, 3, 3, { 0 }}, + { 106, 1, 3, 3, { 0 }}, + { 107, 1, 3, 7, { 0 }}, + { 108, 1, 3, 3, { 0 }}, + { 109, 1, 6, 9, { 0 }}, + { 110, 1, 6, 7, { 0 }}, + { 111, 1, 6, 7, { 0 }}, + { 112, 1, 6, 7, { 0 }}, + { 113, 1, 6, 7, { 0 }}, + { 114, 1, 6, 6, { 0 }}, + { 115, 1, 6, 7, { 0 }}, + { 116, 1, 3, 5, { 0 }}, + { 117, 1, 6, 7, { 0 }}, + { 118, 1, 6, 7, { 0 }}, + { 119, 1, 6, 9, { 0 }}, + { 120, 1, 6, 7, { 0 }}, + { 121, 1, 6, 7, { 0 }}, + { 122, 1, 6, 7, { 0 }}, + { 123, 1, 2, 5, { 0 }}, + { 124, 1, 1, 3, { 0 }}, + { 125, 1, 2, 5, { 0 }}, + { 126, 1, 8, 7, { 0 }}, +}; + +// Style loading function: terminal +static void GuiLoadStyleTerminal(void) +{ + // Load style properties provided + // NOTE: Default properties are propagated + for (int i = 0; i < TERMINAL_STYLE_PROPS_COUNT; i++) + { + GuiSetStyle(terminalStyleProps[i].controlId, terminalStyleProps[i].propertyId, terminalStyleProps[i].propertyValue); + } + + // Custom font loading + // NOTE: Compressed font image data (DEFLATE), it requires DecompressData() function + int terminalFontDataSize = 0; + unsigned char *data = DecompressData(terminalFontData, TERMINAL_COMPRESSED_DATA_SIZE, &terminalFontDataSize); + Image imFont = { data, 256, 256, 1, 2 }; + + Font font = { 0 }; + font.baseSize = 16; + font.glyphCount = 95; + + // Load texture from image + font.texture = LoadTextureFromImage(imFont); + UnloadImage(imFont); // Uncompressed data can be unloaded from memory + + // Copy char recs data from global fontRecs + // NOTE: Required to avoid issues if trying to free font + font.recs = (Rectangle *)malloc(font.glyphCount*sizeof(Rectangle)); + memcpy(font.recs, terminalFontRecs, font.glyphCount*sizeof(Rectangle)); + + // Copy font char info data from global fontChars + // NOTE: Required to avoid issues if trying to free font + font.glyphs = (GlyphInfo *)malloc(font.glyphCount*sizeof(GlyphInfo)); + memcpy(font.glyphs, terminalFontChars, font.glyphCount*sizeof(GlyphInfo)); + + GuiSetFont(font); + + // Setup a white rectangle on the font to be used on shapes drawing, + // this way we make sure all gui can be drawn on a single pass because no texture change is required + // NOTE: Setting up this rectangle is a manual process (for the moment) + Rectangle whiteChar = { 63, 4, 2, 2 }; + SetShapesTexture(font.texture, whiteChar); +} diff --git a/examples/text_editor/text_editor.c b/examples/text_editor/text_editor.c index 90de5f7..4534751 100644 --- a/examples/text_editor/text_editor.c +++ b/examples/text_editor/text_editor.c @@ -123,7 +123,7 @@ bool GuiTextEditor(Rectangle bounds, char *text, int textSize, bool editMode) static int selectStartCp = -1; static int selectLengthCp = 0; - GuiControlState state = guiState; + GuiState state = guiState; bool pressed = false; bool textWrap = true; // TODO: Word-Wrap vs Char-Wrap -> textWrapMode { NO_WRAP_LOCK, NO_WRAP_OVERFLOW, CHAR_WRAP, WORD_WRAP } @@ -135,13 +135,13 @@ bool GuiTextEditor(Rectangle bounds, char *text, int textSize, bool editMode) // Update control //-------------------------------------------------------------------- - if ((state != GUI_STATE_DISABLED) && !guiLocked) + if ((state != STATE_DISABLED) && !guiLocked) { Vector2 mousePoint = GetMousePosition(); if (editMode) { - state = GUI_STATE_PRESSED; + state = STATE_PRESSED; framesCounter++; // TODO: Cursor position logic (mouse and keys) @@ -173,7 +173,7 @@ bool GuiTextEditor(Rectangle bounds, char *text, int textSize, bool editMode) { if (CheckCollisionPointRec(mousePoint, bounds)) { - state = GUI_STATE_FOCUSED; + state = STATE_FOCUSED; if (IsMouseButtonPressed(0)) pressed = true; } } @@ -195,8 +195,8 @@ bool GuiTextEditor(Rectangle bounds, char *text, int textSize, bool editMode) //-------------------------------------------------------------------- DrawRectangleLinesEx(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), guiAlpha)); - if (state == GUI_STATE_PRESSED) DrawRectangle(bounds.x + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED)), guiAlpha)); - else if (state == GUI_STATE_DISABLED) DrawRectangle(bounds.x + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED)), guiAlpha)); + if (state == STATE_PRESSED) DrawRectangle(bounds.x + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED)), guiAlpha)); + else if (state == STATE_DISABLED) DrawRectangle(bounds.x + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED)), guiAlpha)); Font font = GetFontDefault(); diff --git a/examples/text_box_selection/textbox_extended_demo.c b/examples/textbox_selection/textbox_selection.c similarity index 99% rename from examples/text_box_selection/textbox_extended_demo.c rename to examples/textbox_selection/textbox_selection.c index 846ee7d..c0c4d18 100644 --- a/examples/text_box_selection/textbox_extended_demo.c +++ b/examples/textbox_selection/textbox_selection.c @@ -166,7 +166,7 @@ int main(int argc, char **argv) } // Convert text to hex representation and draw it on screen - char hex[(((textboxActive == 1) ? SIZEOF(text02) : SIZEOF(text01)) + 1)*3 + 1]; + char *hex = RAYGUI_MALLOC((((textboxActive == 1) ? SIZEOF(text02) : SIZEOF(text01)) + 1)*3 + 1); char *text = (textboxActive == 1) ? text02 : text01; int maxSize = (textboxActive == 1) ? SIZEOF(text02) : SIZEOF(text01); for (int i = 0, j = 0; i < maxSize; ++i, j += 3) sprintf(&hex[j], "%02Xh ", (char)text[i]); @@ -214,6 +214,8 @@ int main(int argc, char **argv) // Draw hexadecimal values viewer DrawTextBoxedSelectable(guiFont, hex, (Rectangle){ 20, 95, 760, 205 }, 20, 1, true, BLACK, startIdx*3, len*3, colorFG, colorBG); + RAYGUI_FREE(hex); + // Draw right-mouse-button-click menu and logic //--------------------------------------------------------------------------------------- if (showMenu) diff --git a/projects/VS2022/examples/custom_file_dialog.vcxproj b/projects/VS2022/examples/custom_file_dialog.vcxproj new file mode 100644 index 0000000..2b8486e --- /dev/null +++ b/projects/VS2022/examples/custom_file_dialog.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A} + Win32Proj + custom_file_dialog + custom_file_dialog + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/image_exporter.vcxproj b/projects/VS2022/examples/image_exporter.vcxproj new file mode 100644 index 0000000..f69e89f --- /dev/null +++ b/projects/VS2022/examples/image_exporter.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {67B2B88C-EA52-403F-A596-5107008C71F2} + Win32Proj + image_exporter + image_exporter + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/image_importer_raw.vcxproj b/projects/VS2022/examples/image_importer_raw.vcxproj new file mode 100644 index 0000000..830fd42 --- /dev/null +++ b/projects/VS2022/examples/image_importer_raw.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {6628D753-270D-418D-A87F-6E2E63B9E3D0} + Win32Proj + image_importer_raw + image_importer_raw + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/portable_window.vcxproj b/projects/VS2022/examples/portable_window.vcxproj new file mode 100644 index 0000000..dbdb2bf --- /dev/null +++ b/projects/VS2022/examples/portable_window.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8} + Win32Proj + portable_window + portable_window + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/property_list.vcxproj b/projects/VS2022/examples/property_list.vcxproj new file mode 100644 index 0000000..186e249 --- /dev/null +++ b/projects/VS2022/examples/property_list.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {D28301C9-C293-4F41-9F58-F2609F33134E} + Win32Proj + property_list + property_list + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/scroll_panel.vcxproj b/projects/VS2022/examples/scroll_panel.vcxproj new file mode 100644 index 0000000..0709ca2 --- /dev/null +++ b/projects/VS2022/examples/scroll_panel.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87} + Win32Proj + scroll_panel + scroll_panel + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/style_selector.vcxproj b/projects/VS2022/examples/style_selector.vcxproj new file mode 100644 index 0000000..d2b80a4 --- /dev/null +++ b/projects/VS2022/examples/style_selector.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430} + Win32Proj + style_selector + style_selector + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsCpp + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsCpp + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/test.props b/projects/VS2022/examples/test.props new file mode 100644 index 0000000..aeaaab6 --- /dev/null +++ b/projects/VS2022/examples/test.props @@ -0,0 +1,27 @@ +# +# Property types: +# b // Bool +# i // Int +# f // Float +# t // Text +# l // Select +# g // Section (Group) +# v2 // Vector 2D +# v3 // Vector 3D +# v4 // Vector 4D +# r // Rectangle +# c // Color +# + +b Bool 0 1 +g #102#SECTION 0 2 +i Int 0 123 0 0 1 +f Float 0 0.990000 0.000000 0.000000 1.000000 3 +t Text 0 Hello! 30 +l Select 0 ONE;TWO;THREE;FOUR 0 +i Int Range 0 32 0 100 1 +r Rect 0 0 0 100 200 +v2 Vec2 0 20.000000 20.000000 +v3 Vec3 0 12.000000 13.000000 14.000000 +v4 Vec4 1 12.000000 13.000000 14.000000 15.000000 +c Color 1 0 255 0 255 diff --git a/projects/VS2022/examples/text_editor.vcxproj b/projects/VS2022/examples/text_editor.vcxproj new file mode 100644 index 0000000..4c83795 --- /dev/null +++ b/projects/VS2022/examples/text_editor.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36} + Win32Proj + text_editor + text_editor + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/examples/textbox_selection.vcxproj b/projects/VS2022/examples/textbox_selection.vcxproj new file mode 100644 index 0000000..16c8d51 --- /dev/null +++ b/projects/VS2022/examples/textbox_selection.vcxproj @@ -0,0 +1,357 @@ + + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {B740AD57-ABF2-4421-96C0-FE220130A873} + Win32Proj + textbox_selection + textbox_selection + 10.0 + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + MultiThreaded + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;PLATFORM_DESKTOP;VERSION_ONE;%(PreprocessorDefinitions) + $(SolutionDir)..\..\src;$(SolutionDir)..\..\src\external;$(SolutionDir)..\..\..\raylib\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raygui.sln b/projects/VS2022/raygui.sln index ba64047..49d33e4 100644 --- a/projects/VS2022/raygui.sln +++ b/projects/VS2022/raygui.sln @@ -7,6 +7,25 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "controls_test_suite", "exam EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_file_dialog", "examples\custom_file_dialog.vcxproj", "{E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image_exporter", "examples\image_exporter.vcxproj", "{67B2B88C-EA52-403F-A596-5107008C71F2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "image_importer_raw", "examples\image_importer_raw.vcxproj", "{6628D753-270D-418D-A87F-6E2E63B9E3D0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portable_window", "examples\portable_window.vcxproj", "{FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "property_list", "examples\property_list.vcxproj", "{D28301C9-C293-4F41-9F58-F2609F33134E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scroll_panel", "examples\scroll_panel.vcxproj", "{56EE93DF-A3AF-4856-A4EC-E27358C6DA87}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_editor", "examples\text_editor.vcxproj", "{AB6D26C4-F5F4-420D-B15B-CE52619A5D36}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{5DC256E9-D698-4D07-8AD7-DFDAE9125DE3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textbox_selection", "examples\textbox_selection.vcxproj", "{B740AD57-ABF2-4421-96C0-FE220130A873}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "style_selector", "examples\style_selector.vcxproj", "{BCF5E746-FDBF-4CAC-9B95-44FE9A498430}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -20,22 +39,6 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 @@ -52,10 +55,182 @@ Global {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x64.ActiveCfg = Debug|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x64.Build.0 = Debug|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x86.ActiveCfg = Debug|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Debug|x86.Build.0 = Debug|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x64.ActiveCfg = Release|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x64.Build.0 = Release|x64 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x86.ActiveCfg = Release|Win32 + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A}.Release|x86.Build.0 = Release|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x64.ActiveCfg = Debug|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x64.Build.0 = Debug|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x86.ActiveCfg = Debug|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Debug|x86.Build.0 = Debug|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x64.ActiveCfg = Release|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x64.Build.0 = Release|x64 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x86.ActiveCfg = Release|Win32 + {67B2B88C-EA52-403F-A596-5107008C71F2}.Release|x86.Build.0 = Release|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x64.ActiveCfg = Debug|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x64.Build.0 = Debug|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x86.ActiveCfg = Debug|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Debug|x86.Build.0 = Debug|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x64.ActiveCfg = Release|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x64.Build.0 = Release|x64 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x86.ActiveCfg = Release|Win32 + {6628D753-270D-418D-A87F-6E2E63B9E3D0}.Release|x86.Build.0 = Release|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x64.ActiveCfg = Debug|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x64.Build.0 = Debug|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x86.ActiveCfg = Debug|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Debug|x86.Build.0 = Debug|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x64.ActiveCfg = Release|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x64.Build.0 = Release|x64 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x86.ActiveCfg = Release|Win32 + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8}.Release|x86.Build.0 = Release|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x64.ActiveCfg = Debug|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x64.Build.0 = Debug|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x86.ActiveCfg = Debug|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Debug|x86.Build.0 = Debug|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x64.ActiveCfg = Release|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x64.Build.0 = Release|x64 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x86.ActiveCfg = Release|Win32 + {D28301C9-C293-4F41-9F58-F2609F33134E}.Release|x86.Build.0 = Release|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x64.ActiveCfg = Debug|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x64.Build.0 = Debug|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x86.ActiveCfg = Debug|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Debug|x86.Build.0 = Debug|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x64.ActiveCfg = Release|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x64.Build.0 = Release|x64 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x86.ActiveCfg = Release|Win32 + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87}.Release|x86.Build.0 = Release|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug|x64.ActiveCfg = Debug|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug|x64.Build.0 = Debug|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug|x86.ActiveCfg = Debug|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Debug|x86.Build.0 = Debug|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release|x64.ActiveCfg = Release|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release|x64.Build.0 = Release|x64 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release|x86.ActiveCfg = Release|Win32 + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36}.Release|x86.Build.0 = Release|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug|x64.ActiveCfg = Debug|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug|x64.Build.0 = Debug|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug|x86.ActiveCfg = Debug|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Debug|x86.Build.0 = Debug|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release|x64.ActiveCfg = Release|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release|x64.Build.0 = Release|x64 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release|x86.ActiveCfg = Release|Win32 + {B740AD57-ABF2-4421-96C0-FE220130A873}.Release|x86.Build.0 = Release|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x64.ActiveCfg = Debug|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x64.Build.0 = Debug|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x86.ActiveCfg = Debug|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Debug|x86.Build.0 = Debug|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x64.ActiveCfg = Release|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x64.Build.0 = Release|x64 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x86.ActiveCfg = Release|Win32 + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {E1CF5310-BCF6-4063-861D-EDFF65D9FE2A} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {67B2B88C-EA52-403F-A596-5107008C71F2} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {6628D753-270D-418D-A87F-6E2E63B9E3D0} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {FFDA97F5-4BAF-410A-AE87-0C8E3CB8C0D8} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {D28301C9-C293-4F41-9F58-F2609F33134E} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {56EE93DF-A3AF-4856-A4EC-E27358C6DA87} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {AB6D26C4-F5F4-420D-B15B-CE52619A5D36} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {B740AD57-ABF2-4421-96C0-FE220130A873} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + {BCF5E746-FDBF-4CAC-9B95-44FE9A498430} = {5DC256E9-D698-4D07-8AD7-DFDAE9125DE3} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} EndGlobalSection diff --git a/src/extras/gui_textbox_extended.h b/src/extras/gui_textbox_extended.h index 470127e..d8d0f06 100644 --- a/src/extras/gui_textbox_extended.h +++ b/src/extras/gui_textbox_extended.h @@ -548,7 +548,7 @@ RAYGUIAPI bool GuiTextBoxEx(Rectangle bounds, char *text, int textSize, bool edi static int framesCounter = 0; // Required for blinking cursor - GuiControlState state = guiState; + GuiState state = guiState; bool pressed = false; // Make sure length doesn't exceed `textSize`. `textSize` is actually the max amount of characters the textbox can handle. @@ -588,7 +588,7 @@ RAYGUIAPI bool GuiTextBoxEx(Rectangle bounds, char *text, int textSize, bool edi // Update control //-------------------------------------------------------------------- - if ((state != GUI_STATE_DISABLED) && !guiLocked) + if ((state != STATE_DISABLED) && !guiLocked) { Vector2 mousePoint = GetMousePosition(); @@ -615,7 +615,7 @@ RAYGUIAPI bool GuiTextBoxEx(Rectangle bounds, char *text, int textSize, bool edi if (active) { - state = GUI_STATE_PRESSED; + state = STATE_PRESSED; framesCounter++; // Make sure state doesn't have invalid values @@ -910,7 +910,7 @@ RAYGUIAPI bool GuiTextBoxEx(Rectangle bounds, char *text, int textSize, bool edi } else selStart = selStart - guiTextBoxState.start; } - else state = GUI_STATE_FOCUSED; + else state = STATE_FOCUSED; if (IsKeyPressed(KEY_ENTER) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(0))) pressed = true; } @@ -941,7 +941,7 @@ RAYGUIAPI bool GuiTextBoxEx(Rectangle bounds, char *text, int textSize, bool edi if (CheckCollisionPointRec(mousePoint, bounds)) { - state = GUI_STATE_FOCUSED; + state = STATE_FOCUSED; if (IsMouseButtonPressed(0)) pressed = true; } @@ -954,7 +954,7 @@ RAYGUIAPI bool GuiTextBoxEx(Rectangle bounds, char *text, int textSize, bool edi //-------------------------------------------------------------------- DrawRectangleLinesEx(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), guiAlpha)); - if (state == GUI_STATE_PRESSED) + if (state == STATE_PRESSED) { DrawRectangle(bounds.x + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_FOCUSED)), guiAlpha)); @@ -964,7 +964,7 @@ RAYGUIAPI bool GuiTextBoxEx(Rectangle bounds, char *text, int textSize, bool edi DrawRectangle(cursorPos.x, cursorPos.y-1, 1, GuiGetStyle(DEFAULT, TEXT_SIZE)+2, Fade(GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED)), guiAlpha)); } } - else if (state == GUI_STATE_DISABLED) + else if (state == STATE_DISABLED) { DrawRectangle(bounds.x + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), bounds.height - 2*GuiGetStyle(TEXTBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED)), guiAlpha)); }