├── .gitattributes ├── .github └── FUNDING.yml ├── .gitignore ├── HISTORY.md ├── LICENSE ├── README.md ├── examples ├── Makefile ├── animation_curve │ ├── animation_curve.c │ └── gui_curve_editor.h ├── controls_test_suite │ ├── controls_test_suite.c │ ├── controls_test_suite.png │ └── gui_value_box_float.c ├── custom_file_dialog │ ├── cat.png │ ├── custom_file_dialog.c │ └── gui_window_file_dialog.h ├── custom_input_box │ └── custom_input_box.c ├── custom_sliders │ └── custom_sliders.c ├── floating_window │ └── floating_window.c ├── image_exporter │ ├── image_exporter.c │ └── resources │ │ ├── cat.png │ │ ├── fudesumi.png │ │ ├── parrots.png │ │ └── scarfy.png ├── image_importer_raw │ ├── design │ │ ├── raw_importer_REF.png │ │ ├── raw_importer_REV0.png │ │ ├── raw_importer_REV1.png │ │ ├── raw_importer_REV2.png │ │ ├── raw_importer_REV3.png │ │ ├── raw_importer_REV4.png │ │ └── raw_importer_REV5.png │ ├── image_2x2_RGBA.raw │ └── image_importer_raw.c ├── portable_window │ └── portable_window.c ├── property_list │ ├── dm_property_list.h │ ├── property_list.c │ └── test.props ├── raygui.ico ├── raygui.rc ├── scroll_panel │ └── scroll_panel.c ├── standalone │ ├── raygui_custom_backend.h │ └── raygui_standalone.c ├── style_selector │ └── style_selector.c └── styles │ ├── style_amber.h │ ├── style_ashes.h │ ├── style_bluish.h │ ├── style_candy.h │ ├── style_cherry.h │ ├── style_cyber.h │ ├── style_dark.h │ ├── style_enefete.h │ ├── style_jungle.h │ ├── style_lavanda.h │ ├── style_sunny.h │ └── style_terminal.h ├── icons ├── raygui_icons.h ├── raygui_icons.png └── raygui_icons.rgi ├── images ├── raygui_controls_panel.png ├── raygui_ricons.png ├── raygui_style_table_multi.png ├── rguiicons_v100.png ├── rguilayout_v220.png ├── rguistyler_v210.png └── rguistyler_v300.png ├── logo ├── raygui.ico ├── raygui_128x128.png ├── raygui_16x16.png ├── raygui_24x24.png ├── raygui_256x256.png ├── raygui_32x32.png ├── raygui_48x48.png ├── raygui_512x512.png ├── raygui_64x64.png └── raygui_96x96.png ├── projects ├── CMake │ ├── CMakeLists.txt │ ├── README.md │ └── cmake │ │ └── FindRaylib.cmake └── VS2022 │ ├── examples │ ├── animation_curve.vcxproj │ ├── controls_test_suite.vcxproj │ ├── custom_file_dialog.vcxproj │ ├── image_exporter.vcxproj │ ├── image_importer_raw.vcxproj │ ├── portable_window.vcxproj │ ├── property_list.vcxproj │ ├── scroll_panel.vcxproj │ ├── style_selector.vcxproj │ └── test.props │ ├── raygui.sln │ └── raylib │ └── raylib.vcxproj ├── src └── raygui.h └── styles ├── README.md ├── amber ├── README.md ├── hello-world.ttf ├── screenshot.old.png ├── screenshot.png ├── style_amber.h ├── style_amber.png └── style_amber.rgs ├── ashes ├── README.md ├── charset.txt ├── font_readme.txt ├── screenshot.old.png ├── screenshot.png ├── style_ashes.h ├── style_ashes.png ├── style_ashes.rgs ├── style_ashes.txt.rgs └── v5loxical.ttf ├── bluish ├── README.md ├── charset.txt ├── font_readme.txt ├── homespun.ttf ├── screenshot.old.png ├── screenshot.png ├── style_bluish.h ├── style_bluish.png ├── style_bluish.rgs └── style_bluish.txt.rgs ├── candy ├── README.md ├── charset.txt ├── font_readme.txt ├── screenshot.old.png ├── screenshot.png ├── style_candy.h ├── style_candy.png ├── style_candy.rgs ├── style_candy.txt.rgs └── v5easter.ttf ├── cherry ├── README.md ├── Westington.ttf ├── charset.txt ├── screenshot.old.png ├── screenshot.png ├── style_cherry.h ├── style_cherry.png ├── style_cherry.rgs └── style_cherry.txt.rgs ├── cyber ├── Kyrou7Wide.ttf ├── README.md ├── charset.txt ├── font_readme.txt ├── screenshot.old.png ├── screenshot.png ├── style_cyber.h ├── style_cyber.png ├── style_cyber.rgs └── style_cyber.txt.rgs ├── dark ├── PixelOperator.ttf ├── README.md ├── charset.txt ├── font_LICENSE.txt ├── screenshot.old.png ├── screenshot.png ├── style_dark.h ├── style_dark.png ├── style_dark.rgs └── style_dark.txt.rgs ├── default ├── README.md ├── charset.txt ├── screenshot.old.png ├── screenshot.png ├── style_default.png └── style_default.txt.rgs ├── enefete ├── GenericMobileSystemNuevo.ttf ├── README.md ├── charset.txt ├── font_LICENSE.txt ├── screenshot.old.png ├── screenshot.png ├── style_enefete.h ├── style_enefete.png ├── style_enefete.rgs └── style_enefete.txt.rgs ├── genesis ├── PixelOperator.ttf ├── font_LICENSE.txt ├── screenshot.png ├── style_genesis.h ├── style_genesis.png └── style_genesis.rgs ├── jungle ├── PixelIntv.otf ├── README.md ├── charset.txt ├── font_readme.txt ├── screenshot.old.png ├── screenshot.png ├── style_jungle.h ├── style_jungle.png ├── style_jungle.rgs └── style_jungle.txt.rgs ├── lavanda ├── Cartridge.ttf ├── README.md ├── charset.txt ├── font_readme.txt ├── screenshot.old.png ├── screenshot.png ├── style_lavanda.h ├── style_lavanda.png ├── style_lavanda.rgs └── style_lavanda.txt.rgs ├── rltech ├── 2a03_memesbruh03.ttf ├── font_readme.txt ├── screenshot.old.png ├── screenshot.png ├── style_rltech.h ├── style_rltech.png └── style_rltech.rgs ├── sunny ├── GenericMobileSystemNuevo.ttf ├── README.md ├── charset.txt ├── font_LICENSE.txt ├── screenshot.old.png ├── screenshot.png ├── style_sunny.h ├── style_sunny.png ├── style_sunny.rgs └── style_sunny.txt.rgs └── terminal ├── Mecha.ttf ├── README.md ├── charset.txt ├── screenshot.old.png ├── screenshot.png ├── style_terminal.h ├── style_terminal.png ├── style_terminal.rgs └── style_terminal.txt.rgs /.gitattributes: -------------------------------------------------------------------------------- 1 | *.h linguist-language=C 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: raysan5 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Object files 2 | *.o 3 | *.ko 4 | *.obj 5 | *.elf 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Libraries 12 | *.lib 13 | *.a 14 | *.la 15 | *.lo 16 | 17 | # Shared objects (inc. Windows DLLs) 18 | *.dll 19 | *.so 20 | *.so.* 21 | *.dylib 22 | 23 | # Executables 24 | *.exe 25 | *.out 26 | *.app 27 | *.i*86 28 | *.x86_64 29 | *.hex 30 | 31 | # Debug files 32 | *.dSYM/ 33 | *.su 34 | 35 | # VSCode files 36 | .vscode/ 37 | 38 | 39 | # Ignore files build by Visual Studio 40 | [Dd]ebug 41 | [Rr]elease 42 | *.vs 43 | *.obj 44 | *.pdb 45 | *.aps 46 | *.user 47 | # *.vcproj 48 | # *.vcxproj* 49 | # *.sln 50 | *.vspscc 51 | *_i.c 52 | *.i 53 | *.icf 54 | *_p.c 55 | *.ncb 56 | *.suo 57 | *.tlb 58 | *.tlh 59 | *.bak 60 | *.cache 61 | *.ilk 62 | *.log 63 | 64 | build -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | ## raygui history 2 | 3 | raygui development started on December 2014 by two internship students (Kevin and Daniel) guided by me, objective was creating a simple and easy-to-use immediate-mode-gui module for raylib, intended for tools development. On June 2015, library was mostly functional (including basic controls) and we started working in the styling posibilities for the library, focusing on an easy way to style controls properties. Consequently, development of [rGuiStyler](https://raylibtech.itch.io/rguistyler) also started at that point... but resources were quite limited and project was stopped for several months, most of the time was invested in [raylib](https://github.com/raysan5/raylib) development. 4 | 5 | On June 2016, project was picked up again and raygui 1.0 was released by the end of that month. During August 2016, raygui was used to develop [rFXGen](https://github.com/raysan5/rfxgen) and also an early protoype of [rGuiLayout](https://raylibtech.itch.io/rguilayout), those tools were a testbed for the library. By the end of 2016, raygui project development was stopped again for several months. 6 | 7 | On June 2017, a complete redesign of the library started, almost from scratch, all functions were reviewed and mostly rewritten and a brand new styling system was developed. The objective was using raygui professionally in several tools. It was the beginning of raygui 2.0. 8 | 9 | On January 2018, two students (Adria and Jordi) started working on raygui and related tools; library evolved considerably in the following months. [rGuiStyler](https://raylibtech.itch.io/rguistyler) was completely redesigned and rewritten from scratch (rGuiStyler v2.0). [rGuiLayout](https://raylibtech.itch.io/rguilayout) turned from a protoype into a professional software and raygui reached version 2.0 with plenty of new controls and features. 10 | 11 | On July 2018, I started working full time on raygui and its tools, improving the library considerably. On October 2018 [Sergio](https://github.com/anidealgift) joined the project and focused efforts on [rGuiLayout](https://raylibtech.itch.io/rguilayout) tool redesign. We reached 2019 with continuous improvement and redesigns of mostly all raygui functions along rGuiLayout 2.0 and rGuiStyler 3.0. 12 | 13 | On March 2019, the first set of new raygui tools was published: [rFXGen 2.0](https://raylibtech.itch.io/rfxgen), [rTexViewer 1.0](https://raylibtech.itch.io/rtexviewer) and [rIconPacker 1.0](https://raylibtech.itch.io/riconpacker). 14 | 15 | From March 2019 to June 2019 raygui development decelerated, Sergio left the project and efforts were focused on raylib 2.5, during this time one external contributor, [Vlad Adrian](https://github.com/Demizdor), completely redesigned `GuiTextBox()` and related controls and version was bumped to raygui 2.5. 16 | 17 | During summer 2019 lots of raygui functions were reviewed, breaking compatibility to any previous version and pointing to a **raygui 2.6** update. 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | zlib License 2 | 3 | Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) 4 | 5 | This software is provided "as-is", without any express or implied warranty. In no event 6 | will the authors be held liable for any damages arising from the use of this software. 7 | 8 | Permission is granted to anyone to use this software for any purpose, including commercial 9 | applications, and to alter it and redistribute it freely, subject to the following restrictions: 10 | 11 | 1. The origin of this software must not be misrepresented; you must not claim that you 12 | wrote the original software. If you use this software in a product, an acknowledgment 13 | in the product documentation would be appreciated but is not required. 14 | 15 | 2. Altered source versions must be plainly marked as such, and must not be misrepresented 16 | as being the original software. 17 | 18 | 3. This notice may not be removed or altered from any source distribution. 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | **raygui is a simple and easy-to-use immediate-mode-gui library.** 4 | 5 | `raygui` was originally inspired by [Unity IMGUI](https://docs.unity3d.com/Manual/GUIScriptingGuide.html) (immediate mode GUI API). 6 | 7 | `raygui` was designed as an auxiliary module for [raylib](https://github.com/raysan5/raylib) to create simple GUI interfaces using raylib graphic style (simple colors, plain rectangular shapes, wide borders...) but it can be adapted to other engines/frameworks. 8 | 9 | `raygui` is intended for **tools development**; it has already been used to develop [multiple published tools](https://raylibtech.itch.io). 10 | 11 |
12 | 13 | **WARNING: Latest `raygui` from master branch is always aligned with latest `raylib` from master branch. Make sure to use the appropriate versions.** 14 | 15 | **WARNING: Latest `raygui 4.0` is an API-BREAKING redesign from previous versions (3.x), now all functions are more consistent and coherent, you can read the details about this breaking change in issue [283](https://github.com/raysan5/raygui/issues/283)** 16 | 17 | *NOTE: raygui is a single-file header-only library (despite its internal dependency on raylib), so, functions definition AND implementation reside in the same file `raygui.h`, when including `raygui.h` in a module, `RAYGUI_IMPLEMENTATION` must be previously defined to include the implementation part of `raygui.h` BUT only in one compilation unit, other modules could also include `raygui.h` but `RAYGUI_IMPLEMENTATION` must not be defined again.* 18 | 19 | ## features 20 | 21 | - **Immediate-mode gui, no retained data** 22 | - **+25** controls provided (basic and advanced) 23 | - Powerful **styling system** for colors, font and metrics 24 | - Standalone usage mode supported (for other graphic libs) 25 | - **Icons support**, embedding a complete 1-bit icons pack 26 | - Multiple **tools** provided for raygui development 27 | 28 | ## code sample 29 | ```c 30 | #include "raylib.h" 31 | 32 | #define RAYGUI_IMPLEMENTATION 33 | #include "raygui.h" 34 | 35 | int main() 36 | { 37 | InitWindow(400, 200, "raygui - controls test suite"); 38 | SetTargetFPS(60); 39 | 40 | bool showMessageBox = false; 41 | 42 | while (!WindowShouldClose()) 43 | { 44 | // Draw 45 | //---------------------------------------------------------------------------------- 46 | BeginDrawing(); 47 | ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); 48 | 49 | if (GuiButton((Rectangle){ 24, 24, 120, 30 }, "#191#Show Message")) showMessageBox = true; 50 | 51 | if (showMessageBox) 52 | { 53 | int result = GuiMessageBox((Rectangle){ 85, 70, 250, 100 }, 54 | "#191#Message Box", "Hi! This is a message!", "Nice;Cool"); 55 | 56 | if (result >= 0) showMessageBox = false; 57 | } 58 | 59 | EndDrawing(); 60 | } 61 | 62 | CloseWindow(); 63 | return 0; 64 | } 65 | ``` 66 | ![screenshot000](https://github.com/raysan5/raygui/assets/5766837/170e2bce-b7ca-49dc-a263-32b673376546) 67 | 68 | ## raygui controls 69 | 70 | ### basic controls 71 | ``` 72 | Label | Button | LabelButton | Toggle | ToggleGroup | ToggleSlider 73 | CheckBox | ComboBox | DropdownBox | TextBox | ValueBox | Spinner 74 | Slider | SliderBar | ProgressBar | StatusBar | DummyRec | Grid 75 | ``` 76 | ### container/separator controls 77 | ``` 78 | WindowBox | GroupBox | Line | Panel | ScrollPanel | TabBar 79 | ``` 80 | ### advanced controls 81 | ``` 82 | ListView | ColorPicker | MessageBox | TextInputBox 83 | ``` 84 | 85 | 86 | ## raygui styles 87 | 88 | `raygui` comes with a [default](styles/default) style automatically loaded at runtime: 89 | 90 | ![raygui default style](styles/default/style_default.png) 91 | 92 | Some additional styles are also provided for convenience, just check [styles directory](styles) for details: 93 | 94 | ![raygui additional styles](images/raygui_style_table_multi.png) 95 | 96 | Custom styles can also be created very easily using [rGuiStyler](https://raylibtech.itch.io/rguistyler) tool. 97 | 98 | Styles can be loaded at runtime using raygui `GuiLoadStyle()` function. Simple and easy-to-use. 99 | 100 | ## raygui icons 101 | 102 | `raygui` supports custom icons, by default, a predefined set of icons is provided inside `raygui` as an array of binary data; it contains **256 possible icons** defined as **16x16 pixels** each; each pixel is codified using **1-bit**. The total size of the array is `2048 bytes`. 103 | 104 | 105 | 106 | To use any of those icons just prefix the *#iconId#* number to **any text** written within `raygui` controls: 107 | ```c 108 | if (GuiButton(rec, "#05#Open Image")) { /* ACTION */ } 109 | ``` 110 | It's also possible to use the provided `GuiIconText()` function to prefix it automatically, using a clearer identifier (defined in `raygui.h`). 111 | ```c 112 | if (GuiButton(rec, GuiIconText(RICON_FILE_OPEN, "Open Image"))) { /* ACTION */ } 113 | ``` 114 | Provided set of icons can be reviewed and customized using [rGuiIcons](https://raylibtech.itch.io/rguiicons) tool. 115 | 116 | ## raygui support tools 117 | 118 | - [**rGuiStyler**](https://raylibtech.itch.io/rguistyler) - A simple and easy-to-use raygui styles editor. 119 | 120 | ![rGuiStyler v3.1](images/rguistyler_v300.png) 121 | 122 | - [**rGuiIcons**](https://raylibtech.itch.io/rguiicons) - A simple and easy-to-use raygui icons editor. 123 | 124 | ![rGuiIcons v1.0](images/rguiicons_v100.png) 125 | 126 | - [**rGuiLayout**](https://raylibtech.itch.io/rguilayout) - A simple and easy-to-use raygui layouts editor. 127 | 128 | ![rGuiLayout v2.2](images/rguilayout_v220.png) 129 | 130 | ## building 131 | 132 | `raygui` is intended to be used as a portable single-file header-only library, to be directly integrated into any C/C++ codebase but some users could require a shared/dynamic version of the library, for example, to create bindings: 133 | 134 | - **Windows (MinGW, GCC)** 135 | ``` 136 | copy src/raygui.h src/raygui.c 137 | gcc -o src/raygui.dll src/raygui.c -shared -DRAYGUI_IMPLEMENTATION -DBUILD_LIBTYPE_SHARED -static-libgcc -lopengl32 -lgdi32 -lwinmm -Wl,--out-implib,src/librayguidll.a 138 | ``` 139 | 140 | - **Windows (MSVC)** 141 | ``` 142 | copy src\raygui.h src\raygui.c 143 | cl /O2 /I../raylib/src/ /D_USRDLL /D_WINDLL /DRAYGUI_IMPLEMENTATION /DBUILD_LIBTYPE_SHARED src/raygui.c /LD /Feraygui.dll /link /LIBPATH ../raylib/build/raylib/Release/raylib.lib /subsystem:windows /machine:x64 144 | ``` 145 | 146 | - **Linux (GCC)** 147 | ``` 148 | mv src/raygui.h src/raygui.c 149 | gcc -o raygui.so src/raygui.c -shared -fpic -DRAYGUI_IMPLEMENTATION -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 150 | mv src/raygui.c src/raygui.h 151 | ``` 152 | 153 | - **Mac (clang, homebrew installed raylib)** 154 | ``` 155 | cp src/raygui.h src/raygui.c 156 | brew install raylib 157 | gcc -o raygui.dynlib src/raygui.c -shared -fpic -DRAYGUI_IMPLEMENTATION -framework OpenGL -lm -lpthread -ldl $(pkg-config --libs --cflags raylib) 158 | ``` 159 | 160 | 161 | ## license 162 | 163 | raygui is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE](LICENSE) for further details. 164 | -------------------------------------------------------------------------------- /examples/controls_test_suite/controls_test_suite.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - controls test suite 4 | * 5 | * TEST CONTROLS: 6 | * - GuiDropdownBox() 7 | * - GuiCheckBox() 8 | * - GuiSpinner() 9 | * - GuiValueBox() 10 | * - GuiTextBox() 11 | * - GuiButton() 12 | * - GuiComboBox() 13 | * - GuiListView() 14 | * - GuiToggleGroup() 15 | * - GuiColorPicker() 16 | * - GuiSlider() 17 | * - GuiSliderBar() 18 | * - GuiProgressBar() 19 | * - GuiColorBarAlpha() 20 | * - GuiScrollPanel() 21 | * 22 | * 23 | * DEPENDENCIES: 24 | * raylib 4.5 - Windowing/input management and drawing 25 | * raygui 3.5 - Immediate-mode GUI controls with custom styling and icons 26 | * 27 | * COMPILATION (Windows - MinGW): 28 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 29 | * 30 | * LICENSE: zlib/libpng 31 | * 32 | * Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) 33 | * 34 | **********************************************************************************************/ 35 | 36 | #include "raylib.h" 37 | 38 | //#define RAYGUI_DEBUG_RECS_BOUNDS 39 | //#define RAYGUI_DEBUG_TEXT_BOUNDS 40 | 41 | #define RAYGUI_IMPLEMENTATION 42 | //#define RAYGUI_CUSTOM_ICONS // It requires providing gui_icons.h in the same directory 43 | //#include "gui_icons.h" // External icons data provided, it can be generated with rGuiIcons tool 44 | #include "../../src/raygui.h" 45 | 46 | // raygui embedded styles 47 | #include "../styles/style_cyber.h" // raygui style: cyber 48 | #include "../styles/style_jungle.h" // raygui style: jungle 49 | #include "../styles/style_lavanda.h" // raygui style: lavanda 50 | #include "../styles/style_dark.h" // raygui style: dark 51 | #include "../styles/style_bluish.h" // raygui style: bluish 52 | #include "../styles/style_terminal.h" // raygui style: terminal 53 | #include "../styles/style_candy.h" 54 | #include "../styles/style_cherry.h" 55 | #include "../styles/style_ashes.h" 56 | #include "../styles/style_enefete.h" 57 | #include "../styles/style_sunny.h" 58 | #include "../styles/style_amber.h" 59 | 60 | //------------------------------------------------------------------------------------ 61 | // Program main entry point 62 | //------------------------------------------------------------------------------------ 63 | int main() 64 | { 65 | // Initialization 66 | //--------------------------------------------------------------------------------------- 67 | const int screenWidth = 960; 68 | const int screenHeight = 560; 69 | 70 | InitWindow(screenWidth, screenHeight, "raygui - controls test suite"); 71 | SetExitKey(0); 72 | 73 | // GUI controls initialization 74 | //---------------------------------------------------------------------------------- 75 | int dropdownBox000Active = 0; 76 | bool dropDown000EditMode = false; 77 | 78 | int dropdownBox001Active = 0; 79 | bool dropDown001EditMode = false; 80 | 81 | int spinner001Value = 0; 82 | bool spinnerEditMode = false; 83 | 84 | int valueBox002Value = 0; 85 | bool valueBoxEditMode = false; 86 | 87 | char textBoxText[64] = "Text box"; 88 | bool textBoxEditMode = false; 89 | 90 | char textBoxMultiText[1024] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n\nThisisastringlongerthanexpectedwithoutspacestotestcharbreaksforthosecases,checkingifworkingasexpected.\n\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; 91 | bool textBoxMultiEditMode = false; 92 | 93 | int listViewScrollIndex = 0; 94 | int listViewActive = -1; 95 | 96 | int listViewExScrollIndex = 0; 97 | int listViewExActive = 2; 98 | int listViewExFocus = -1; 99 | const char *listViewExList[8] = { "This", "is", "a", "list view", "with", "disable", "elements", "amazing!" }; 100 | 101 | Color colorPickerValue = RED; 102 | 103 | float sliderValue = 50.0f; 104 | float sliderBarValue = 60; 105 | float progressValue = 0.1f; 106 | 107 | bool forceSquaredChecked = false; 108 | 109 | float alphaValue = 0.5f; 110 | 111 | //int comboBoxActive = 1; 112 | int visualStyleActive = 0; 113 | int prevVisualStyleActive = 0; 114 | 115 | int toggleGroupActive = 0; 116 | int toggleSliderActive = 0; 117 | 118 | Vector2 viewScroll = { 0, 0 }; 119 | //---------------------------------------------------------------------------------- 120 | 121 | // Custom GUI font loading 122 | //Font font = LoadFontEx("fonts/rainyhearts16.ttf", 12, 0, 0); 123 | //GuiSetFont(font); 124 | 125 | bool exitWindow = false; 126 | bool showMessageBox = false; 127 | 128 | char textInput[256] = { 0 }; 129 | char textInputFileName[256] = { 0 }; 130 | bool showTextInputBox = false; 131 | 132 | float alpha = 1.0f; 133 | 134 | // DEBUG: Testing how those two properties affect all controls! 135 | //GuiSetStyle(DEFAULT, TEXT_PADDING, 0); 136 | //GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); 137 | 138 | SetTargetFPS(60); 139 | //-------------------------------------------------------------------------------------- 140 | 141 | // Main game loop 142 | while (!exitWindow) // Detect window close button or ESC key 143 | { 144 | // Update 145 | //---------------------------------------------------------------------------------- 146 | exitWindow = WindowShouldClose(); 147 | 148 | if (IsKeyPressed(KEY_ESCAPE)) showMessageBox = !showMessageBox; 149 | 150 | if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_S)) showTextInputBox = true; 151 | 152 | if (IsFileDropped()) 153 | { 154 | FilePathList droppedFiles = LoadDroppedFiles(); 155 | 156 | if ((droppedFiles.count > 0) && IsFileExtension(droppedFiles.paths[0], ".rgs")) GuiLoadStyle(droppedFiles.paths[0]); 157 | 158 | UnloadDroppedFiles(droppedFiles); // Clear internal buffers 159 | } 160 | 161 | //alpha -= 0.002f; 162 | if (alpha < 0.0f) alpha = 0.0f; 163 | if (IsKeyPressed(KEY_SPACE)) alpha = 1.0f; 164 | 165 | GuiSetAlpha(alpha); 166 | 167 | //progressValue += 0.002f; 168 | if (IsKeyPressed(KEY_LEFT)) progressValue -= 0.1f; 169 | else if (IsKeyPressed(KEY_RIGHT)) progressValue += 0.1f; 170 | if (progressValue > 1.0f) progressValue = 1.0f; 171 | else if (progressValue < 0.0f) progressValue = 0.0f; 172 | 173 | if (visualStyleActive != prevVisualStyleActive) 174 | { 175 | GuiLoadStyleDefault(); 176 | 177 | switch (visualStyleActive) 178 | { 179 | case 0: break; // Default style 180 | case 1: GuiLoadStyleJungle(); break; 181 | case 2: GuiLoadStyleLavanda(); break; 182 | case 3: GuiLoadStyleDark(); break; 183 | case 4: GuiLoadStyleBluish(); break; 184 | case 5: GuiLoadStyleCyber(); break; 185 | case 6: GuiLoadStyleTerminal(); break; 186 | case 7: GuiLoadStyleCandy(); break; 187 | case 8: GuiLoadStyleCherry(); break; 188 | case 9: GuiLoadStyleAshes(); break; 189 | case 10: GuiLoadStyleEnefete(); break; 190 | case 11: GuiLoadStyleSunny(); break; 191 | case 12: GuiLoadStyleAmber(); break; 192 | default: break; 193 | } 194 | 195 | GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); 196 | 197 | prevVisualStyleActive = visualStyleActive; 198 | } 199 | //---------------------------------------------------------------------------------- 200 | 201 | // Draw 202 | //---------------------------------------------------------------------------------- 203 | BeginDrawing(); 204 | 205 | ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); 206 | 207 | // raygui: controls drawing 208 | //---------------------------------------------------------------------------------- 209 | // Check all possible events that require GuiLock 210 | if (dropDown000EditMode || dropDown001EditMode) GuiLock(); 211 | 212 | // First GUI column 213 | //GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); 214 | GuiCheckBox((Rectangle){ 25, 108, 15, 15 }, "FORCE CHECK!", &forceSquaredChecked); 215 | 216 | GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); 217 | //GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); 218 | if (GuiSpinner((Rectangle){ 25, 135, 125, 30 }, NULL, &spinner001Value, 0, 100, spinnerEditMode)) spinnerEditMode = !spinnerEditMode; 219 | if (GuiValueBox((Rectangle){ 25, 175, 125, 30 }, NULL, &valueBox002Value, 0, 100, valueBoxEditMode)) valueBoxEditMode = !valueBoxEditMode; 220 | GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); 221 | if (GuiTextBox((Rectangle){ 25, 215, 125, 30 }, textBoxText, 64, textBoxEditMode)) textBoxEditMode = !textBoxEditMode; 222 | 223 | GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); 224 | 225 | if (GuiButton((Rectangle){ 25, 255, 125, 30 }, GuiIconText(ICON_FILE_SAVE, "Save File"))) showTextInputBox = true; 226 | 227 | GuiGroupBox((Rectangle){ 25, 310, 125, 150 }, "STATES"); 228 | //GuiLock(); 229 | GuiSetState(STATE_NORMAL); if (GuiButton((Rectangle){ 30, 320, 115, 30 }, "NORMAL")) { } 230 | GuiSetState(STATE_FOCUSED); if (GuiButton((Rectangle){ 30, 355, 115, 30 }, "FOCUSED")) { } 231 | GuiSetState(STATE_PRESSED); if (GuiButton((Rectangle){ 30, 390, 115, 30 }, "#15#PRESSED")) { } 232 | GuiSetState(STATE_DISABLED); if (GuiButton((Rectangle){ 30, 425, 115, 30 }, "DISABLED")) { } 233 | GuiSetState(STATE_NORMAL); 234 | //GuiUnlock(); 235 | 236 | GuiComboBox((Rectangle){ 25, 480, 125, 30 }, "default;Jungle;Lavanda;Dark;Bluish;Cyber;Terminal;Candy;Cherry;Ashes;Enefete;Sunny;Amber", &visualStyleActive); 237 | 238 | // NOTE: GuiDropdownBox must draw after any other control that can be covered on unfolding 239 | GuiUnlock(); 240 | GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 4); 241 | GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); 242 | if (GuiDropdownBox((Rectangle){ 25, 65, 125, 30 }, "#01#ONE;#02#TWO;#03#THREE;#04#FOUR", &dropdownBox001Active, dropDown001EditMode)) dropDown001EditMode = !dropDown001EditMode; 243 | GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); 244 | GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); 245 | 246 | if (GuiDropdownBox((Rectangle){ 25, 25, 125, 30 }, "ONE;TWO;THREE", &dropdownBox000Active, dropDown000EditMode)) dropDown000EditMode = !dropDown000EditMode; 247 | 248 | // Second GUI column 249 | //GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL, 1); 250 | GuiListView((Rectangle){ 165, 25, 140, 124 }, "Charmander;Bulbasaur;#18#Squirtel;Pikachu;Eevee;Pidgey", &listViewScrollIndex, &listViewActive); 251 | GuiListViewEx((Rectangle){ 165, 162, 140, 184 }, listViewExList, 8, &listViewExScrollIndex, &listViewExActive, &listViewExFocus); 252 | GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL, 0); 253 | 254 | //GuiToggle((Rectangle){ 165, 400, 140, 25 }, "#1#ONE", &toggleGroupActive); 255 | GuiToggleGroup((Rectangle){ 165, 360, 140, 24 }, "#1#ONE\n#3#TWO\n#8#THREE\n#23#", &toggleGroupActive); 256 | //GuiDisable(); 257 | GuiSetStyle(SLIDER, SLIDER_PADDING, 2); 258 | GuiToggleSlider((Rectangle){ 165, 480, 140, 30 }, "ON;OFF", &toggleSliderActive); 259 | GuiSetStyle(SLIDER, SLIDER_PADDING, 0); 260 | 261 | // Third GUI column 262 | GuiPanel((Rectangle){ 320, 25, 225, 140 }, "Panel Info"); 263 | GuiColorPicker((Rectangle){ 320, 185, 196, 192 }, NULL, &colorPickerValue); 264 | 265 | //GuiDisable(); 266 | GuiSlider((Rectangle){ 355, 400, 165, 20 }, "TEST", TextFormat("%2.2f", sliderValue), &sliderValue, -50, 100); 267 | GuiSliderBar((Rectangle){ 320, 430, 200, 20 }, NULL, TextFormat("%i", (int)sliderBarValue), &sliderBarValue, 0, 100); 268 | 269 | GuiProgressBar((Rectangle){ 320, 460, 200, 20 }, NULL, TextFormat("%i%%", (int)(progressValue*100)), &progressValue, 0.0f, 1.0f); 270 | GuiEnable(); 271 | 272 | // NOTE: View rectangle could be used to perform some scissor test 273 | Rectangle view = { 0 }; 274 | GuiScrollPanel((Rectangle){ 560, 25, 102, 354 }, NULL, (Rectangle){ 560, 25, 300, 1200 }, &viewScroll, &view); 275 | 276 | Vector2 mouseCell = { 0 }; 277 | GuiGrid((Rectangle) { 560, 25 + 180 + 195, 100, 120 }, NULL, 20, 3, &mouseCell); 278 | 279 | GuiColorBarAlpha((Rectangle){ 320, 490, 200, 30 }, NULL, &alphaValue); 280 | 281 | GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); // WARNING: Word-wrap does not work as expected in case of no-top alignment 282 | GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported 283 | if (GuiTextBox((Rectangle){ 678, 25, 258, 492 }, textBoxMultiText, 1024, textBoxMultiEditMode)) textBoxMultiEditMode = !textBoxMultiEditMode; 284 | GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); 285 | GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); 286 | 287 | GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); 288 | GuiStatusBar((Rectangle){ 0, (float)GetScreenHeight() - 20, (float)GetScreenWidth(), 20 }, "This is a status bar"); 289 | GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); 290 | //GuiSetStyle(STATUSBAR, TEXT_INDENTATION, 20); 291 | 292 | if (showMessageBox) 293 | { 294 | DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); 295 | 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"); 296 | 297 | if ((result == 0) || (result == 2)) showMessageBox = false; 298 | else if (result == 1) exitWindow = true; 299 | } 300 | 301 | if (showTextInputBox) 302 | { 303 | DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); 304 | int result = GuiTextInputBox((Rectangle){ (float)GetScreenWidth()/2 - 120, (float)GetScreenHeight()/2 - 60, 240, 140 }, GuiIconText(ICON_FILE_SAVE, "Save file as..."), "Introduce output file name:", "Ok;Cancel", textInput, 255, NULL); 305 | 306 | if (result == 1) 307 | { 308 | // TODO: Validate textInput value and save 309 | 310 | TextCopy(textInputFileName, textInput); 311 | } 312 | 313 | if ((result == 0) || (result == 1) || (result == 2)) 314 | { 315 | showTextInputBox = false; 316 | TextCopy(textInput, "\0"); 317 | } 318 | } 319 | //---------------------------------------------------------------------------------- 320 | 321 | EndDrawing(); 322 | //---------------------------------------------------------------------------------- 323 | } 324 | 325 | // De-Initialization 326 | //-------------------------------------------------------------------------------------- 327 | CloseWindow(); // Close window and OpenGL context 328 | //-------------------------------------------------------------------------------------- 329 | 330 | return 0; 331 | } 332 | -------------------------------------------------------------------------------- /examples/controls_test_suite/controls_test_suite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/controls_test_suite/controls_test_suite.png -------------------------------------------------------------------------------- /examples/controls_test_suite/gui_value_box_float.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - controls test suite 4 | * 5 | * COMPILATION (Windows - MinGW): 6 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 7 | * 8 | * LICENSE: zlib/libpng 9 | * 10 | * Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) 11 | * 12 | **********************************************************************************************/ 13 | 14 | #include "raylib.h" 15 | 16 | #define RAYGUI_IMPLEMENTATION 17 | #include "../../src/raygui.h" 18 | 19 | #include 20 | 21 | //------------------------------------------------------------------------------------ 22 | // Program main entry point 23 | //------------------------------------------------------------------------------------ 24 | int main() 25 | { 26 | // Initialization 27 | //--------------------------------------------------------------------------------------- 28 | const int screenWidth = 800; 29 | const int screenHeight = 450; 30 | 31 | InitWindow(screenWidth, screenHeight, "raygui - controls test suite"); 32 | 33 | float valueBoxValue = 0.0f; 34 | bool valueBoxEditMode = false; 35 | char valueBoxTextValue[32] = { 0 }; 36 | 37 | SetTargetFPS(60); 38 | //-------------------------------------------------------------------------------------- 39 | 40 | // Main game loop 41 | while (!WindowShouldClose()) // Detect window close button or ESC key 42 | { 43 | // Update 44 | //---------------------------------------------------------------------------------- 45 | 46 | //---------------------------------------------------------------------------------- 47 | 48 | // Draw 49 | //---------------------------------------------------------------------------------- 50 | BeginDrawing(); 51 | 52 | ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); 53 | 54 | if (GuiValueBoxFloat((Rectangle){ 25, 175, 125, 30 }, NULL, valueBoxTextValue, &valueBoxValue, valueBoxEditMode)) 55 | { 56 | valueBoxEditMode = !valueBoxEditMode; 57 | 58 | printf("Value: %2.2f\n", valueBoxValue); 59 | } 60 | 61 | EndDrawing(); 62 | //---------------------------------------------------------------------------------- 63 | } 64 | 65 | // De-Initialization 66 | //-------------------------------------------------------------------------------------- 67 | CloseWindow(); // Close window and OpenGL context 68 | //-------------------------------------------------------------------------------------- 69 | 70 | return 0; 71 | } 72 | -------------------------------------------------------------------------------- /examples/custom_file_dialog/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/custom_file_dialog/cat.png -------------------------------------------------------------------------------- /examples/custom_file_dialog/custom_file_dialog.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - custom file dialog to load image 4 | * 5 | * DEPENDENCIES: 6 | * raylib 4.0 - Windowing/input management and drawing. 7 | * raygui 3.0 - Immediate-mode GUI controls. 8 | * 9 | * COMPILATION (Windows - MinGW): 10 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 11 | * 12 | * LICENSE: zlib/libpng 13 | * 14 | * Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) 15 | * 16 | **********************************************************************************************/ 17 | 18 | #include "raylib.h" 19 | 20 | #define RAYGUI_IMPLEMENTATION 21 | #include "../../src/raygui.h" 22 | 23 | #undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again 24 | 25 | #define GUI_WINDOW_FILE_DIALOG_IMPLEMENTATION 26 | #include "gui_window_file_dialog.h" 27 | 28 | //------------------------------------------------------------------------------------ 29 | // Program main entry point 30 | //------------------------------------------------------------------------------------ 31 | int main() 32 | { 33 | // Initialization 34 | //--------------------------------------------------------------------------------------- 35 | int screenWidth = 800; 36 | int screenHeight = 560; 37 | 38 | InitWindow(screenWidth, screenHeight, "raygui - custom modal dialog"); 39 | SetExitKey(0); 40 | 41 | // Custom file dialog 42 | GuiWindowFileDialogState fileDialogState = InitGuiWindowFileDialog(GetWorkingDirectory()); 43 | 44 | bool exitWindow = false; 45 | 46 | char fileNameToLoad[512] = { 0 }; 47 | 48 | Texture texture = { 0 }; 49 | 50 | SetTargetFPS(60); 51 | //-------------------------------------------------------------------------------------- 52 | 53 | // Main game loop 54 | while (!exitWindow) // Detect window close button or ESC key 55 | { 56 | // Update 57 | //---------------------------------------------------------------------------------- 58 | exitWindow = WindowShouldClose(); 59 | 60 | if (fileDialogState.SelectFilePressed) 61 | { 62 | // Load image file (if supported extension) 63 | if (IsFileExtension(fileDialogState.fileNameText, ".png")) 64 | { 65 | strcpy(fileNameToLoad, TextFormat("%s" PATH_SEPERATOR "%s", fileDialogState.dirPathText, fileDialogState.fileNameText)); 66 | UnloadTexture(texture); 67 | texture = LoadTexture(fileNameToLoad); 68 | } 69 | 70 | fileDialogState.SelectFilePressed = false; 71 | } 72 | //---------------------------------------------------------------------------------- 73 | 74 | // Draw 75 | //---------------------------------------------------------------------------------- 76 | BeginDrawing(); 77 | 78 | ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); 79 | 80 | DrawTexture(texture, GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, WHITE); 81 | DrawRectangleLines(GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, texture.width, texture.height, BLACK); 82 | 83 | DrawText(fileNameToLoad, 208, GetScreenHeight() - 20, 10, GRAY); 84 | 85 | // raygui: controls drawing 86 | //---------------------------------------------------------------------------------- 87 | if (fileDialogState.windowActive) GuiLock(); 88 | 89 | if (GuiButton((Rectangle){ 20, 20, 140, 30 }, GuiIconText(ICON_FILE_OPEN, "Open Image"))) fileDialogState.windowActive = true; 90 | 91 | GuiUnlock(); 92 | 93 | // GUI: Dialog Window 94 | //-------------------------------------------------------------------------------- 95 | GuiWindowFileDialog(&fileDialogState); 96 | //-------------------------------------------------------------------------------- 97 | 98 | //---------------------------------------------------------------------------------- 99 | 100 | EndDrawing(); 101 | //---------------------------------------------------------------------------------- 102 | } 103 | 104 | // De-Initialization 105 | //-------------------------------------------------------------------------------------- 106 | UnloadTexture(texture); // Unload texture 107 | 108 | CloseWindow(); // Close window and OpenGL context 109 | //-------------------------------------------------------------------------------------- 110 | 111 | return 0; 112 | } 113 | -------------------------------------------------------------------------------- /examples/custom_input_box/custom_input_box.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - basic calculator app with custom input box for float values 4 | * 5 | * DEPENDENCIES: 6 | * raylib 4.5 - Windowing/input management and drawing. 7 | * raygui 3.5 - Immediate-mode GUI controls. 8 | * 9 | * COMPILATION (Windows - MinGW): 10 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 11 | * 12 | **********************************************************************************************/ 13 | 14 | #include "raylib.h" 15 | 16 | #define RAYGUI_IMPLEMENTATION 17 | #include "../../src/raygui.h" 18 | 19 | int guiFloatingPointIndex = 0; // Global variable shared by all GuiFloatBox() 20 | 21 | int GuiFloatBox(Rectangle bounds, const char* text, float* value, int minValue, int maxValue, bool editMode); // Custom input box that works with float values. Basicly GuiValueBox(), but with some changes 22 | 23 | int main() 24 | { 25 | InitWindow(250, 100, "Basic calculator"); 26 | 27 | // General variables 28 | SetTargetFPS(60); 29 | 30 | float variableA = 0.0f; 31 | float variableB = 0.0f; 32 | float result = 0.0f; 33 | char operation[2]; 34 | operation[0] = '+'; 35 | operation[1] = '\0'; 36 | 37 | bool variableAMode = false; 38 | bool variableBMode = false; 39 | //-------------------------------------------------------------------------------------- 40 | 41 | // Main game loop 42 | while (!WindowShouldClose()) 43 | { 44 | // Draw 45 | //---------------------------------------------------------------------------------- 46 | BeginDrawing(); 47 | 48 | ClearBackground(RAYWHITE); 49 | 50 | if (GuiFloatBox((Rectangle){ 10, 10, 100, 20 }, NULL, &variableA, -1000000.0, 1000000.0, variableAMode)) variableAMode = !variableAMode; 51 | if (GuiFloatBox((Rectangle){ 140, 10, 100, 20 }, NULL, &variableB, -1000000.0, 1000000.0, variableBMode)) variableBMode = !variableBMode; 52 | 53 | if (GuiButton((Rectangle){ 10, 70, 50, 20 }, "+")) 54 | { 55 | result = variableA + variableB; 56 | operation[0] = '+'; 57 | } 58 | if (GuiButton((Rectangle){ 70, 70, 50, 20 }, "-")) 59 | { 60 | result = variableA - variableB; 61 | operation[0] = '-'; 62 | } 63 | if (GuiButton((Rectangle){ 130, 70, 50, 20 }, "*")) 64 | { 65 | result = variableA * variableB; 66 | operation[0] = '*'; 67 | } 68 | if (GuiButton((Rectangle){ 190, 70, 50, 20 }, "/")) 69 | { 70 | result = variableA / variableB; 71 | operation[0] = '/'; 72 | } 73 | 74 | DrawText(operation, 123, 15, 10, DARKGRAY); 75 | 76 | GuiFloatBox((Rectangle){ 55, 40, 135, 20 }, "= ", &result, -2000000.0, 2000000.0, false); 77 | 78 | EndDrawing(); 79 | //---------------------------------------------------------------------------------- 80 | } 81 | 82 | CloseWindow(); 83 | } 84 | 85 | // Float Box control, updates input text with numbers 86 | int GuiFloatBox(Rectangle bounds, const char* text, float* value, int minValue, int maxValue, bool editMode) 87 | { 88 | #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) 89 | #define RAYGUI_VALUEBOX_MAX_CHARS 32 90 | #endif 91 | 92 | int result = 0; 93 | GuiState state = guiState; 94 | 95 | char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; 96 | 97 | Rectangle textBounds = { 0 }; 98 | if (text != NULL) 99 | { 100 | textBounds.width = (float)GetTextWidth(text) + 2; 101 | textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); 102 | textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); 103 | textBounds.y = bounds.y + bounds.height / 2.0f - GuiGetStyle(DEFAULT, TEXT_SIZE) / 2.0f; 104 | if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); 105 | } 106 | 107 | // Update control 108 | //-------------------------------------------------------------------- 109 | if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) 110 | { 111 | Vector2 mousePoint = GetMousePosition(); 112 | 113 | if (*value >= 0) sprintf(textValue, "+%.3f", *value); 114 | else sprintf(textValue, "%.3f", *value); 115 | 116 | bool valueHasChanged = false; 117 | 118 | int keyCount = (int)strlen(textValue) - guiFloatingPointIndex; 119 | 120 | if (editMode) 121 | { 122 | state = STATE_PRESSED; 123 | 124 | // Only allow keys in range [48..57] 125 | if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) 126 | { 127 | if (GetTextWidth(textValue) < bounds.width) 128 | { 129 | int key = GetCharPressed(); 130 | if ((key >= 48) && (key <= 57) && guiFloatingPointIndex) 131 | { 132 | if (guiFloatingPointIndex && guiFloatingPointIndex != 4) guiFloatingPointIndex--; 133 | 134 | textValue[keyCount] = (char)key; 135 | textValue[++keyCount] = '\0'; 136 | valueHasChanged = true; 137 | } 138 | } 139 | } 140 | 141 | // Delete text 142 | if (keyCount > 0) 143 | { 144 | if (IsKeyPressed(KEY_BACKSPACE)) 145 | { 146 | if (guiFloatingPointIndex < 4) guiFloatingPointIndex++; 147 | 148 | keyCount--; 149 | textValue[keyCount] = '\0'; 150 | valueHasChanged = true; 151 | } 152 | } 153 | 154 | // Change sign 155 | if (IsKeyPressed(KEY_MINUS)) 156 | { 157 | if (textValue[0] == '+') textValue[0] = '-'; 158 | else if (textValue[0] == '-') textValue[0] = '+'; 159 | valueHasChanged = true; 160 | } 161 | 162 | // Add decimal separator 163 | if ((IsKeyPressed(KEY_COMMA) || IsKeyPressed(KEY_PERIOD)) && guiFloatingPointIndex == 4) 164 | { 165 | guiFloatingPointIndex--; 166 | valueHasChanged = true; 167 | } 168 | 169 | if (valueHasChanged) 170 | { 171 | *value = atof(textValue); 172 | } 173 | 174 | if (IsKeyPressed(KEY_ENTER) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) 175 | { 176 | guiFloatingPointIndex = 0; 177 | result = 1; 178 | } 179 | } 180 | else 181 | { 182 | if (*value > maxValue) *value = maxValue; 183 | else if (*value < minValue) *value = minValue; 184 | 185 | if (CheckCollisionPointRec(mousePoint, bounds)) 186 | { 187 | state = STATE_FOCUSED; 188 | if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; 189 | } 190 | } 191 | } 192 | //-------------------------------------------------------------------- 193 | 194 | // Draw control 195 | //-------------------------------------------------------------------- 196 | Color baseColor = BLANK; 197 | sprintf(textValue, "%.3f", *value); 198 | 199 | if (state == STATE_PRESSED) 200 | { 201 | baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); 202 | textValue[(int)strlen(textValue) - guiFloatingPointIndex] = '\0'; 203 | } 204 | else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); 205 | 206 | // WARNING: BLANK color does not work properly with Fade() 207 | GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(VALUEBOX, BORDER + (state * 3))), guiAlpha), baseColor); 208 | GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(VALUEBOX, TEXT + (state * 3))), guiAlpha)); 209 | 210 | // Draw cursor 211 | if (editMode) 212 | { 213 | // NOTE: ValueBox internal text is always centered 214 | Rectangle cursor = { bounds.x + GetTextWidth(textValue) / 2.0f + bounds.width / 2.0f + 1, bounds.y + 2.0f * GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, bounds.height - 4 * GuiGetStyle(VALUEBOX, BORDER_WIDTH) }; 215 | GuiDrawRectangle(cursor, 0, BLANK, Fade(GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED)), guiAlpha)); 216 | } 217 | 218 | // Draw text label if provided 219 | GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) ? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, Fade(GetColor(GuiGetStyle(LABEL, TEXT + (state * 3))), guiAlpha)); 220 | //-------------------------------------------------------------------- 221 | 222 | return result; 223 | } 224 | -------------------------------------------------------------------------------- /examples/floating_window/floating_window.c: -------------------------------------------------------------------------------- 1 | #include "raylib.h" 2 | 3 | #define RAYGUI_IMPLEMENTATION 4 | #include "../../src/raygui.h" 5 | 6 | #include "../../styles/dark/style_dark.h" 7 | 8 | static Vector2 window_position = { 10, 10 }; 9 | static Vector2 window_size = { 200, 400 }; 10 | static bool minimized = false; 11 | static bool moving = false; 12 | static bool resizing = false; 13 | static Vector2 scroll; 14 | 15 | static Vector2 window2_position = { 250, 10 }; 16 | static Vector2 window2_size = { 200, 400 }; 17 | static bool minimized2 = false; 18 | static bool moving2 = false; 19 | static bool resizing2 = false; 20 | static Vector2 scroll2; 21 | 22 | void GuiWindowFloating(Vector2 *position, Vector2 *size, bool *minimized, bool *moving, bool *resizing, void (*draw_content)(Vector2, Vector2), Vector2 content_size, Vector2 *scroll, const char* title) { 23 | #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) 24 | #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 25 | #endif 26 | 27 | #if !defined(RAYGUI_WINDOW_CLOSEBUTTON_SIZE) 28 | #define RAYGUI_WINDOW_CLOSEBUTTON_SIZE 18 29 | #endif 30 | 31 | int close_title_size_delta_half = (RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_WINDOW_CLOSEBUTTON_SIZE) / 2; 32 | 33 | // window movement and resize input and collision check 34 | if(IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && !*moving && !*resizing) { 35 | Vector2 mouse_position = GetMousePosition(); 36 | 37 | Rectangle title_collision_rect = { position->x, position->y, size->x - (RAYGUI_WINDOW_CLOSEBUTTON_SIZE + close_title_size_delta_half), RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; 38 | Rectangle resize_collision_rect = { position->x + size->x - 20, position->y + size->y - 20, 20, 20 }; 39 | 40 | if(CheckCollisionPointRec(mouse_position, title_collision_rect)) { 41 | *moving = true; 42 | } else if(!*minimized && CheckCollisionPointRec(mouse_position, resize_collision_rect)) { 43 | *resizing = true; 44 | } 45 | } 46 | 47 | // window movement and resize update 48 | if(*moving) { 49 | Vector2 mouse_delta = GetMouseDelta(); 50 | position->x += mouse_delta.x; 51 | position->y += mouse_delta.y; 52 | 53 | if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) { 54 | *moving = false; 55 | 56 | // clamp window position keep it inside the application area 57 | if(position->x < 0) position->x = 0; 58 | else if(position->x > GetScreenWidth() - size->x) position->x = GetScreenWidth() - size->x; 59 | if(position->y < 0) position->y = 0; 60 | else if(position->y > GetScreenHeight()) position->y = GetScreenHeight() - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; 61 | } 62 | 63 | } else if(*resizing) { 64 | Vector2 mouse = GetMousePosition(); 65 | if (mouse.x > position->x) 66 | size->x = mouse.x - position->x; 67 | if (mouse.y > position->y) 68 | size->y = mouse.y - position->y; 69 | 70 | // clamp window size to an arbitrary minimum value and the window size as the maximum 71 | if(size->x < 100) size->x = 100; 72 | else if(size->x > GetScreenWidth()) size->x = GetScreenWidth(); 73 | if(size->y < 100) size->y = 100; 74 | else if(size->y > GetScreenHeight()) size->y = GetScreenHeight(); 75 | 76 | if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) { 77 | *resizing = false; 78 | } 79 | } 80 | 81 | // window and content drawing with scissor and scroll area 82 | if(*minimized) { 83 | GuiStatusBar((Rectangle){ position->x, position->y, size->x, RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }, title); 84 | 85 | if (GuiButton((Rectangle){ position->x + size->x - RAYGUI_WINDOW_CLOSEBUTTON_SIZE - close_title_size_delta_half, 86 | position->y + close_title_size_delta_half, 87 | RAYGUI_WINDOW_CLOSEBUTTON_SIZE, 88 | RAYGUI_WINDOW_CLOSEBUTTON_SIZE }, 89 | "#120#")) { 90 | *minimized = false; 91 | } 92 | 93 | } else { 94 | *minimized = GuiWindowBox((Rectangle) { position->x, position->y, size->x, size->y }, title); 95 | 96 | // scissor and draw content within a scroll panel 97 | if(draw_content != NULL) { 98 | Rectangle scissor = { 0 }; 99 | GuiScrollPanel((Rectangle) { position->x, position->y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, size->x, size->y - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }, 100 | NULL, 101 | (Rectangle) { position->x, position->y, content_size.x, content_size.y }, 102 | scroll, 103 | &scissor); 104 | 105 | bool require_scissor = size->x < content_size.x || size->y < content_size.y; 106 | 107 | if(require_scissor) { 108 | BeginScissorMode(scissor.x, scissor.y, scissor.width, scissor.height); 109 | } 110 | 111 | draw_content(*position, *scroll); 112 | 113 | if(require_scissor) { 114 | EndScissorMode(); 115 | } 116 | } 117 | 118 | // draw the resize button/icon 119 | GuiDrawIcon(71, position->x + size->x - 20, position->y + size->y - 20, 1, WHITE); 120 | } 121 | } 122 | 123 | static void DrawContent(Vector2 position, Vector2 scroll) { 124 | GuiButton((Rectangle) { position.x + 20 + scroll.x, position.y + 50 + scroll.y, 100, 25 }, "Button 1"); 125 | GuiButton((Rectangle) { position.x + 20 + scroll.x, position.y + 100 + scroll.y, 100, 25 }, "Button 2"); 126 | GuiButton((Rectangle) { position.x + 20 + scroll.x, position.y + 150 + scroll.y, 100, 25 }, "Button 3"); 127 | GuiLabel((Rectangle) { position.x + 20 + scroll.x, position.y + 200 + scroll.y, 250, 25 }, "A Label"); 128 | GuiLabel((Rectangle) { position.x + 20 + scroll.x, position.y + 250 + scroll.y, 250, 25 }, "Another Label"); 129 | GuiLabel((Rectangle) { position.x + 20 + scroll.x, position.y + 300 + scroll.y, 250, 25 }, "Yet Another Label"); 130 | } 131 | 132 | int main(void) { 133 | InitWindow(960, 560, "raygui - floating window example"); 134 | SetTargetFPS(60); 135 | GuiLoadStyleDark(); 136 | 137 | while(!WindowShouldClose()) { 138 | BeginDrawing(); 139 | ClearBackground(DARKGREEN); 140 | GuiWindowFloating(&window_position, &window_size, &minimized, &moving, &resizing, &DrawContent, (Vector2) { 140, 320 }, &scroll, "Movable & Scalable Window"); 141 | GuiWindowFloating(&window2_position, &window2_size, &minimized2, &moving2, &resizing2, &DrawContent, (Vector2) { 140, 320 }, &scroll2, "Another window"); 142 | EndDrawing(); 143 | } 144 | 145 | CloseWindow(); 146 | 147 | return 0; 148 | } 149 | -------------------------------------------------------------------------------- /examples/image_exporter/image_exporter.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - image exporter 4 | * 5 | * DEPENDENCIES: 6 | * raylib 4.0 - Windowing/input management and drawing. 7 | * raygui 3.0 - Immediate-mode GUI controls. 8 | * 9 | * COMPILATION (Windows - MinGW): 10 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 11 | * 12 | * LICENSE: zlib/libpng 13 | * 14 | * Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) 15 | * 16 | ********************************************************************************************/ 17 | 18 | #include "raylib.h" 19 | 20 | #define RAYGUI_IMPLEMENTATION 21 | #include "../../src/raygui.h" 22 | 23 | //------------------------------------------------------------------------------------ 24 | // Program main entry point 25 | //------------------------------------------------------------------------------------ 26 | int main(int argc, char *argv[]) 27 | { 28 | // Initialization 29 | //-------------------------------------------------------------------------------------- 30 | const int screenWidth = 800; 31 | const int screenHeight = 450; 32 | 33 | InitWindow(screenWidth, screenHeight, "raygui - image exporter"); 34 | 35 | // GUI controls initialization 36 | //---------------------------------------------------------------------------------- 37 | Rectangle windowBoxRec = { screenWidth/2 - 110, screenHeight/2 - 100, 220, 190 }; 38 | bool windowBoxActive = false; 39 | 40 | int fileFormatActive = 0; 41 | char *fileFormatTextList[3] = { "IMAGE (.png)", "DATA (.raw)", "CODE (.h)" }; 42 | 43 | int pixelFormatActive = 0; 44 | char *pixelFormatTextList[7] = { "GRAYSCALE", "GRAY ALPHA", "R5G6B5", "R8G8B8", "R5G5B5A1", "R4G4B4A4", "R8G8B8A8" }; 45 | 46 | bool textBoxEditMode = false; 47 | char fileName[64] = "untitled"; 48 | //-------------------------------------------------------------------------------------- 49 | 50 | Image image = { 0 }; 51 | Texture2D texture = { 0 }; 52 | 53 | bool imageLoaded = false; 54 | float imageScale = 1.0f; 55 | Rectangle imageRec = { 0 }; 56 | 57 | bool btnExportPressed = false; 58 | 59 | SetTargetFPS(60); 60 | //-------------------------------------------------------------------------------------- 61 | 62 | // Main game loop 63 | while (!WindowShouldClose()) // Detect window close button or ESC key 64 | { 65 | // Update 66 | //---------------------------------------------------------------------------------- 67 | if (IsFileDropped()) 68 | { 69 | FilePathList droppedFiles = LoadDroppedFiles(); 70 | 71 | if (droppedFiles.count == 1) 72 | { 73 | Image imTemp = LoadImage(droppedFiles.paths[0]); 74 | 75 | if (imTemp.data != NULL) 76 | { 77 | UnloadImage(image); 78 | image = imTemp; 79 | 80 | UnloadTexture(texture); 81 | texture = LoadTextureFromImage(image); 82 | 83 | imageLoaded = true; 84 | pixelFormatActive = image.format - 1; 85 | 86 | if (texture.height > texture.width) imageScale = (float)(screenHeight - 100)/(float)texture.height; 87 | else imageScale = (float)(screenWidth - 100)/(float)texture.width; 88 | } 89 | } 90 | 91 | UnloadDroppedFiles(droppedFiles); 92 | } 93 | 94 | if (btnExportPressed) 95 | { 96 | if (imageLoaded) 97 | { 98 | ImageFormat(&image, pixelFormatActive + 1); 99 | 100 | if (fileFormatActive == 0) // PNG 101 | { 102 | if ((GetFileExtension(fileName) == NULL) || (!IsFileExtension(fileName, ".png"))) strcat(fileName, ".png\0"); // No extension provided 103 | ExportImage(image, fileName); 104 | } 105 | else if (fileFormatActive == 1) // RAW 106 | { 107 | if ((GetFileExtension(fileName) == NULL) || (!IsFileExtension(fileName, ".raw"))) strcat(fileName, ".raw\0"); // No extension provided 108 | 109 | int dataSize = GetPixelDataSize(image.width, image.height, image.format); 110 | 111 | FILE *rawFile = fopen(fileName, "wb"); 112 | fwrite(image.data, 1, dataSize, rawFile); 113 | fclose(rawFile); 114 | } 115 | else if (fileFormatActive == 2) // CODE 116 | { 117 | ExportImageAsCode(image, fileName); 118 | } 119 | } 120 | 121 | windowBoxActive = false; 122 | } 123 | 124 | if (imageLoaded) 125 | { 126 | imageScale += (float)GetMouseWheelMove()*0.05f; // Image scale control 127 | if (imageScale <= 0.1f) imageScale = 0.1f; 128 | else if (imageScale >= 5) imageScale = 5; 129 | 130 | imageRec = (Rectangle){ screenWidth/2 - (float)image.width*imageScale/2, 131 | screenHeight/2 - (float)image.height*imageScale/2, 132 | (float)image.width*imageScale, (float)image.height*imageScale }; 133 | } 134 | //---------------------------------------------------------------------------------- 135 | 136 | // Draw 137 | //---------------------------------------------------------------------------------- 138 | BeginDrawing(); 139 | 140 | ClearBackground(RAYWHITE); 141 | 142 | if (texture.id > 0) 143 | { 144 | DrawTextureEx(texture, (Vector2){ screenWidth/2 - (float)texture.width*imageScale/2, screenHeight/2 - (float)texture.height*imageScale/2 }, 0.0f, imageScale, WHITE); 145 | 146 | DrawRectangleLinesEx(imageRec, 1, CheckCollisionPointRec(GetMousePosition(), imageRec) ? RED : DARKGRAY); 147 | DrawText(TextFormat("SCALE: %.2f%%", imageScale*100.0f), 20, screenHeight - 40, 20, GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); 148 | } 149 | else 150 | { 151 | DrawText("DRAG & DROP YOUR IMAGE!", 350, 200, 10, DARKGRAY); 152 | GuiDisable(); 153 | } 154 | 155 | if (GuiButton((Rectangle){ screenWidth - 170, screenHeight - 50, 150, 30 }, "Image Export")) windowBoxActive = true; 156 | GuiEnable(); 157 | 158 | // Draw window box: windowBoxName 159 | //----------------------------------------------------------------------------- 160 | if (windowBoxActive) 161 | { 162 | DrawRectangle(0, 0, screenWidth, screenHeight, Fade(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR)), 0.7f)); 163 | windowBoxActive = !GuiWindowBox((Rectangle){ windowBoxRec.x, windowBoxRec.y, 220, 190 }, "Image Export Options"); 164 | 165 | GuiLabel((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 35, 60, 25 }, "File format:"); 166 | GuiComboBox((Rectangle){ windowBoxRec.x + 80, windowBoxRec.y + 35, 130, 25 }, TextJoin(fileFormatTextList, 3, ";"), &fileFormatActive); 167 | GuiLabel((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 70, 63, 25 }, "Pixel format:"); 168 | GuiComboBox((Rectangle){ windowBoxRec.x + 80, windowBoxRec.y + 70, 130, 25 }, TextJoin(pixelFormatTextList, 7, ";"), &pixelFormatActive); 169 | GuiLabel((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 105, 50, 25 }, "File name:"); 170 | if (GuiTextBox((Rectangle){ windowBoxRec.x + 80, windowBoxRec.y + 105, 130, 25 }, fileName, 64, textBoxEditMode)) textBoxEditMode = !textBoxEditMode; 171 | 172 | btnExportPressed = GuiButton((Rectangle){ windowBoxRec.x + 10, windowBoxRec.y + 145, 200, 30 }, "Export Image"); 173 | } 174 | else btnExportPressed = false; 175 | 176 | if (btnExportPressed) DrawText("Image exported!", 20, screenHeight - 20, 20, RED); 177 | //----------------------------------------------------------------------------- 178 | 179 | EndDrawing(); 180 | //---------------------------------------------------------------------------------- 181 | } 182 | 183 | // De-Initialization 184 | //-------------------------------------------------------------------------------------- 185 | UnloadImage(image); 186 | UnloadTexture(texture); 187 | 188 | CloseWindow(); // Close window and OpenGL context 189 | //-------------------------------------------------------------------------------------- 190 | 191 | return 0; 192 | } 193 | -------------------------------------------------------------------------------- /examples/image_exporter/resources/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_exporter/resources/cat.png -------------------------------------------------------------------------------- /examples/image_exporter/resources/fudesumi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_exporter/resources/fudesumi.png -------------------------------------------------------------------------------- /examples/image_exporter/resources/parrots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_exporter/resources/parrots.png -------------------------------------------------------------------------------- /examples/image_exporter/resources/scarfy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_exporter/resources/scarfy.png -------------------------------------------------------------------------------- /examples/image_importer_raw/design/raw_importer_REF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/design/raw_importer_REF.png -------------------------------------------------------------------------------- /examples/image_importer_raw/design/raw_importer_REV0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/design/raw_importer_REV0.png -------------------------------------------------------------------------------- /examples/image_importer_raw/design/raw_importer_REV1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/design/raw_importer_REV1.png -------------------------------------------------------------------------------- /examples/image_importer_raw/design/raw_importer_REV2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/design/raw_importer_REV2.png -------------------------------------------------------------------------------- /examples/image_importer_raw/design/raw_importer_REV3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/design/raw_importer_REV3.png -------------------------------------------------------------------------------- /examples/image_importer_raw/design/raw_importer_REV4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/design/raw_importer_REV4.png -------------------------------------------------------------------------------- /examples/image_importer_raw/design/raw_importer_REV5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/design/raw_importer_REV5.png -------------------------------------------------------------------------------- /examples/image_importer_raw/image_2x2_RGBA.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/image_importer_raw/image_2x2_RGBA.raw -------------------------------------------------------------------------------- /examples/image_importer_raw/image_importer_raw.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - image raw importer 4 | * 5 | * DEPENDENCIES: 6 | * raylib 4.0 - Windowing/input management and drawing. 7 | * raygui 3.0 - Immediate-mode GUI controls. 8 | * 9 | * COMPILATION (Windows - MinGW): 10 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 11 | * 12 | * LICENSE: zlib/libpng 13 | * 14 | * Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) 15 | * 16 | **********************************************************************************************/ 17 | 18 | #include "raylib.h" 19 | 20 | #define RAYGUI_IMPLEMENTATION 21 | #include "../../src/raygui.h" 22 | 23 | #include // Required for: strcpy() 24 | #include // Required for: atoi() 25 | #include // Required for: round() 26 | 27 | //------------------------------------------------------------------------------------ 28 | // Program main entry point 29 | //------------------------------------------------------------------------------------ 30 | int main() 31 | { 32 | // Initialization 33 | //--------------------------------------------------------------------------------------- 34 | const int screenWidth = 800; 35 | const int screenHeight = 600; 36 | 37 | InitWindow(screenWidth, screenHeight, "raygui - image raw importer"); 38 | 39 | Texture2D texture = { 0 }; 40 | 41 | // GUI controls initialization 42 | //---------------------------------------------------------------------------------- 43 | Vector2 windowOffset = { screenWidth/2 - 200/2, screenHeight/2 - 465/2 }; 44 | 45 | bool importWindowActive = false; 46 | 47 | int widthValue = 0; 48 | bool widthEditMode = false; 49 | int heightValue = 0; 50 | bool heightEditMode = false; 51 | 52 | int pixelFormatActive = 0; 53 | char *pixelFormatTextList[8] = { "CUSTOM", "GRAYSCALE", "GRAY ALPHA", "R5G6B5", "R8G8B8", "R5G5B5A1", "R4G4B4A4", "R8G8B8A8" }; 54 | 55 | int channelsActive = 3; 56 | char *channelsTextList[4] = { "1", "2", "3", "4" }; 57 | int bitDepthActive = 0; 58 | char *bitDepthTextList[3] = { "8", "16", "32" }; 59 | 60 | int headerSizeValue = 0; 61 | bool headerSizeEditMode = false; 62 | //---------------------------------------------------------------------------------- 63 | 64 | // Image file info 65 | int dataSize = 0; 66 | char fileNamePath[256] = "\0"; 67 | char fileName[64] = "\0"; 68 | 69 | bool btnLoadPressed = false; 70 | 71 | bool imageLoaded = false; 72 | float imageScale = 1.0f; 73 | 74 | SetTargetFPS(60); 75 | //-------------------------------------------------------------------------------------- 76 | 77 | // Main game loop 78 | while (!WindowShouldClose()) // Detect window close button or ESC key 79 | { 80 | // Update 81 | //---------------------------------------------------------------------------------- 82 | // Check if a file is dropped 83 | if (IsFileDropped()) 84 | { 85 | FilePathList droppedFiles = LoadDroppedFiles(); 86 | 87 | // Check file extensions for drag-and-drop 88 | if ((droppedFiles.count == 1) && IsFileExtension(droppedFiles.paths[0], ".raw")) 89 | { 90 | FILE *imageFile = fopen(droppedFiles.paths[0], "rb"); 91 | fseek(imageFile, 0L, SEEK_END); 92 | dataSize = ftell(imageFile); 93 | fclose(imageFile); 94 | 95 | // NOTE: Returned string is just a pointer to droppedFiles[0], 96 | // we need to make a copy of that data somewhere else: fileName 97 | strcpy(fileNamePath, droppedFiles.paths[0]); 98 | strcpy(fileName, GetFileName(droppedFiles.paths[0])); 99 | 100 | // Try to guess possible raw values 101 | // Let's assume image is square, RGBA, 8 bit per channel 102 | widthValue = round(sqrt(dataSize/4)); 103 | heightValue = widthValue; 104 | headerSizeValue = dataSize - widthValue*heightValue*4; 105 | if (headerSizeValue < 0) headerSizeValue = 0; 106 | 107 | importWindowActive = true; 108 | } 109 | 110 | UnloadDroppedFiles(droppedFiles); 111 | } 112 | 113 | // Check if load button has been pressed 114 | if (btnLoadPressed) 115 | { 116 | // Depending on channels and bit depth, select correct pixel format 117 | if ((widthValue != 0) && (heightValue != 0)) 118 | { 119 | int format = -1; 120 | 121 | if (pixelFormatActive == 0) 122 | { 123 | int channels = atoi(channelsTextList[channelsActive]); 124 | int bpp = atoi(bitDepthTextList[bitDepthActive]); 125 | 126 | // Select correct format depending on channels and bpp 127 | if (bpp == 8) 128 | { 129 | if (channels == 1) format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; 130 | else if (channels == 2) format = PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA; 131 | else if (channels == 3) format = PIXELFORMAT_UNCOMPRESSED_R8G8B8; 132 | else if (channels == 4) format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; 133 | } 134 | else if (bpp == 32) 135 | { 136 | if (channels == 1) format = PIXELFORMAT_UNCOMPRESSED_R32; 137 | else if (channels == 2) TraceLog(LOG_WARNING, "Channel bit-depth not supported!"); 138 | else if (channels == 3) format = PIXELFORMAT_UNCOMPRESSED_R32G32B32; 139 | else if (channels == 4) format = PIXELFORMAT_UNCOMPRESSED_R32G32B32A32; 140 | } 141 | else if (bpp == 16) TraceLog(LOG_WARNING, "Channel bit-depth not supported!"); 142 | } 143 | else format = pixelFormatActive; 144 | 145 | if (format != -1) 146 | { 147 | Image image = LoadImageRaw(fileNamePath, widthValue, heightValue, format, headerSizeValue); 148 | texture = LoadTextureFromImage(image); 149 | UnloadImage(image); 150 | 151 | importWindowActive = false; 152 | btnLoadPressed = false; 153 | 154 | if (texture.id > 0) 155 | { 156 | imageLoaded = true; 157 | imageScale = (float)(screenHeight - 100)/texture.height; 158 | } 159 | } 160 | } 161 | } 162 | 163 | if (imageLoaded) imageScale += (float)GetMouseWheelMove(); // Image scale control 164 | //---------------------------------------------------------------------------------- 165 | 166 | // Draw 167 | //---------------------------------------------------------------------------------- 168 | BeginDrawing(); 169 | 170 | ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); 171 | 172 | if (texture.id != 0) 173 | { 174 | DrawTextureEx(texture, (Vector2){ screenWidth/2 - texture.width*imageScale/2, screenHeight/2 - texture.height*imageScale/2 }, 0, imageScale, WHITE); 175 | DrawText(TextFormat("SCALE x%.0f", imageScale), 20, screenHeight - 40, 20, GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); 176 | } 177 | else DrawText("drag & drop RAW image file", 320, 180, 10, GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); 178 | 179 | // raygui: controls drawing 180 | //---------------------------------------------------------------------------------- 181 | if (importWindowActive) 182 | { 183 | importWindowActive = !GuiWindowBox((Rectangle){ windowOffset.x + 0, windowOffset.y + 0, 200, 465 }, "Image RAW Import Options"); 184 | 185 | GuiLabel((Rectangle){ windowOffset.x + 10, windowOffset.y + 30, 65, 20 }, "Import file:"); 186 | GuiLabel((Rectangle){ windowOffset.x + 85, windowOffset.y + 30, 75, 20 }, fileName); 187 | GuiLabel((Rectangle){ windowOffset.x + 10, windowOffset.y + 50, 65, 20 }, "File size:"); 188 | GuiLabel((Rectangle){ windowOffset.x + 85, windowOffset.y + 50, 75, 20 }, TextFormat("%i bytes", dataSize)); 189 | GuiGroupBox((Rectangle){ windowOffset.x + 10, windowOffset.y + 85, 180, 80 }, "Resolution"); 190 | GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 100, 33, 25 }, "Width:"); 191 | if (GuiValueBox((Rectangle){ windowOffset.x + 60, windowOffset.y + 100, 80, 25 }, NULL, &widthValue, 0, 8192, widthEditMode)) widthEditMode = !widthEditMode; 192 | GuiLabel((Rectangle){ windowOffset.x + 145, windowOffset.y + 100, 30, 25 }, "pixels"); 193 | GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 130, 33, 25 }, "Height:"); 194 | if (GuiValueBox((Rectangle){ windowOffset.x + 60, windowOffset.y + 130, 80, 25 }, NULL, &heightValue, 0, 8192, heightEditMode)) heightEditMode = !heightEditMode; 195 | GuiLabel((Rectangle){ windowOffset.x + 145, windowOffset.y + 130, 30, 25 }, "pixels"); 196 | GuiGroupBox((Rectangle){ windowOffset.x + 10, windowOffset.y + 180, 180, 160 }, "Pixel Format"); 197 | GuiComboBox((Rectangle){ windowOffset.x + 20, windowOffset.y + 195, 160, 25 }, TextJoin(pixelFormatTextList, 8, ";"), &pixelFormatActive); 198 | GuiLine((Rectangle){ windowOffset.x + 20, windowOffset.y + 220, 160, 20 }, NULL); 199 | 200 | if (pixelFormatActive != 0) GuiDisable(); 201 | GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 235, 50, 20 }, "Channels:"); 202 | GuiToggleGroup((Rectangle){ windowOffset.x + 20, windowOffset.y + 255, 156/4, 25 }, TextJoin(channelsTextList, 4, ";"), &channelsActive); 203 | GuiLabel((Rectangle){ windowOffset.x + 20, windowOffset.y + 285, 50, 20 }, "Bit Depth:"); 204 | GuiToggleGroup((Rectangle){ windowOffset.x + 20, windowOffset.y + 305, 160/3, 25 }, TextJoin(bitDepthTextList, 3, ";"), &bitDepthActive); 205 | GuiEnable(); 206 | 207 | GuiGroupBox((Rectangle){ windowOffset.x + 10, windowOffset.y + 355, 180, 50 }, "Header"); 208 | GuiLabel((Rectangle){ windowOffset.x + 25, windowOffset.y + 370, 27, 25 }, "Size:"); 209 | if (GuiValueBox((Rectangle){ windowOffset.x + 55, windowOffset.y + 370, 85, 25 }, NULL, &headerSizeValue, 0, 10000, headerSizeEditMode)) headerSizeEditMode = !headerSizeEditMode; 210 | GuiLabel((Rectangle){ windowOffset.x + 145, windowOffset.y + 370, 30, 25 }, "bytes"); 211 | 212 | btnLoadPressed = GuiButton((Rectangle){ windowOffset.x + 10, windowOffset.y + 420, 180, 30 }, "Import RAW"); 213 | } 214 | //---------------------------------------------------------------------------------- 215 | 216 | EndDrawing(); 217 | //---------------------------------------------------------------------------------- 218 | } 219 | 220 | // De-Initialization 221 | //-------------------------------------------------------------------------------------- 222 | if (texture.id != 0) UnloadTexture(texture); 223 | 224 | CloseWindow(); // Close window and OpenGL context 225 | //-------------------------------------------------------------------------------------- 226 | 227 | return 0; 228 | } 229 | -------------------------------------------------------------------------------- /examples/portable_window/portable_window.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - portable window 4 | * 5 | * DEPENDENCIES: 6 | * raylib 4.0 - Windowing/input management and drawing. 7 | * raygui 3.0 - Immediate-mode GUI controls. 8 | * 9 | * COMPILATION (Windows - MinGW): 10 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 11 | * 12 | * LICENSE: zlib/libpng 13 | * 14 | * Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) 15 | * 16 | **********************************************************************************************/ 17 | 18 | #include "raylib.h" 19 | 20 | #define RAYGUI_IMPLEMENTATION 21 | #include "../../src/raygui.h" 22 | 23 | //------------------------------------------------------------------------------------ 24 | // Program main entry point 25 | //------------------------------------------------------------------------------------ 26 | int main() 27 | { 28 | // Initialization 29 | //--------------------------------------------------------------------------------------- 30 | const int screenWidth = 800; 31 | const int screenHeight = 600; 32 | 33 | SetConfigFlags(FLAG_WINDOW_UNDECORATED); 34 | InitWindow(screenWidth, screenHeight, "raygui - portable window"); 35 | 36 | // General variables 37 | Vector2 mousePosition = { 0 }; 38 | Vector2 windowPosition = { 500, 200 }; 39 | Vector2 panOffset = mousePosition; 40 | bool dragWindow = false; 41 | 42 | SetWindowPosition(windowPosition.x, windowPosition.y); 43 | 44 | bool exitWindow = false; 45 | 46 | SetTargetFPS(60); 47 | //-------------------------------------------------------------------------------------- 48 | 49 | // Main game loop 50 | while (!exitWindow && !WindowShouldClose()) // Detect window close button or ESC key 51 | { 52 | // Update 53 | //---------------------------------------------------------------------------------- 54 | mousePosition = GetMousePosition(); 55 | 56 | if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && !dragWindow) 57 | { 58 | if (CheckCollisionPointRec(mousePosition, (Rectangle){ 0, 0, screenWidth, 20 })) 59 | { 60 | windowPosition = GetWindowPosition(); 61 | dragWindow = true; 62 | panOffset = mousePosition; 63 | } 64 | } 65 | 66 | if (dragWindow) 67 | { 68 | windowPosition.x += (mousePosition.x - panOffset.x); 69 | windowPosition.y += (mousePosition.y - panOffset.y); 70 | 71 | SetWindowPosition((int)windowPosition.x, (int)windowPosition.y); 72 | 73 | if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) dragWindow = false; 74 | } 75 | //---------------------------------------------------------------------------------- 76 | 77 | // Draw 78 | //---------------------------------------------------------------------------------- 79 | BeginDrawing(); 80 | 81 | ClearBackground(RAYWHITE); 82 | 83 | exitWindow = GuiWindowBox((Rectangle){ 0, 0, screenWidth, screenHeight }, "#198# PORTABLE WINDOW"); 84 | 85 | DrawText(TextFormat("Mouse Position: [ %.0f, %.0f ]", mousePosition.x, mousePosition.y), 10, 40, 10, DARKGRAY); 86 | DrawText(TextFormat("Window Position: [ %.0f, %.0f ]", windowPosition.x, windowPosition.y), 10, 60, 10, DARKGRAY); 87 | 88 | EndDrawing(); 89 | //---------------------------------------------------------------------------------- 90 | } 91 | 92 | // De-Initialization 93 | //-------------------------------------------------------------------------------------- 94 | CloseWindow(); // Close window and OpenGL context 95 | //-------------------------------------------------------------------------------------- 96 | 97 | return 0; 98 | } 99 | -------------------------------------------------------------------------------- /examples/property_list/property_list.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - custom property list control 4 | * 5 | * DEPENDENCIES: 6 | * raylib 4.0 - Windowing/input management and drawing. 7 | * raygui 3.0 - Immediate-mode GUI controls. 8 | * 9 | * COMPILATION (Windows - MinGW): 10 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 11 | * 12 | * LICENSE: zlib/libpng 13 | * 14 | * Copyright (c) 2020-2024 Vlad Adrian (@Demizdor) and Ramon Santamaria (@raysan5) 15 | * 16 | **********************************************************************************************/ 17 | 18 | #include "raylib.h" 19 | 20 | #define RAYGUI_IMPLEMENTATION 21 | #include "../../src/raygui.h" 22 | 23 | #undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again 24 | 25 | #define GUI_PROPERTY_LIST_IMPLEMENTATION 26 | #include "dm_property_list.h" 27 | 28 | #define SIZEOF(A) (sizeof(A)/sizeof(A[0])) 29 | 30 | //------------------------------------------------------------------------------------ 31 | // Program main entry point 32 | //------------------------------------------------------------------------------------ 33 | int main() 34 | { 35 | // Initialization 36 | //--------------------------------------------------------------------------------------- 37 | const int screenWidth = 800; 38 | const int screenHeight = 450; 39 | 40 | InitWindow(screenWidth, screenHeight, "raygui - property list"); 41 | 42 | GuiDMProperty prop[] = { 43 | PBOOL("Bool", 0, true), 44 | PSECTION("#102#SECTION", 0, 2), 45 | PINT("Int", 0, 123), 46 | PFLOAT("Float", 0, 0.99f), 47 | PTEXT("Text", 0, (char*)&(char[30]){"Hello!"}, 30), 48 | PSELECT("Select", 0, "ONE;TWO;THREE;FOUR", 0), 49 | PINT_RANGE("Int Range", 0, 32, 1, 0, 100), 50 | PRECT("Rect", 0, 0, 0, 100, 200), 51 | PVEC2("Vec2", 0, 20, 20), 52 | PVEC3("Vec3", 0, 12, 13, 14), 53 | PVEC4("Vec4", 0, 12, 13, 14, 15), 54 | PCOLOR("Color", 0, 0, 255, 0, 255), 55 | }; 56 | 57 | int focus = 0, scroll = 0; // Needed by GuiDMPropertyList() 58 | 59 | GuiLoadStyleDefault(); 60 | 61 | // Tweak the default raygui style a bit 62 | GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 24); 63 | GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, 12); 64 | 65 | Vector2 gridMouseCell = { 0 }; 66 | 67 | SetTargetFPS(60); 68 | //-------------------------------------------------------------------------------------- 69 | 70 | // Main game loop 71 | while (!WindowShouldClose()) // Detect window close button or ESC key 72 | { 73 | // Draw 74 | //---------------------------------------------------------------------------------- 75 | BeginDrawing(); 76 | 77 | ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); 78 | 79 | GuiGrid((Rectangle){0, 0, screenWidth, screenHeight}, "Property List", 20.0f, 2, &gridMouseCell); // Draw a fancy grid 80 | 81 | GuiDMPropertyList((Rectangle){(screenWidth - 180)/2, (screenHeight - 280)/2, 180, 280}, prop, SIZEOF(prop), &focus, &scroll); 82 | 83 | if (prop[0].value.vbool >= 1) 84 | { 85 | DrawText(TextFormat("FOCUS:%i | SCROLL:%i | FPS:%i", focus, scroll, GetFPS()), prop[8].value.v2.x, prop[8].value.v2.y, 20, prop[11].value.vcolor); 86 | } 87 | 88 | EndDrawing(); 89 | //---------------------------------------------------------------------------------- 90 | } 91 | 92 | // De-Initialization 93 | //-------------------------------------------------------------------------------------- 94 | GuiDMSaveProperties("test.props", prop, SIZEOF(prop)); // Save properties to `test.props` file at exit 95 | 96 | CloseWindow(); // Close window and OpenGL context 97 | //-------------------------------------------------------------------------------------- 98 | 99 | return 0; 100 | } 101 | 102 | -------------------------------------------------------------------------------- /examples/property_list/test.props: -------------------------------------------------------------------------------- 1 | # 2 | # Property types: 3 | # b // Bool 4 | # i // Int 5 | # f // Float 6 | # t // Text 7 | # l // Select 8 | # g // Section (Group) 9 | # v2 // Vector 2D 10 | # v3 // Vector 3D 11 | # v4 // Vector 4D 12 | # r // Rectangle 13 | # c // Color 14 | # 15 | 16 | b Bool 0 1 17 | g #102#SECTION 0 2 18 | i Int 0 123 0 0 1 19 | f Float 0 0.990000 0.000000 0.000000 1.000000 3 20 | t Text 1 Hello! 30 21 | l Select 0 ONE;TWO;THREE;FOUR 3 22 | i Int Range 0 32 0 100 1 23 | r Rect 1 0 0 100 200 24 | v2 Vec2 1 20.000000 20.000000 25 | v3 Vec3 1 12.000000 13.000000 14.000000 26 | v4 Vec4 1 12.000000 13.000000 14.000000 15.000000 27 | c Color 1 94 68 197 160 28 | -------------------------------------------------------------------------------- /examples/raygui.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/examples/raygui.ico -------------------------------------------------------------------------------- /examples/raygui.rc: -------------------------------------------------------------------------------- 1 | GLFW_ICON ICON "raygui.ico" 2 | 3 | 1 VERSIONINFO 4 | FILEVERSION 4,0,0,0 5 | PRODUCTVERSION 4,0,0,0 6 | BEGIN 7 | BLOCK "StringFileInfo" 8 | BEGIN 9 | //BLOCK "080904E4" // English UK 10 | BLOCK "040904E4" // English US 11 | BEGIN 12 | //VALUE "CompanyName", "raylib technologies" 13 | VALUE "FileDescription", "raygui application (www.raylib.com)" 14 | VALUE "FileVersion", "4.0.0" 15 | VALUE "InternalName", "raygui app" 16 | VALUE "LegalCopyright", "(c) 2023 Ramon Santamaria (@raysan5)" 17 | //VALUE "OriginalFilename", "raygui_app.exe" 18 | VALUE "ProductName", "raygui app" 19 | VALUE "ProductVersion", "4.0.0" 20 | END 21 | END 22 | BLOCK "VarFileInfo" 23 | BEGIN 24 | //VALUE "Translation", 0x809, 1252 // English UK 25 | VALUE "Translation", 0x409, 1252 // English US 26 | END 27 | END 28 | -------------------------------------------------------------------------------- /examples/scroll_panel/scroll_panel.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - Controls test 4 | * 5 | * TEST CONTROLS: 6 | * - GuiScrollPanel() 7 | * 8 | * DEPENDENCIES: 9 | * raylib 4.0 - Windowing/input management and drawing. 10 | * raygui 3.0 - Immediate-mode GUI controls. 11 | * 12 | * COMPILATION (Windows - MinGW): 13 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 14 | * 15 | * COMPILATION (Linux - gcc): 16 | * gcc -o $(NAME_PART) $(FILE_NAME) -I../../src -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -std=c99 17 | * 18 | * LICENSE: zlib/libpng 19 | * 20 | * Copyright (c) 2019-2024 Vlad Adrian (@Demizdor) and Ramon Santamaria (@raysan5) 21 | * 22 | **********************************************************************************************/ 23 | 24 | #include "raylib.h" 25 | 26 | #define RAYGUI_IMPLEMENTATION 27 | #include "../../src/raygui.h" 28 | 29 | 30 | static void DrawStyleEditControls(void); // Draw and process scroll bar style edition controls 31 | 32 | //------------------------------------------------------------------------------------ 33 | // Program main entry point 34 | //------------------------------------------------------------------------------------ 35 | int main() 36 | { 37 | // Initialization 38 | //--------------------------------------------------------------------------------------- 39 | const int screenWidth = 800; 40 | const int screenHeight = 450; 41 | 42 | InitWindow(screenWidth, screenHeight, "raygui - GuiScrollPanel()"); 43 | 44 | Rectangle panelRec = { 20, 40, 200, 150 }; 45 | Rectangle panelContentRec = {0, 0, 340, 340 }; 46 | Rectangle panelView = { 0 }; 47 | Vector2 panelScroll = { 99, -20 }; 48 | 49 | bool showContentArea = true; 50 | 51 | SetTargetFPS(60); 52 | //--------------------------------------------------------------------------------------- 53 | 54 | // Main game loop 55 | while (!WindowShouldClose()) // Detect window close button or ESC key 56 | { 57 | // Update 58 | //---------------------------------------------------------------------------------- 59 | // TODO: Implement required update logic 60 | //---------------------------------------------------------------------------------- 61 | 62 | // Draw 63 | //---------------------------------------------------------------------------------- 64 | BeginDrawing(); 65 | 66 | ClearBackground(RAYWHITE); 67 | 68 | DrawText(TextFormat("[%f, %f]", panelScroll.x, panelScroll.y), 4, 4, 20, RED); 69 | 70 | GuiScrollPanel(panelRec, NULL, panelContentRec, &panelScroll, &panelView); 71 | 72 | BeginScissorMode(panelView.x, panelView.y, panelView.width, panelView.height); 73 | GuiGrid((Rectangle){panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height}, NULL, 16, 3, NULL); 74 | EndScissorMode(); 75 | 76 | if (showContentArea) DrawRectangle(panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height, Fade(RED, 0.1)); 77 | 78 | DrawStyleEditControls(); 79 | 80 | GuiCheckBox((Rectangle){ 565, 80, 20, 20 }, "SHOW CONTENT AREA", &showContentArea); 81 | 82 | GuiSliderBar((Rectangle){ 590, 385, 145, 15}, "WIDTH", TextFormat("%i", (int)panelContentRec.width), &panelContentRec.width, 1, 600); 83 | GuiSliderBar((Rectangle){ 590, 410, 145, 15 }, "HEIGHT", TextFormat("%i", (int)panelContentRec.height), &panelContentRec.height, 1, 400); 84 | 85 | EndDrawing(); 86 | //---------------------------------------------------------------------------------- 87 | } 88 | 89 | // De-Initialization 90 | //-------------------------------------------------------------------------------------- 91 | CloseWindow(); // Close window and OpenGL context 92 | //-------------------------------------------------------------------------------------- 93 | 94 | return 0; 95 | } 96 | 97 | // Draw and process scroll bar style edition controls 98 | static void DrawStyleEditControls(void) 99 | { 100 | // ScrollPanel style controls 101 | //---------------------------------------------------------- 102 | GuiGroupBox((Rectangle){ 550, 170, 220, 205 }, "SCROLLBAR STYLE"); 103 | 104 | int style = GuiGetStyle(SCROLLBAR, BORDER_WIDTH); 105 | GuiLabel((Rectangle){ 555, 195, 110, 10 }, "BORDER_WIDTH"); 106 | GuiSpinner((Rectangle){ 670, 190, 90, 20 }, NULL, &style, 0, 6, false); 107 | GuiSetStyle(SCROLLBAR, BORDER_WIDTH, style); 108 | 109 | style = GuiGetStyle(SCROLLBAR, ARROWS_SIZE); 110 | GuiLabel((Rectangle){ 555, 220, 110, 10 }, "ARROWS_SIZE"); 111 | GuiSpinner((Rectangle){ 670, 215, 90, 20 }, NULL, &style, 4, 14, false); 112 | GuiSetStyle(SCROLLBAR, ARROWS_SIZE, style); 113 | 114 | style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING); 115 | GuiLabel((Rectangle){ 555, 245, 110, 10 }, "SLIDER_PADDING"); 116 | GuiSpinner((Rectangle){ 670, 240, 90, 20 }, NULL, &style, 0, 14, false); 117 | GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style); 118 | 119 | bool scrollBarArrows = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE); 120 | GuiCheckBox((Rectangle){ 565, 280, 20, 20 }, "ARROWS_VISIBLE", &scrollBarArrows); 121 | GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, scrollBarArrows); 122 | 123 | style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING); 124 | GuiLabel((Rectangle){ 555, 325, 110, 10 }, "SLIDER_PADDING"); 125 | GuiSpinner((Rectangle){ 670, 320, 90, 20 }, NULL, &style, 0, 14, false); 126 | GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style); 127 | 128 | style = GuiGetStyle(SCROLLBAR, SLIDER_WIDTH); 129 | GuiLabel((Rectangle){ 555, 350, 110, 10 }, "SLIDER_WIDTH"); 130 | GuiSpinner((Rectangle){ 670, 345, 90, 20 }, NULL, &style, 2, 100, false); 131 | GuiSetStyle(SCROLLBAR, SLIDER_WIDTH, style); 132 | 133 | const char *text = GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE? "SCROLLBAR: LEFT" : "SCROLLBAR: RIGHT"; 134 | bool toggleScrollBarSide = GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE); 135 | GuiToggle((Rectangle){ 560, 110, 200, 35 }, text, &toggleScrollBarSide); 136 | GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, toggleScrollBarSide); 137 | //---------------------------------------------------------- 138 | 139 | // ScrollBar style controls 140 | //---------------------------------------------------------- 141 | GuiGroupBox((Rectangle){ 550, 20, 220, 135 }, "SCROLLPANEL STYLE"); 142 | 143 | style = GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); 144 | GuiLabel((Rectangle){ 555, 35, 110, 10 }, "SCROLLBAR_WIDTH"); 145 | GuiSpinner((Rectangle){ 670, 30, 90, 20 }, NULL, &style, 6, 30, false); 146 | GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, style); 147 | 148 | style = GuiGetStyle(DEFAULT, BORDER_WIDTH); 149 | GuiLabel((Rectangle){ 555, 60, 110, 10 }, "BORDER_WIDTH"); 150 | GuiSpinner((Rectangle){ 670, 55, 90, 20 }, NULL, &style, 0, 20, false); 151 | GuiSetStyle(DEFAULT, BORDER_WIDTH, style); 152 | //---------------------------------------------------------- 153 | } 154 | -------------------------------------------------------------------------------- /examples/standalone/raygui_custom_backend.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - Standalone mode custom backend 4 | * 5 | * Just edit this file to include your custom implementation to your graphic API 6 | * 7 | * LICENSE: 8 | * 9 | * Copyright (c) 10 | * 11 | **********************************************************************************************/ 12 | 13 | //#include "my_cool_graphic_api.h" 14 | 15 | //---------------------------------------------------------------------------------- 16 | // Defines and Macros 17 | // TODO: Define input keys required by raygui 18 | //---------------------------------------------------------------------------------- 19 | #define KEY_RIGHT 262 20 | #define KEY_LEFT 263 21 | #define KEY_DOWN 264 22 | #define KEY_UP 265 23 | #define KEY_BACKSPACE 259 24 | #define KEY_ENTER 257 25 | #define MOUSE_LEFT_BUTTON 0 26 | 27 | //---------------------------------------------------------------------------------- 28 | // Types and Structures Definition 29 | // TODO: Define required structures, maybe Font/Texture2D should be defined here? 30 | //---------------------------------------------------------------------------------- 31 | // ... 32 | 33 | //---------------------------------------------------------------------------------- 34 | // Global Variables Definition 35 | //---------------------------------------------------------------------------------- 36 | // ... 37 | 38 | //---------------------------------------------------------------------------------- 39 | // Module Functions Definition 40 | // TODO: Define all raygui required functions (previously provided by raylib) 41 | //---------------------------------------------------------------------------------- 42 | 43 | //------------------------------------------------------------------------------- 44 | // Input required functions 45 | //------------------------------------------------------------------------------- 46 | static Vector2 GetMousePosition(void) 47 | { 48 | Vector2 position = { 0 }; 49 | 50 | // TODO: Mouse position 51 | 52 | return position; 53 | } 54 | 55 | static int GetMouseWheelMove(void) 56 | { 57 | // TODO: Mouse wheel movement variation, reseted every frame 58 | 59 | return 0; 60 | } 61 | 62 | static bool IsMouseButtonDown(int button) 63 | { 64 | // TODO: Return true while mouse button [0..2] is being down 65 | 66 | return false; 67 | } 68 | 69 | static bool IsMouseButtonPressed(int button) 70 | { 71 | // TODO: Return true when mouse button [0..2] has been pressed: up->down 72 | 73 | return false; 74 | } 75 | 76 | static bool IsMouseButtonReleased(int button) 77 | { 78 | // TODO: Return true when mouse button [0..2] has been released: down->up 79 | 80 | return false; 81 | } 82 | 83 | static bool IsKeyDown(int key) 84 | { 85 | // TODO: Return true while key is being down 86 | 87 | return false; 88 | } 89 | 90 | static bool IsKeyPressed(int key) 91 | { 92 | // TODO: Return true when key has been pressed: up->down 93 | 94 | return false; 95 | } 96 | 97 | // USED IN: GuiTextBox(), GuiValueBox() 98 | static int GetKeyPressed(void) 99 | { 100 | // TODO: Return last key pressed (up->down) in the frame 101 | 102 | return 0; 103 | } 104 | 105 | //------------------------------------------------------------------------------- 106 | // Drawing required functions 107 | //------------------------------------------------------------------------------- 108 | static void DrawRectangle(int x, int y, int width, int height, Color color) 109 | { 110 | // TODO: Draw rectangle on the screen 111 | } 112 | 113 | // USED IN: GuiColorPicker() 114 | static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4) 115 | { 116 | // TODO: Draw rectangle with gradients (4 vertex colors) on the screen 117 | } 118 | 119 | // USED IN: GuiDropdownBox(), GuiScrollBar() 120 | static void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color) 121 | { 122 | // TODO: Draw triangle on the screen, required for arrows 123 | } 124 | 125 | //------------------------------------------------------------------------------- 126 | // Text required functions 127 | //------------------------------------------------------------------------------- 128 | // USED IN: GuiLoadStyleDefault() 129 | static Font GetFontDefault(void) 130 | { 131 | Font font = { 0 }; 132 | 133 | // TODO: Return default rendering Font for the UI 134 | 135 | return font; 136 | } 137 | 138 | // USED IN: GetTextWidth() 139 | static Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing) 140 | { 141 | Vector2 size = { 0 }; 142 | 143 | // TODO: Return text size (width, height) on screen depending on the Font, text, fontSize and spacing 144 | 145 | return size; 146 | } 147 | 148 | // USED IN: GuiDrawText() 149 | static void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint) 150 | { 151 | // TODO: Draw text on the screen 152 | } 153 | 154 | //------------------------------------------------------------------------------- 155 | // GuiLoadStyle() required functions 156 | //------------------------------------------------------------------------------- 157 | static Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int glyphCount) 158 | { 159 | Font font = { 0 }; 160 | 161 | // TODO: Load a new font from a file 162 | 163 | return font; 164 | } 165 | 166 | static char *LoadText(const char *fileName) 167 | { 168 | // TODO: Load text file data, used by GuiLoadStyle() to load characters list required on Font generation, 169 | // this is a .rgs feature, probably this function is not required in most cases 170 | 171 | return NULL; 172 | } 173 | 174 | static const char *GetDirectoryPath(const char *filePath) 175 | { 176 | // TODO: Get directory path for .rgs file, required to look for a possible .ttf/.otf font file referenced, 177 | // this is a .rgs feature, probably this function is not required in most cases 178 | 179 | return NULL; 180 | } 181 | 182 | -------------------------------------------------------------------------------- /examples/standalone/raygui_standalone.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - Standalone mode usage template 4 | * 5 | * DEPENDENCIES: 6 | * raygui 2.6 - Immediate-mode GUI controls. 7 | * 8 | * 9 | * LICENSE: zlib/libpng 10 | * 11 | * Copyright (c) 2020 Ramon Santamaria (@raysan5) 12 | * 13 | **********************************************************************************************/ 14 | 15 | #define RAYGUI_IMPLEMENTATION 16 | #define RAYGUI_STANDALONE 17 | #include "../../src/raygui.h" 18 | 19 | #include "custom_backend.h" 20 | 21 | //------------------------------------------------------------------------------------ 22 | // Program main entry point 23 | //------------------------------------------------------------------------------------ 24 | int main() 25 | { 26 | // TODO: Initialize your systems (window, graphics, inputs) 27 | 28 | // TODO: Create your game loop 29 | { 30 | // TODO: Use raygui API 31 | } 32 | 33 | // TODO: De-initialize all resources 34 | 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /examples/style_selector/style_selector.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************************* 2 | * 3 | * raygui - style selector 4 | * 5 | * DEPENDENCIES: 6 | * raylib 4.5 - Windowing/input management and drawing 7 | * raygui 3.5 - Immediate-mode GUI controls with custom styling and icons 8 | * 9 | * COMPILATION (Windows - MinGW): 10 | * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99 11 | * 12 | * LICENSE: zlib/libpng 13 | * 14 | * Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) 15 | * 16 | **********************************************************************************************/ 17 | 18 | #include "raylib.h" 19 | 20 | #define RAYGUI_IMPLEMENTATION 21 | //#define RAYGUI_CUSTOM_ICONS // It requires providing gui_icons.h in the same directory 22 | //#include "gui_icons.h" // External icons data provided, it can be generated with rGuiIcons tool 23 | #include "../../src/raygui.h" 24 | 25 | // raygui embedded styles 26 | // NOTE: Included in the same order as selector 27 | #define MAX_GUI_STYLES_AVAILABLE 12 // NOTE: Included light style 28 | #include "../styles/style_jungle.h" // raygui style: jungle 29 | #include "../styles/style_candy.h" // raygui style: candy 30 | #include "../styles/style_lavanda.h" // raygui style: lavanda 31 | #include "../styles/style_cyber.h" // raygui style: cyber 32 | #include "../styles/style_terminal.h" // raygui style: terminal 33 | #include "../styles/style_ashes.h" // raygui style: ashes 34 | #include "../styles/style_bluish.h" // raygui style: bluish 35 | #include "../styles/style_dark.h" // raygui style: dark 36 | #include "../styles/style_cherry.h" // raygui style: cherry 37 | #include "../styles/style_sunny.h" // raygui style: sunny 38 | #include "../styles/style_enefete.h" // raygui style: enefete 39 | 40 | #include // Required for: strcpy() 41 | 42 | //------------------------------------------------------------------------------------ 43 | // Program main entry point 44 | //------------------------------------------------------------------------------------ 45 | int main() 46 | { 47 | // Initialization 48 | //--------------------------------------------------------------------------------------- 49 | const int screenWidth = 800; 50 | const int screenHeight = 480; 51 | 52 | InitWindow(screenWidth, screenHeight, "raygui - styles selector"); 53 | SetExitKey(0); 54 | 55 | // Custom GUI font loading 56 | //Font font = LoadFontEx("fonts/custom_font.ttf", 12, 0, 0); 57 | //GuiSetFont(font); 58 | 59 | bool exitWindow = false; 60 | bool showMessageBox = false; 61 | 62 | // Load default style 63 | GuiLoadStyleBluish(); 64 | int visualStyleActive = 4; 65 | int prevVisualStyleActive = 4; 66 | 67 | SetTargetFPS(60); 68 | //-------------------------------------------------------------------------------------- 69 | 70 | // Main game loop 71 | while (!exitWindow) // Detect window close button or ESC key 72 | { 73 | // Update 74 | //---------------------------------------------------------------------------------- 75 | exitWindow = WindowShouldClose(); 76 | 77 | if (IsKeyPressed(KEY_ESCAPE)) showMessageBox = !showMessageBox; 78 | 79 | if (IsFileDropped()) 80 | { 81 | FilePathList droppedFiles = LoadDroppedFiles(); 82 | 83 | if ((droppedFiles.count > 0) && IsFileExtension(droppedFiles.paths[0], ".rgs")) GuiLoadStyle(droppedFiles.paths[0]); 84 | 85 | UnloadDroppedFiles(droppedFiles); // Clear internal buffers 86 | } 87 | 88 | if (visualStyleActive != prevVisualStyleActive) 89 | { 90 | // Reset to default internal style 91 | // NOTE: Required to unload any previously loaded font texture 92 | GuiLoadStyleDefault(); 93 | 94 | switch (visualStyleActive) 95 | { 96 | case 1: GuiLoadStyleJungle(); break; 97 | case 2: GuiLoadStyleCandy(); break; 98 | case 3: GuiLoadStyleLavanda(); break; 99 | case 4: GuiLoadStyleCyber(); break; 100 | case 5: GuiLoadStyleTerminal(); break; 101 | case 6: GuiLoadStyleAshes(); break; 102 | case 7: GuiLoadStyleBluish(); break; 103 | case 8: GuiLoadStyleDark(); break; 104 | case 9: GuiLoadStyleCherry(); break; 105 | case 10: GuiLoadStyleSunny(); break; 106 | case 11: GuiLoadStyleEnefete(); break; 107 | default: break; 108 | } 109 | 110 | prevVisualStyleActive = visualStyleActive; 111 | } 112 | //---------------------------------------------------------------------------------- 113 | 114 | // Draw 115 | //---------------------------------------------------------------------------------- 116 | BeginDrawing(); 117 | 118 | ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); 119 | 120 | // Visuals options 121 | GuiLabel((Rectangle){ 10, 10, 60, 24 }, "Style:"); 122 | GuiComboBox((Rectangle){ 60,10, 120, 24 }, "default;Jungle;Candy;Lavanda;Cyber;Terminal;Ashes;Bluish;Dark;Cherry;Sunny;Enefete", &visualStyleActive); 123 | 124 | DrawRectangle(10, 44, GuiGetFont().texture.width, GuiGetFont().texture.height, BLACK); 125 | DrawTexture(GuiGetFont().texture, 10, 44, WHITE); 126 | DrawRectangleLines(10, 44, GuiGetFont().texture.width, GuiGetFont().texture.height, 127 | GetColor(GuiGetStyle(DEFAULT, LINE_COLOR))); 128 | 129 | //GuiSetIconScale(2); 130 | //GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); 131 | //GuiButton((Rectangle){ 25, 255, 300, 30 }, GuiIconText(ICON_FILE_SAVE, "Save File")); 132 | //GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); 133 | //---------------------------------------------------------------------------------- 134 | 135 | EndDrawing(); 136 | //---------------------------------------------------------------------------------- 137 | } 138 | 139 | // De-Initialization 140 | //-------------------------------------------------------------------------------------- 141 | CloseWindow(); // Close window and OpenGL context 142 | //-------------------------------------------------------------------------------------- 143 | 144 | return 0; 145 | } 146 | -------------------------------------------------------------------------------- /icons/raygui_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/icons/raygui_icons.png -------------------------------------------------------------------------------- /icons/raygui_icons.rgi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/icons/raygui_icons.rgi -------------------------------------------------------------------------------- /images/raygui_controls_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/images/raygui_controls_panel.png -------------------------------------------------------------------------------- /images/raygui_ricons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/images/raygui_ricons.png -------------------------------------------------------------------------------- /images/raygui_style_table_multi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/images/raygui_style_table_multi.png -------------------------------------------------------------------------------- /images/rguiicons_v100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/images/rguiicons_v100.png -------------------------------------------------------------------------------- /images/rguilayout_v220.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/images/rguilayout_v220.png -------------------------------------------------------------------------------- /images/rguistyler_v210.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/images/rguistyler_v210.png -------------------------------------------------------------------------------- /images/rguistyler_v300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/images/rguistyler_v300.png -------------------------------------------------------------------------------- /logo/raygui.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui.ico -------------------------------------------------------------------------------- /logo/raygui_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_128x128.png -------------------------------------------------------------------------------- /logo/raygui_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_16x16.png -------------------------------------------------------------------------------- /logo/raygui_24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_24x24.png -------------------------------------------------------------------------------- /logo/raygui_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_256x256.png -------------------------------------------------------------------------------- /logo/raygui_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_32x32.png -------------------------------------------------------------------------------- /logo/raygui_48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_48x48.png -------------------------------------------------------------------------------- /logo/raygui_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_512x512.png -------------------------------------------------------------------------------- /logo/raygui_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_64x64.png -------------------------------------------------------------------------------- /logo/raygui_96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/logo/raygui_96x96.png -------------------------------------------------------------------------------- /projects/CMake/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.11) 2 | set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 3 | 4 | project(raygui C) 5 | 6 | # Config options 7 | option(BUILD_RAYGUI_EXAMPLES "Build the examples." OFF) 8 | 9 | # Force building examples if building in the root as standalone. 10 | if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) 11 | set(BUILD_RAYGUI_EXAMPLES TRUE) 12 | endif() 13 | 14 | # Directory Variables 15 | set(RAYGUI_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..) 16 | set(RAYGUI_SRC ${RAYGUI_ROOT}/src) 17 | set(RAYGUI_EXAMPLES ${RAYGUI_ROOT}/examples) 18 | 19 | # raygui 20 | add_library(raygui INTERFACE) 21 | file(GLOB sources ${RAYGUI_SRC}/*.h) 22 | set(RAYGUI_HEADERS ${sources}) 23 | install(FILES 24 | ${RAYGUI_HEADERS} DESTINATION include 25 | ) 26 | target_include_directories(raygui INTERFACE ${RAYGUI_SRC}) 27 | 28 | # Examples 29 | if(${BUILD_RAYGUI_EXAMPLES}) 30 | find_package(Raylib) 31 | 32 | # Get the sources together 33 | set(example_dirs 34 | animation_curve 35 | controls_test_suite 36 | custom_file_dialog 37 | custom_sliders 38 | image_exporter 39 | image_importer_raw 40 | portable_window 41 | property_list 42 | scroll_panel 43 | style_selector 44 | ) 45 | 46 | set(example_sources) 47 | set(example_resources) 48 | 49 | foreach(example_dir ${example_dirs}) 50 | # Get the .c files 51 | file(GLOB sources ${RAYGUI_EXAMPLES}/${example_dir}/*.c) 52 | list(APPEND example_sources ${sources}) 53 | 54 | # Any any resources 55 | file(GLOB resources ${RAYGUI_EXAMPLES}/${example_dir}/resources/*) 56 | list(APPEND example_resources ${resources}) 57 | endforeach() 58 | 59 | # Do each example 60 | foreach(example_source ${example_sources}) 61 | # Create the basename for the example 62 | get_filename_component(example_name ${example_source} NAME) 63 | string(REPLACE ".c" "${OUTPUT_EXT}" example_name ${example_name}) 64 | 65 | # Setup the example 66 | add_executable(${example_name} ${example_source}) 67 | 68 | target_link_libraries(${example_name} PUBLIC raylib raygui) 69 | 70 | string(REGEX MATCH ".*/.*/" resources_dir ${example_source}) 71 | string(APPEND resources_dir "resources") 72 | endforeach() 73 | 74 | # Copy all of the resource files to the destination 75 | file(COPY ${example_resources} DESTINATION "resources/") 76 | endif() 77 | -------------------------------------------------------------------------------- /projects/CMake/README.md: -------------------------------------------------------------------------------- 1 | # raygui CMake Definitions 2 | 3 | This provides CMake definition files for raygui. 4 | 5 | ## Usage 6 | 7 | ``` 8 | cd projects/CMake 9 | mkdir build 10 | cd build 11 | cmake .. 12 | make 13 | ``` -------------------------------------------------------------------------------- /projects/CMake/cmake/FindRaylib.cmake: -------------------------------------------------------------------------------- 1 | find_package(raylib 4.5.0 QUIET CONFIG) 2 | if (NOT raylib_FOUND) 3 | include(FetchContent) 4 | FetchContent_Declare( 5 | raylib 6 | GIT_REPOSITORY https://github.com/raysan5/raylib.git 7 | GIT_TAG 4.5.0 8 | ) 9 | FetchContent_GetProperties(raylib) 10 | if (NOT raylib_POPULATED) # Have we downloaded raylib yet? 11 | set(FETCHCONTENT_QUIET NO) 12 | FetchContent_Populate(raylib) 13 | set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples 14 | set(BUILD_GAMES OFF CACHE BOOL "" FORCE) # or games 15 | add_subdirectory(${raylib_SOURCE_DIR} ${raylib_BINARY_DIR}) 16 | endif() 17 | endif() 18 | -------------------------------------------------------------------------------- /projects/VS2022/examples/test.props: -------------------------------------------------------------------------------- 1 | # 2 | # Property types: 3 | # b // Bool 4 | # i // Int 5 | # f // Float 6 | # t // Text 7 | # l // Select 8 | # g // Section (Group) 9 | # v2 // Vector 2D 10 | # v3 // Vector 3D 11 | # v4 // Vector 4D 12 | # r // Rectangle 13 | # c // Color 14 | # 15 | 16 | b Bool 0 1 17 | g #102#SECTION 0 2 18 | i Int 0 123 0 0 1 19 | f Float 0 0.990000 0.000000 0.000000 1.000000 3 20 | t Text 0 Hello! 30 21 | l Select 0 ONE;TWO;THREE;FOUR 0 22 | i Int Range 0 32 0 100 1 23 | r Rect 0 0 0 100 200 24 | v2 Vec2 0 20.000000 20.000000 25 | v3 Vec3 0 12.000000 13.000000 14.000000 26 | v4 Vec4 0 12.000000 13.000000 14.000000 15.000000 27 | c Color 0 0 255 0 255 28 | -------------------------------------------------------------------------------- /styles/README.md: -------------------------------------------------------------------------------- 1 | # raygui styles 2 | 3 | `raygui` comes with **several custom UI styles** carefully designed for the best visual experience. Those styles have been created using [rGuiStyler](https://raylibtech.itch.io/rguistyler) tool and they complement internal [default style](default), always available by `raygui`. 4 | 5 | ## styles usage 6 | 7 | To use those styles with your `raygui` development, you need to call `GuiLoadStyle()` function at initialization, passing the `.rgs` file to load. Note that `.rgs` is by default a binary file containing the style required font data (glyphs data + glyph atlas image data). 8 | 9 | Styles can also be embedded in the code if desired, `.h` files are provided with every style containing all the required style data, including the font data. To embed those fonts just add the `.h` to your project and call the required function as specified in the header info. 10 | 11 | Here it is a quick overview of those styles, you can navigate to each directory for additional information. 12 | 13 | #### 1. style: [default](default) 14 | ![default style](default/style_default.png) 15 | 16 | #### 2. style: [dark](dark) 17 | ![dark style](dark/style_dark.png) 18 | 19 | #### 3. style: [bluish](bluish) 20 | ![bluish style](bluish/style_bluish.png) 21 | 22 | #### 4. style: [candy](candy) 23 | ![candy style](candy/style_candy.png) 24 | 25 | #### 5. style: [cherry](cherry) 26 | ![cherry style](cherry/style_cherry.png) 27 | 28 | #### 6. style: [cyber](cyber) 29 | ![cyber style](cyber/style_cyber.png) 30 | 31 | #### 7. style: [jungle](jungle) 32 | ![jungle style](jungle/style_jungle.png) 33 | 34 | #### 8. style: [lavanda](lavanda) 35 | ![lavanda style](lavanda/style_lavanda.png) 36 | 37 | #### 9. style: [terminal](terminal) 38 | ![terminal style](terminal/style_terminal.png) 39 | 40 | #### 10. style: [sunny](sunny) 41 | ![sunny style](sunny/style_sunny.png) 42 | 43 | #### 11. style: [ashes](ashes) 44 | ![ashes style](ashes/style_ashes.png) 45 | 46 | #### 12. enefete: [enefete](enefete) 47 | ![enefete style](enefete/style_enefete.png) 48 | 49 | #### 13. amber: [amber](amber) 50 | ![amber style](amber/style_amber.png) 51 | 52 | 53 | *NOTE: Those styles require raylib 5.5 and raygui 4.5* 54 | -------------------------------------------------------------------------------- /styles/amber/README.md: -------------------------------------------------------------------------------- 1 | ## style: amber 2 | 3 | Amber accenture and charcoal tones with a light font for nice visuals. 4 | 5 | ![amber style table](style_amber.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_amber.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_amber.h` | Embeddable style as code file, self-contained, includes font data | 15 | | `style_amber.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 16 | 17 | ## screenshot 18 | 19 | ![amber style screen](screenshot.png) 20 | 21 | ## about font 22 | 23 | "Hello World" font by Anthony Gross 24 | ``` 25 | CATEGORY: Monospace 26 | LANGUAGE SUPPORT: Latin Extended 27 | FORMAT: TTF 28 | LICENSE: Free for personal and commercial use, SIL Open Font License 29 | ``` 30 | 31 | This font is licensed under the Open Font License. More info: https://www.dafont.com/es/hello-world.font 32 | 33 | _The style font is optimized to look best at 16px, if you require different sizing please open the style in rGuiStyler and edit it._ 34 | -------------------------------------------------------------------------------- /styles/amber/hello-world.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/amber/hello-world.ttf -------------------------------------------------------------------------------- /styles/amber/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/amber/screenshot.old.png -------------------------------------------------------------------------------- /styles/amber/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/amber/screenshot.png -------------------------------------------------------------------------------- /styles/amber/style_amber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/amber/style_amber.png -------------------------------------------------------------------------------- /styles/amber/style_amber.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/amber/style_amber.rgs -------------------------------------------------------------------------------- /styles/ashes/README.md: -------------------------------------------------------------------------------- 1 | ## style: ashes 2 | 3 | What once was life now is ashes, just as slight reminiscense covers the ground, a gray sequence of tones that reminds to a distant past. 4 | 5 | ![ashes style table](style_ashes.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_ashes.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_ashes.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_ashes.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_ashes.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_ashes.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![ashes style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "V5 Loxica Lixera" font by vFive Digital (Roberto Christen). 26 | 27 | 100% free font, downloaded from dafont.com: [v5loxica-lixera](https://www.dafont.com/v5loxica-lixera.font) 28 | -------------------------------------------------------------------------------- /styles/ashes/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/ashes/font_readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/ashes/font_readme.txt -------------------------------------------------------------------------------- /styles/ashes/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/ashes/screenshot.old.png -------------------------------------------------------------------------------- /styles/ashes/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/ashes/screenshot.png -------------------------------------------------------------------------------- /styles/ashes/style_ashes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/ashes/style_ashes.png -------------------------------------------------------------------------------- /styles/ashes/style_ashes.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/ashes/style_ashes.rgs -------------------------------------------------------------------------------- /styles/ashes/style_ashes.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 16 charset.txt v5loxical.ttf 11 | p 00 00 0xf0f0f0ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x868686ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0xe6e6e6ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0x929999ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0xeaeaeaff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0x98a1a8ff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0x3f3f3fff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0xf6f6f6ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0x414141ff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x8b8b8bff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x777777ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x959595ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x00000010 TEXT_SIZE 24 | p 00 18 0x9dadb1ff LINE_COLOR 25 | p 00 19 0x6b6b6bff BACKGROUND_COLOR 26 | p 00 20 0x00000018 TEXT_LINE_SPACING 27 | -------------------------------------------------------------------------------- /styles/ashes/v5loxical.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/ashes/v5loxical.ttf -------------------------------------------------------------------------------- /styles/bluish/README.md: -------------------------------------------------------------------------------- 1 | ## style: bluish 2 | 3 | Like a breeze, a slight touch of color cover the clear sky, a spacious and relaxing feeling. 4 | 5 | ![bluish style table](style_bluish.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_bluish.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_bluish.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_bluish.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_bluish.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_bluish.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![bluish style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Homespun BRK" font by AEnigma (Brian Kent). 26 | 27 | 100% free font, downloaded from dafont.com: [homespun-brk](https://www.dafont.com/homespun-brk.font) 28 | -------------------------------------------------------------------------------- /styles/bluish/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/bluish/font_readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/bluish/font_readme.txt -------------------------------------------------------------------------------- /styles/bluish/homespun.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/bluish/homespun.ttf -------------------------------------------------------------------------------- /styles/bluish/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/bluish/screenshot.old.png -------------------------------------------------------------------------------- /styles/bluish/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/bluish/screenshot.png -------------------------------------------------------------------------------- /styles/bluish/style_bluish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/bluish/style_bluish.png -------------------------------------------------------------------------------- /styles/bluish/style_bluish.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/bluish/style_bluish.rgs -------------------------------------------------------------------------------- /styles/bluish/style_bluish.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 10 charset.txt homespun.ttf 11 | p 00 00 0x5ca6a6ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0xb4e8f3ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0x447e77ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0x5f8792ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0xcdeff7ff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0x4c6c74ff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0x3b5b5fff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0xeaffffff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0x275057ff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x96aaacff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0xc8d7d9ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x8c9c9eff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 18 0x84adb7ff LINE_COLOR 24 | p 00 19 0xe8eef1ff BACKGROUND_COLOR 25 | -------------------------------------------------------------------------------- /styles/candy/README.md: -------------------------------------------------------------------------------- 1 | ## style: candy 2 | 3 | Sweet, colorful, tasty! Enjoy this funfair ride and be careful with the witch of the candy house! 4 | 5 | ![candy style table](style_candy.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_candy.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_candy.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_candy.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_candy.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_candy.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![candy style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "V5 Eastergothic" font by vFive Digital (Roberto Christen). 26 | 27 | 100% free font, downloaded from dafont.com: [v5eastergothic](https://www.dafont.com/v5eastergothic.font) 28 | -------------------------------------------------------------------------------- /styles/candy/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/candy/font_readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/candy/font_readme.txt -------------------------------------------------------------------------------- /styles/candy/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/candy/screenshot.old.png -------------------------------------------------------------------------------- /styles/candy/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/candy/screenshot.png -------------------------------------------------------------------------------- /styles/candy/style_candy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/candy/style_candy.png -------------------------------------------------------------------------------- /styles/candy/style_candy.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/candy/style_candy.rgs -------------------------------------------------------------------------------- /styles/candy/style_candy.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 15 charset.txt v5easter.ttf 11 | p 00 00 0xe58b68ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0xfeda96ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0xe59b5fff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0xee813fff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0xfcd85bff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0xfc6955ff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0xb34848ff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0xeb7272ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0xbd4a4aff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x94795dff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0xc2a37aff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x9c8369ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x0000000f TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0xd77575ff LINE_COLOR 26 | p 00 19 0xfff5e1ff BACKGROUND_COLOR 27 | p 00 20 0x00000016 TEXT_LINE_SPACING 28 | -------------------------------------------------------------------------------- /styles/candy/v5easter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/candy/v5easter.ttf -------------------------------------------------------------------------------- /styles/cherry/README.md: -------------------------------------------------------------------------------- 1 | ## style: cherry 2 | 3 | Sweet with a touch of liquour, covered in chocolate, just give it a try! Not suitable for every palate, only the most demanding. 4 | 5 | ![cherry style table](style_cherry.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_cherry.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_cherry.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_cherry.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_cherry.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_cherry.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![cherry style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Westington" font by Hazel Abbiati. 26 | 27 | 100% free font, downloaded from dafont.com: [westington](https://www.dafont.com/westington.font) 28 | -------------------------------------------------------------------------------- /styles/cherry/Westington.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cherry/Westington.ttf -------------------------------------------------------------------------------- /styles/cherry/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/cherry/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cherry/screenshot.old.png -------------------------------------------------------------------------------- /styles/cherry/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cherry/screenshot.png -------------------------------------------------------------------------------- /styles/cherry/style_cherry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cherry/style_cherry.png -------------------------------------------------------------------------------- /styles/cherry/style_cherry.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cherry/style_cherry.rgs -------------------------------------------------------------------------------- /styles/cherry/style_cherry.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 15 charset.txt Westington.ttf 11 | p 00 00 0xda5757ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x753233ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0xe17373ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0xfaaa97ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0xe06262ff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0xfdb4aaff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0xe03c46ff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0x5b1e20ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0xc2474fff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0xa19292ff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x706060ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x9e8585ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x0000000f TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0xfb8170ff LINE_COLOR 26 | p 00 19 0x3a1720ff BACKGROUND_COLOR 27 | p 00 20 0x00000016 TEXT_LINE_SPACING 28 | -------------------------------------------------------------------------------- /styles/cyber/Kyrou7Wide.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cyber/Kyrou7Wide.ttf -------------------------------------------------------------------------------- /styles/cyber/README.md: -------------------------------------------------------------------------------- 1 | ## style: cyber 2 | 3 | Future is now! Neons and shadows, city never sleeps! Robots waiting in the corners and expensive vending machines! You got the style! 4 | 5 | ![cyber style table](style_cyber.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_cyber.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_cyber.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_cyber.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_cyber.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_cyber.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![cyber style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Grixel Kyrou 7 Wide" font by [Nikos Giannakopoulos](http://www.grixel.gr/). 26 | 27 | 100% free font, downloaded from dafont.com: [grixel-kyrou-7-wide](https://www.dafont.com/grixel-kyrou-7-wide.font) 28 | -------------------------------------------------------------------------------- /styles/cyber/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/cyber/font_readme.txt: -------------------------------------------------------------------------------- 1 | Thank you for downloading the free Grixel fonts. You can use them in your personal and commercial projects too. They include Western European, Central European, Turkish and Greek characters. They are Unicode TrueType fonts and are optimized to work in both Windows XP and Mac OS X platforms using Adobe Photoshop CS2 and Macromedia Flash 8. 2 | 3 | 4 | Grixel fonts are under Creative Commons Attribution-NoDerivs 2.5 License which can be found here: 5 | 6 | http://creativecommons.org/licenses/by-nd/2.5/ 7 | 8 | =============================================================== 9 | Attribution-NoDerivs 2.5 10 | 11 | You are free: 12 | 13 | * to copy, distribute, display, and perform the work 14 | * to make commercial use of the work 15 | 16 | Under the following conditions: 17 | 18 | by 19 | Attribution. You must attribute the work in the manner specified by the author or licensor. 20 | 21 | nd 22 | No Derivative Works. You may not alter, transform, or build upon this work. 23 | 24 | * For any reuse or distribution, you must make clear to others the license terms of this work. 25 | * Any of these conditions can be waived if you get permission from the copyright holder. 26 | 27 | Your fair use and other rights are in no way affected by the above. 28 | =============================================================== 29 | 30 | 31 | In no event shall Nikos Giannakopoulos be held liable to you for any consequential or incidental damages, including any lost revenue, profits, goodwill or savings, or for any claim by any third party caused by using these fonts. 32 | 33 | Please read the UsageGuides.pdf before you use them. 34 | 35 | 36 | Grixel - Greek pixel fonts | Nikos Giannakopoulos | www.grixel.gr -------------------------------------------------------------------------------- /styles/cyber/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cyber/screenshot.old.png -------------------------------------------------------------------------------- /styles/cyber/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cyber/screenshot.png -------------------------------------------------------------------------------- /styles/cyber/style_cyber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cyber/style_cyber.png -------------------------------------------------------------------------------- /styles/cyber/style_cyber.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/cyber/style_cyber.rgs -------------------------------------------------------------------------------- /styles/cyber/style_cyber.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 14 charset.txt Kyrou 7 Wide.ttf 11 | p 00 00 0x2f7486ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x024658ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0x51bfd3ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0x82cde0ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0x3299b4ff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0xb6e1eaff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0xeb7630ff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0xffbc51ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0xd86f36ff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x134b5aff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x02313dff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x17505fff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x0000000e TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0x81c0d0ff LINE_COLOR 26 | p 00 19 0x00222bff BACKGROUND_COLOR 27 | p 00 20 0x00000015 TEXT_LINE_SPACING 28 | -------------------------------------------------------------------------------- /styles/dark/PixelOperator.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/dark/PixelOperator.ttf -------------------------------------------------------------------------------- /styles/dark/README.md: -------------------------------------------------------------------------------- 1 | ## style: dark 2 | 3 | Classical dark style with an extra high-def colour touch! Elegant and professional, perfect for the expensive tools! 4 | 5 | ![dark style table](style_dark.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_dark.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_dark.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_dark.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_dark.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_dark.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![dark style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Pixel Operator" font by de Jayvee Enaguas. 26 | 27 | CC0 1.0 Universal, downloaded from dafont.com: [pixel-operator](https://www.dafont.com/pixel-operator.font) 28 | -------------------------------------------------------------------------------- /styles/dark/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/dark/font_LICENSE.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /styles/dark/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/dark/screenshot.old.png -------------------------------------------------------------------------------- /styles/dark/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/dark/screenshot.png -------------------------------------------------------------------------------- /styles/dark/style_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/dark/style_dark.png -------------------------------------------------------------------------------- /styles/dark/style_dark.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/dark/style_dark.rgs -------------------------------------------------------------------------------- /styles/dark/style_dark.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 16 charset.txt PixelOperator.ttf 11 | p 00 00 0x878787ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x2c2c2cff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0xc3c3c3ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0xe1e1e1ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0x848484ff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0x181818ff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0x000000ff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0xefefefff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0x202020ff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x6a6a6aff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x818181ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x606060ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x00000010 TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0x9d9d9dff LINE_COLOR 26 | p 00 19 0x3c3c3cff BACKGROUND_COLOR 27 | p 00 20 0x00000018 TEXT_LINE_SPACING 28 | p 01 05 0xf7f7f7ff LABEL_TEXT_COLOR_FOCUSED 29 | p 01 08 0x898989ff LABEL_TEXT_COLOR_PRESSED 30 | p 04 05 0xb0b0b0ff SLIDER_TEXT_COLOR_FOCUSED 31 | p 05 05 0x848484ff PROGRESSBAR_TEXT_COLOR_FOCUSED 32 | p 09 05 0xf5f5f5ff TEXTBOX_TEXT_COLOR_FOCUSED 33 | p 10 05 0xf6f6f6ff VALUEBOX_TEXT_COLOR_FOCUSED 34 | -------------------------------------------------------------------------------- /styles/default/README.md: -------------------------------------------------------------------------------- 1 | ## style: default 2 | 3 | raylib style, simple and easy-to-use. Light colors, wide borders, a sophisticated touch. 4 | 5 | ![default style table](style_default.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_default.txt.rgs` | Text style file, no font data, uses raylib default font | 14 | | `style_default.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 15 | 16 | ## screenshot 17 | 18 | ![default style screen](screenshot.png) 19 | 20 | ## about font 21 | 22 | raylib font by Ramon Santamaria ([@raysan5](https://twitter.com/raysan5)). 23 | -------------------------------------------------------------------------------- /styles/default/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/default/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/default/screenshot.old.png -------------------------------------------------------------------------------- /styles/default/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/default/screenshot.png -------------------------------------------------------------------------------- /styles/default/style_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/default/style_default.png -------------------------------------------------------------------------------- /styles/default/style_default.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 10 charset.txt PixelOperator.ttf 11 | -------------------------------------------------------------------------------- /styles/enefete/GenericMobileSystemNuevo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/enefete/GenericMobileSystemNuevo.ttf -------------------------------------------------------------------------------- /styles/enefete/README.md: -------------------------------------------------------------------------------- 1 | ## style: enefete 2 | 3 | Inspired by money and pain, a desperate jump into the trendings train, a train to nowhere. Don't stare at it for too long! 4 | 5 | ![enefete style table](style_enefete.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_enefete.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_enefete.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_enefete.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_enefete.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_enefete.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![enefete style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Generic Mobile System" font by de Jayvee Enaguas. 26 | 27 | CC0 1.0 Universal, downloaded from dafont.com: [generic-mobile-system](https://www.dafont.com/generic-mobile-system.font) 28 | -------------------------------------------------------------------------------- /styles/enefete/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/enefete/font_LICENSE.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /styles/enefete/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/enefete/screenshot.old.png -------------------------------------------------------------------------------- /styles/enefete/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/enefete/screenshot.png -------------------------------------------------------------------------------- /styles/enefete/style_enefete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/enefete/style_enefete.png -------------------------------------------------------------------------------- /styles/enefete/style_enefete.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/enefete/style_enefete.rgs -------------------------------------------------------------------------------- /styles/enefete/style_enefete.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 16 charset.txt GenericMobileSystemNuevo.ttf 11 | p 00 00 0x1980d5ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x4df3ebff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0x103e60ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0xe7e2f7ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0x23d4ddff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0xf1f1f1ff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0x6413a6ff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0xea66d9ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0x9f00bbff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x4b909eff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x73c7d0ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x448894ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x00000010 TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0x1d3f6cff LINE_COLOR 26 | p 00 19 0x29c9e5ff BACKGROUND_COLOR 27 | p 00 20 0x00000018 TEXT_LINE_SPACING 28 | -------------------------------------------------------------------------------- /styles/genesis/PixelOperator.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/genesis/PixelOperator.ttf -------------------------------------------------------------------------------- /styles/genesis/font_LICENSE.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /styles/genesis/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/genesis/screenshot.png -------------------------------------------------------------------------------- /styles/genesis/style_genesis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/genesis/style_genesis.png -------------------------------------------------------------------------------- /styles/genesis/style_genesis.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/genesis/style_genesis.rgs -------------------------------------------------------------------------------- /styles/jungle/PixelIntv.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/jungle/PixelIntv.otf -------------------------------------------------------------------------------- /styles/jungle/README.md: -------------------------------------------------------------------------------- 1 | ## style: jungle 2 | 3 | Sunset in the jungle, trees do not let to see the last rays of sun on the horizon, small creek in the path, mug on the shoes, a touch of danger and the adventure feeling, get into your jeep and drive with this style. 4 | 5 | ![jungle style table](style_jungle.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_jungle.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_jungle.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_jungle.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_jungle.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_jungle.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![jungle style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Pixel Intv" font by [Pixel Sagas](http://www.pixelsagas.com) (Neale and Shayna Davidson). 26 | 27 | 100% free font, downloaded from dafont.com: [pixel-intv](https://www.dafont.com/pixel-intv.font) 28 | -------------------------------------------------------------------------------- /styles/jungle/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/jungle/font_readme.txt: -------------------------------------------------------------------------------- 1 | Shareware/ Font License 2 | 3 | Pixel Sagas Freeware Fonts EULA (End User License Agreement) and Software Inclusion Agreement 4 | 5 | "Purchaser" and "User" may be used interchangeably in this agreement. 6 | 7 | "Pixel Sagas" and "Neale Davidson" may be used interchangeably in this agreement. These all refer to the intellectual and legal property of Neale Davidson. 8 | 9 | Usage 10 | 11 | Pixel Saga's Shareware Fonts are free to use for personal, non-commercial purposes. No payment is necessary to use Pixel Saga's Freeware Fonts for personal use, and there is no limit to the amount of prints, pages, or other medium to be produced using them. However, you cannot offer the font for commercial sale, or offer for direct download. The inclusion othe font name and/or site URL in the credits or documentation when it is used is appreciated, but this is not mandatory. 12 | 13 | Payment 14 | 15 | Payment is not required for the use of Pixel Saga's Shareware Fonts. Commercial use requires a modest fee which can be paid through the pixelsagas.com web site through Paypal.com's services. The transaction receipt for any shareware "commercial license" purchase will suffice as proof of license. 16 | 17 | Support 18 | 19 | Font installation help is available at http://www.pixelsagas.com. If you experience problems with any Pixel Saga's Freeware font (such as spacing issues or missing characters), please verify that you have the correct and current version of the fonts. In the case of Freeware fonts, downloading the font directly from the Pixel Sagas site will ensure that the font files have not been altered. 20 | 21 | Software Inclusion Agreement 22 | 23 | Pixel Saga's software products are protected by copyright laws and International copyright treaties, as well as other intellectual property laws and treaties. All Pixel Saga's software products are licensed, not sold. 24 | 25 | 1) GRANT OF LICENSE 26 | 27 | This document grants the user the following rights: 28 | 29 | Installation and Use. The user may install and use an unlimited number of copies of the software product. The user may not offer Pixel Sagas freeware fonts for direct download unless the user has received explicit, written permission from Neale Davidson. Otherwise please direct users to the http://www.pixelsagas.com website. Pixel Sagas freeware fonts may, however, be embedded for web, publication, or general software use. 30 | 31 | 2) WARRANTIES 32 | 33 | None 34 | 35 | Pixel Sagas expressly disclaims any warranty for the software product. The software product and any related documentation is provided "as is" without warranty of any kind, either express or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose, or non-infringement. The entire risk arising out of use or performance of the software product remains with the user. 36 | 37 | No Liability For Consequential Damages. 38 | 39 | In no event shall Neale Davidson or Pixel Sagas be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this product, even if Pixel Sagas has been advised of the possibility of such damages. 40 | 41 | 3) MISCELLANEOUS 42 | 43 | Should the user have any questions concerning this document or you desire to contact Neale Davidson for any reason, please email jaynz@pixelsagas.com . 44 | 45 | Governing Law 46 | 47 | This agreement is governed by and subject to the laws of the United States of America. 48 | -------------------------------------------------------------------------------- /styles/jungle/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/jungle/screenshot.old.png -------------------------------------------------------------------------------- /styles/jungle/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/jungle/screenshot.png -------------------------------------------------------------------------------- /styles/jungle/style_jungle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/jungle/style_jungle.png -------------------------------------------------------------------------------- /styles/jungle/style_jungle.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/jungle/style_jungle.rgs -------------------------------------------------------------------------------- /styles/jungle/style_jungle.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 12 charset.txt Pixel Intv.otf 11 | p 00 00 0x60827dff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x2c3334ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0x82a29fff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0x5f9aa8ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0x334e57ff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0x6aa9b8ff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0xa9cb8dff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0x3b6357ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0x97af81ff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x5b6462ff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x2c3334ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x666b69ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x0000000c TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0x638465ff LINE_COLOR 26 | p 00 19 0x2b3a3aff BACKGROUND_COLOR 27 | p 00 20 0x00000012 TEXT_LINE_SPACING 28 | -------------------------------------------------------------------------------- /styles/lavanda/Cartridge.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/lavanda/Cartridge.ttf -------------------------------------------------------------------------------- /styles/lavanda/README.md: -------------------------------------------------------------------------------- 1 | ## style: lavanda 2 | 3 | Walk thought the fields full of lavanda, feels like a dream, a touch of fantasy, just relax and close your eyes, could you feel it? 4 | 5 | ![lavanda style table](style_lavanda.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_lavanda.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_lavanda.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_lavanda.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_lavanda.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_lavanda.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![lavanda style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Cartridge" font by [jeti](https://fontenddev.com/) 26 | 27 | Licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), downloaded from dafont.com: [cartridge](https://www.dafont.com/cartridge.font) 28 | -------------------------------------------------------------------------------- /styles/lavanda/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/lavanda/font_readme.txt: -------------------------------------------------------------------------------- 1 | Cartridge by jeti: A decorative, Art Nouveau-inspired font with a dainty, fantastical hand-lettered feel. 2 | 3 | You are free to use this font for personal or commercial projects, all I ask is that you include credit. 4 | 5 | Licensed under CC BY 4.0: https://creativecommons.org/licenses/by/4.0/ 6 | More info: https://fontenddev.com/fonts/cartridge/ 7 | -------------------------------------------------------------------------------- /styles/lavanda/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/lavanda/screenshot.old.png -------------------------------------------------------------------------------- /styles/lavanda/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/lavanda/screenshot.png -------------------------------------------------------------------------------- /styles/lavanda/style_lavanda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/lavanda/style_lavanda.png -------------------------------------------------------------------------------- /styles/lavanda/style_lavanda.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/lavanda/style_lavanda.rgs -------------------------------------------------------------------------------- /styles/lavanda/style_lavanda.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 16 charset.txt Cartridge.ttf 11 | p 00 00 0xab9bd3ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x3e4350ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0xdadaf4ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0xee84a0ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0xf4b7c7ff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0xb7657bff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0xd5c8dbff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0x966ec0ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0xd7ccf7ff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x8fa2bdff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x6b798dff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x8292a9ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x00000010 TEXT_SIZE 24 | p 00 18 0x84adb7ff LINE_COLOR 25 | p 00 19 0x5b5b81ff BACKGROUND_COLOR 26 | p 00 20 0x00000018 TEXT_LINE_SPACING 27 | -------------------------------------------------------------------------------- /styles/rltech/2a03_memesbruh03.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/rltech/2a03_memesbruh03.ttf -------------------------------------------------------------------------------- /styles/rltech/font_readme.txt: -------------------------------------------------------------------------------- 1 | 2 | Every font made by MB03 is 100% free for personal & commercial use. 3 | Including the font(s) in this archive. 4 | 5 | 6 | 7 | ~ memesbruh03~ 8 | 9 | For more cool things, go to...: 10 | https://memesbruh03.neocities.org/ -------------------------------------------------------------------------------- /styles/rltech/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/rltech/screenshot.old.png -------------------------------------------------------------------------------- /styles/rltech/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/rltech/screenshot.png -------------------------------------------------------------------------------- /styles/rltech/style_rltech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/rltech/style_rltech.png -------------------------------------------------------------------------------- /styles/rltech/style_rltech.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/rltech/style_rltech.rgs -------------------------------------------------------------------------------- /styles/sunny/GenericMobileSystemNuevo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/sunny/GenericMobileSystemNuevo.ttf -------------------------------------------------------------------------------- /styles/sunny/README.md: -------------------------------------------------------------------------------- 1 | ## style: sunny 2 | 3 | Sweet, colorful, sunny! Inspired by the [Playdate](https://play.date/) console and its [pulp](https://play.date/pulp/) editor! 4 | 5 | ![sunny style table](style_sunny.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_sunny.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_sunny.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_sunny.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_sunny.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_sunny.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![sunny style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Generic Mobile System" font by Jayvee Enaguas (HarvettFox96). 26 | 27 | CC0 free font, downloaded from dafont.com: [generic-mobile-system](https://www.dafont.com/es/generic-mobile-system.font) 28 | -------------------------------------------------------------------------------- /styles/sunny/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/sunny/font_LICENSE.txt: -------------------------------------------------------------------------------- 1 | ===| Description |=== 2 | 3 | Generic Mobile System is a raster proportional sans serif typeface, extracted from various generic/knockoff mobile devices, created with libre/free font editor software FontForge. 4 | 5 | Source files: https://notabug.org/HarvettFox96/ttf-genericmobile/ 6 | 7 | ===| Update log |=== 8 | 9 | Version 20190323.02: 10 | 11 | - OS/2 and TeX metric fixes. 12 | - Updated Panose. 13 | 14 | Version 20190323.01: 15 | 16 | - Added outline variant. 17 | - Minor fixes. 18 | 19 | Version 20190103.03: 20 | 21 | - Minor bearing tweaks. (Clásico only) 22 | - Minor fixes. 23 | 24 | Version 20190103.02: 25 | 26 | - Bearing tweaks from the different generic mobile phone as Cherry Mobile S5. (Clásico only) 27 | - Minor fixes. 28 | 29 | Version 20190103.01: 30 | 31 | - Initial public release. 32 | 33 | ===| Copyright/attribution notice |=== 34 | 35 | © 2009-2019 Jayvee Enaguas (HarvettFox96). Released under a libre/free public domain licence as Creative Commons Zero (CC0) 1.0. Applies worldwide countries including the Philippines, Spain, etc. 36 | 37 | 38 | ------------------------------------------------------------------------------- 39 | 40 | Creative Commons Legal Code 41 | 42 | CC0 1.0 Universal 43 | 44 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 45 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 46 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 47 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 48 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 49 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 50 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 51 | HEREUNDER. 52 | 53 | Statement of Purpose 54 | 55 | The laws of most jurisdictions throughout the world automatically confer 56 | exclusive Copyright and Related Rights (defined below) upon the creator 57 | and subsequent owner(s) (each and all, an "owner") of an original work of 58 | authorship and/or a database (each, a "Work"). 59 | 60 | Certain owners wish to permanently relinquish those rights to a Work for 61 | the purpose of contributing to a commons of creative, cultural and 62 | scientific works ("Commons") that the public can reliably and without fear 63 | of later claims of infringement build upon, modify, incorporate in other 64 | works, reuse and redistribute as freely as possible in any form whatsoever 65 | and for any purposes, including without limitation commercial purposes. 66 | These owners may contribute to the Commons to promote the ideal of a free 67 | culture and the further production of creative, cultural and scientific 68 | works, or to gain reputation or greater distribution for their Work in 69 | part through the use and efforts of others. 70 | 71 | For these and/or other purposes and motivations, and without any 72 | expectation of additional consideration or compensation, the person 73 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 74 | is an owner of Copyright and Related Rights in the Work, voluntarily 75 | elects to apply CC0 to the Work and publicly distribute the Work under its 76 | terms, with knowledge of his or her Copyright and Related Rights in the 77 | Work and the meaning and intended legal effect of CC0 on those rights. 78 | 79 | 1. Copyright and Related Rights. A Work made available under CC0 may be 80 | protected by copyright and related or neighboring rights ("Copyright and 81 | Related Rights"). Copyright and Related Rights include, but are not 82 | limited to, the following: 83 | 84 | i. the right to reproduce, adapt, distribute, perform, display, 85 | communicate, and translate a Work; 86 | ii. moral rights retained by the original author(s) and/or performer(s); 87 | iii. publicity and privacy rights pertaining to a person's image or 88 | likeness depicted in a Work; 89 | iv. rights protecting against unfair competition in regards to a Work, 90 | subject to the limitations in paragraph 4(a), below; 91 | v. rights protecting the extraction, dissemination, use and reuse of data 92 | in a Work; 93 | vi. database rights (such as those arising under Directive 96/9/EC of the 94 | European Parliament and of the Council of 11 March 1996 on the legal 95 | protection of databases, and under any national implementation 96 | thereof, including any amended or successor version of such 97 | directive); and 98 | vii. other similar, equivalent or corresponding rights throughout the 99 | world based on applicable law or treaty, and any national 100 | implementations thereof. 101 | 102 | 2. Waiver. To the greatest extent permitted by, but not in contravention 103 | of, applicable law, Affirmer hereby overtly, fully, permanently, 104 | irrevocably and unconditionally waives, abandons, and surrenders all of 105 | Affirmer's Copyright and Related Rights and associated claims and causes 106 | of action, whether now known or unknown (including existing as well as 107 | future claims and causes of action), in the Work (i) in all territories 108 | worldwide, (ii) for the maximum duration provided by applicable law or 109 | treaty (including future time extensions), (iii) in any current or future 110 | medium and for any number of copies, and (iv) for any purpose whatsoever, 111 | including without limitation commercial, advertising or promotional 112 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 113 | member of the public at large and to the detriment of Affirmer's heirs and 114 | successors, fully intending that such Waiver shall not be subject to 115 | revocation, rescission, cancellation, termination, or any other legal or 116 | equitable action to disrupt the quiet enjoyment of the Work by the public 117 | as contemplated by Affirmer's express Statement of Purpose. 118 | 119 | 3. Public License Fallback. Should any part of the Waiver for any reason 120 | be judged legally invalid or ineffective under applicable law, then the 121 | Waiver shall be preserved to the maximum extent permitted taking into 122 | account Affirmer's express Statement of Purpose. In addition, to the 123 | extent the Waiver is so judged Affirmer hereby grants to each affected 124 | person a royalty-free, non transferable, non sublicensable, non exclusive, 125 | irrevocable and unconditional license to exercise Affirmer's Copyright and 126 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 127 | maximum duration provided by applicable law or treaty (including future 128 | time extensions), (iii) in any current or future medium and for any number 129 | of copies, and (iv) for any purpose whatsoever, including without 130 | limitation commercial, advertising or promotional purposes (the 131 | "License"). The License shall be deemed effective as of the date CC0 was 132 | applied by Affirmer to the Work. Should any part of the License for any 133 | reason be judged legally invalid or ineffective under applicable law, such 134 | partial invalidity or ineffectiveness shall not invalidate the remainder 135 | of the License, and in such case Affirmer hereby affirms that he or she 136 | will not (i) exercise any of his or her remaining Copyright and Related 137 | Rights in the Work or (ii) assert any associated claims and causes of 138 | action with respect to the Work, in either case contrary to Affirmer's 139 | express Statement of Purpose. 140 | 141 | 4. Limitations and Disclaimers. 142 | 143 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 144 | surrendered, licensed or otherwise affected by this document. 145 | b. Affirmer offers the Work as-is and makes no representations or 146 | warranties of any kind concerning the Work, express, implied, 147 | statutory or otherwise, including without limitation warranties of 148 | title, merchantability, fitness for a particular purpose, non 149 | infringement, or the absence of latent or other defects, accuracy, or 150 | the present or absence of errors, whether or not discoverable, all to 151 | the greatest extent permissible under applicable law. 152 | c. Affirmer disclaims responsibility for clearing rights of other persons 153 | that may apply to the Work or any use thereof, including without 154 | limitation any person's Copyright and Related Rights in the Work. 155 | Further, Affirmer disclaims responsibility for obtaining any necessary 156 | consents, permissions or other rights required for any use of the 157 | Work. 158 | d. Affirmer understands and acknowledges that Creative Commons is not a 159 | party to this document and has no duty or obligation with respect to 160 | this CC0 or use of the Work. 161 | -------------------------------------------------------------------------------- /styles/sunny/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/sunny/screenshot.old.png -------------------------------------------------------------------------------- /styles/sunny/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/sunny/screenshot.png -------------------------------------------------------------------------------- /styles/sunny/style_sunny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/sunny/style_sunny.png -------------------------------------------------------------------------------- /styles/sunny/style_sunny.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/sunny/style_sunny.rgs -------------------------------------------------------------------------------- /styles/sunny/style_sunny.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 16 charset.txt GenericMobileSystemNuevo.ttf 11 | p 00 00 0x9c760aff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x594006ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0xf6d519ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0xf6ee89ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0xf5f3d1ff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0xf4cd19ff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0xf7e580ff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0xf7f2c1ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0x52470aff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0xc0be92ff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0xd3d3a1ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0xbcbc89ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x00000010 TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0x725706ff LINE_COLOR 26 | p 00 19 0xf0be4bff BACKGROUND_COLOR 27 | p 00 20 0x00000018 TEXT_LINE_SPACING 28 | p 01 02 0x504506ff LABEL_TEXT_COLOR_NORMAL 29 | p 01 05 0xfdeb9bff LABEL_TEXT_COLOR_FOCUSED 30 | p 01 08 0xf5e8a4ff LABEL_TEXT_COLOR_PRESSED 31 | p 02 02 0xebc21fff BUTTON_TEXT_COLOR_NORMAL 32 | p 03 02 0xebc21fff TOGGLE_TEXT_COLOR_NORMAL 33 | p 04 02 0x81700fff SLIDER_TEXT_COLOR_NORMAL 34 | p 04 05 0xf4e49aff SLIDER_TEXT_COLOR_FOCUSED 35 | p 07 02 0xebc21fff COMBOBOX_TEXT_COLOR_NORMAL 36 | p 08 02 0xefd87bff DROPDOWNBOX_TEXT_COLOR_NORMAL 37 | p 08 05 0xd4b219ff DROPDOWNBOX_TEXT_COLOR_FOCUSED 38 | p 09 02 0x7a680bff TEXTBOX_TEXT_COLOR_NORMAL 39 | p 09 05 0xad931fff TEXTBOX_TEXT_COLOR_FOCUSED 40 | p 10 02 0x62570eff VALUEBOX_TEXT_COLOR_NORMAL 41 | p 10 05 0xf2df88ff VALUEBOX_TEXT_COLOR_FOCUSED 42 | p 12 02 0xf4e798ff LISTVIEW_TEXT_COLOR_NORMAL 43 | p 15 02 0xebc21fff STATUSBAR_TEXT_COLOR_NORMAL 44 | -------------------------------------------------------------------------------- /styles/terminal/Mecha.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/terminal/Mecha.ttf -------------------------------------------------------------------------------- /styles/terminal/README.md: -------------------------------------------------------------------------------- 1 | ## style: terminal 2 | 3 | Start your terminal and type your commands! Feel the connection the data flow, that's your style! 4 | 5 | ![terminal style table](style_terminal.png) 6 | 7 | ## style: provided files 8 | 9 | Several options are provided to add the style to a `raygui` application, choose the one that better fits the project. 10 | 11 | | file name | description | 12 | | :-------- | :---------- | 13 | | `style_terminal.rgs` | Binary style file (raygui 4.0), font data compressed (recs, glyphs) | 14 | | `style_terminal.txt.rgs` | Text style file, no font data, requires external font provided | 15 | | `style_terminal.old.rgs` | Binary style file (raygui 3.x), font data uncompressed (recs, glyphs) | 16 | | `style_terminal.h` | Embeddable style as code file, self-contained, includes font data | 17 | | `style_terminal.png` | Style table image, contains `rGSf` chunk with binary `rgs` file data | 18 | 19 | ## screenshot 20 | 21 | ![terminal style screen](screenshot.png) 22 | 23 | ## about font 24 | 25 | "Mecha" font by Captain Falcon. 26 | 27 | 100% free font, downloaded from dafont.com: [mecha-cf](https://www.dafont.com/mecha-cf.font) 28 | -------------------------------------------------------------------------------- /styles/terminal/charset.txt: -------------------------------------------------------------------------------- 1 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ -------------------------------------------------------------------------------- /styles/terminal/screenshot.old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/terminal/screenshot.old.png -------------------------------------------------------------------------------- /styles/terminal/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/terminal/screenshot.png -------------------------------------------------------------------------------- /styles/terminal/style_terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/terminal/style_terminal.png -------------------------------------------------------------------------------- /styles/terminal/style_terminal.rgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raysan5/raygui/40b8c25ec1b3237a564c2518a46fed94f53f9e41/styles/terminal/style_terminal.rgs -------------------------------------------------------------------------------- /styles/terminal/style_terminal.txt.rgs: -------------------------------------------------------------------------------- 1 | # 2 | # rgs style text file (v4.0) - raygui style file generated using rGuiStyler 3 | # 4 | # Provided info: 5 | # f fontGenSize charsetFileName fontFileName 6 | # p Property description 7 | # 8 | # WARNING: This style uses a custom font, must be provided with style file 9 | # 10 | f 16 charset.txt Mecha.ttf 11 | p 00 00 0x1c8d00ff DEFAULT_BORDER_COLOR_NORMAL 12 | p 00 01 0x161313ff DEFAULT_BASE_COLOR_NORMAL 13 | p 00 02 0x38f620ff DEFAULT_TEXT_COLOR_NORMAL 14 | p 00 03 0xc3fbc6ff DEFAULT_BORDER_COLOR_FOCUSED 15 | p 00 04 0x43bf2eff DEFAULT_BASE_COLOR_FOCUSED 16 | p 00 05 0xdcfadcff DEFAULT_TEXT_COLOR_FOCUSED 17 | p 00 06 0x1f5b19ff DEFAULT_BORDER_COLOR_PRESSED 18 | p 00 07 0x43ff28ff DEFAULT_BASE_COLOR_PRESSED 19 | p 00 08 0x1e6f15ff DEFAULT_TEXT_COLOR_PRESSED 20 | p 00 09 0x223b22ff DEFAULT_BORDER_COLOR_DISABLED 21 | p 00 10 0x182c18ff DEFAULT_BASE_COLOR_DISABLED 22 | p 00 11 0x244125ff DEFAULT_TEXT_COLOR_DISABLED 23 | p 00 16 0x00000010 TEXT_SIZE 24 | p 00 17 0x00000000 TEXT_SPACING 25 | p 00 18 0xe6fce3ff LINE_COLOR 26 | p 00 19 0x0c1505ff BACKGROUND_COLOR 27 | p 00 20 0x00000018 TEXT_LINE_SPACING 28 | --------------------------------------------------------------------------------