| @ -0,0 +1,271 @@ | |||||
| /******************************************************************************************* | |||||
| * | |||||
| * raygui - raylib IMGUI system (Immedite Mode GUI) | |||||
| * | |||||
| * Copyright (c) 2015 Kevin Gato, Daniel Nicolás, Sergio Martinez and Ramon Santamaria | |||||
| * | |||||
| * This software is provided "as-is", without any express or implied warranty. In no event | |||||
| * will the authors be held liable for any damages arising from the use of this software. | |||||
| * | |||||
| * Permission is granted to anyone to use this software for any purpose, including commercial | |||||
| * applications, and to alter it and redistribute it freely, subject to the following restrictions: | |||||
| * | |||||
| * 1. The origin of this software must not be misrepresented; you must not claim that you | |||||
| * wrote the original software. If you use this software in a product, an acknowledgment | |||||
| * in the product documentation would be appreciated but is not required. | |||||
| * | |||||
| * 2. Altered source versions must be plainly marked as such, and must not be misrepresented | |||||
| * as being the original software. | |||||
| * | |||||
| * 3. This notice may not be removed or altered from any source distribution. | |||||
| * | |||||
| **********************************************************************************************/ | |||||
| #ifndef RAYGUI_H | |||||
| #define RAYGUI_H | |||||
| #include "raylib.h" | |||||
| //---------------------------------------------------------------------------------- | |||||
| // Defines and Macros | |||||
| //---------------------------------------------------------------------------------- | |||||
| #define NUM_PROPERTIES 98 | |||||
| //---------------------------------------------------------------------------------- | |||||
| // Types and Structures Definition | |||||
| //---------------------------------------------------------------------------------- | |||||
| typedef enum GuiProperty { | |||||
| GLOBAL_BASE_COLOR = 0, | |||||
| GLOBAL_BORDER_COLOR, | |||||
| GLOBAL_TEXT_COLOR, | |||||
| GLOBAL_TEXT_FONTSIZE, | |||||
| GLOBAL_BORDER_WIDTH, | |||||
| BACKGROUND_COLOR, | |||||
| LABEL_BORDER_WIDTH, | |||||
| LABEL_TEXT_COLOR, | |||||
| LABEL_TEXT_PADDING, | |||||
| BUTTON_BORDER_WIDTH, | |||||
| BUTTON_TEXT_PADDING, | |||||
| BUTTON_DEFAULT_BORDER_COLOR, | |||||
| BUTTON_DEFAULT_INSIDE_COLOR, | |||||
| BUTTON_DEFAULT_TEXT_COLOR, | |||||
| BUTTON_HOVER_BORDER_COLOR, | |||||
| BUTTON_HOVER_INSIDE_COLOR, | |||||
| BUTTON_HOVER_TEXT_COLOR, | |||||
| BUTTON_PRESSED_BORDER_COLOR, | |||||
| BUTTON_PRESSED_INSIDE_COLOR, | |||||
| BUTTON_PRESSED_TEXT_COLOR, | |||||
| TOGGLE_TEXT_PADDING, | |||||
| TOGGLE_BORDER_WIDTH, | |||||
| TOGGLE_DEFAULT_BORDER_COLOR, | |||||
| TOGGLE_DEFAULT_INSIDE_COLOR, | |||||
| TOGGLE_DEFAULT_TEXT_COLOR, | |||||
| TOGGLE_HOVER_BORDER_COLOR, | |||||
| TOGGLE_HOVER_INSIDE_COLOR, | |||||
| TOGGLE_HOVER_TEXT_COLOR, | |||||
| TOGGLE_PRESSED_BORDER_COLOR, | |||||
| TOGGLE_PRESSED_INSIDE_COLOR, | |||||
| TOGGLE_PRESSED_TEXT_COLOR, | |||||
| TOGGLE_ACTIVE_BORDER_COLOR, | |||||
| TOGGLE_ACTIVE_INSIDE_COLOR, | |||||
| TOGGLE_ACTIVE_TEXT_COLOR, | |||||
| TOGGLEGROUP_PADDING, | |||||
| SLIDER_BORDER_WIDTH, | |||||
| SLIDER_BUTTON_BORDER_WIDTH, | |||||
| SLIDER_BORDER_COLOR, | |||||
| SLIDER_INSIDE_COLOR, | |||||
| SLIDER_DEFAULT_COLOR, | |||||
| SLIDER_HOVER_COLOR, | |||||
| SLIDER_ACTIVE_COLOR, | |||||
| SLIDERBAR_BORDER_COLOR, | |||||
| SLIDERBAR_INSIDE_COLOR, | |||||
| SLIDERBAR_DEFAULT_COLOR, | |||||
| SLIDERBAR_HOVER_COLOR, | |||||
| SLIDERBAR_ACTIVE_COLOR, | |||||
| SLIDERBAR_ZERO_LINE_COLOR, | |||||
| PROGRESSBAR_BORDER_COLOR, | |||||
| PROGRESSBAR_INSIDE_COLOR, | |||||
| PROGRESSBAR_PROGRESS_COLOR, | |||||
| PROGRESSBAR_BORDER_WIDTH, | |||||
| SPINNER_LABEL_BORDER_COLOR, | |||||
| SPINNER_LABEL_INSIDE_COLOR, | |||||
| SPINNER_DEFAULT_BUTTON_BORDER_COLOR, | |||||
| SPINNER_DEFAULT_BUTTON_INSIDE_COLOR, | |||||
| SPINNER_DEFAULT_SYMBOL_COLOR, | |||||
| SPINNER_DEFAULT_TEXT_COLOR, | |||||
| SPINNER_HOVER_BUTTON_BORDER_COLOR, | |||||
| SPINNER_HOVER_BUTTON_INSIDE_COLOR, | |||||
| SPINNER_HOVER_SYMBOL_COLOR, | |||||
| SPINNER_HOVER_TEXT_COLOR, | |||||
| SPINNER_PRESSED_BUTTON_BORDER_COLOR, | |||||
| SPINNER_PRESSED_BUTTON_INSIDE_COLOR, | |||||
| SPINNER_PRESSED_SYMBOL_COLOR, | |||||
| SPINNER_PRESSED_TEXT_COLOR, | |||||
| COMBOBOX_PADDING, | |||||
| COMBOBOX_BUTTON_WIDTH, | |||||
| COMBOBOX_BUTTON_HEIGHT, | |||||
| COMBOBOX_BORDER_WIDTH, | |||||
| COMBOBOX_DEFAULT_BORDER_COLOR, | |||||
| COMBOBOX_DEFAULT_INSIDE_COLOR, | |||||
| COMBOBOX_DEFAULT_TEXT_COLOR, | |||||
| COMBOBOX_DEFAULT_LIST_TEXT_COLOR, | |||||
| COMBOBOX_HOVER_BORDER_COLOR, | |||||
| COMBOBOX_HOVER_INSIDE_COLOR, | |||||
| COMBOBOX_HOVER_TEXT_COLOR, | |||||
| COMBOBOX_HOVER_LIST_TEXT_COLOR, | |||||
| COMBOBOX_PRESSED_BORDER_COLOR, | |||||
| COMBOBOX_PRESSED_INSIDE_COLOR, | |||||
| COMBOBOX_PRESSED_TEXT_COLOR, | |||||
| COMBOBOX_PRESSED_LIST_BORDER_COLOR, | |||||
| COMBOBOX_PRESSED_LIST_INSIDE_COLOR, | |||||
| COMBOBOX_PRESSED_LIST_TEXT_COLOR, | |||||
| CHECKBOX_DEFAULT_BORDER_COLOR, | |||||
| CHECKBOX_DEFAULT_INSIDE_COLOR, | |||||
| CHECKBOX_HOVER_BORDER_COLOR, | |||||
| CHECKBOX_HOVER_INSIDE_COLOR, | |||||
| CHECKBOX_CLICK_BORDER_COLOR, | |||||
| CHECKBOX_CLICK_INSIDE_COLOR, | |||||
| CHECKBOX_STATUS_ACTIVE_COLOR, | |||||
| CHECKBOX_INSIDE_WIDTH, | |||||
| TEXTBOX_BORDER_WIDTH, | |||||
| TEXTBOX_BORDER_COLOR, | |||||
| TEXTBOX_INSIDE_COLOR, | |||||
| TEXTBOX_TEXT_COLOR, | |||||
| TEXTBOX_LINE_COLOR, | |||||
| TEXTBOX_TEXT_FONTSIZE | |||||
| } GuiProperty; | |||||
| #ifdef __cplusplus | |||||
| extern "C" { // Prevents name mangling of functions | |||||
| #endif | |||||
| //---------------------------------------------------------------------------------- | |||||
| // Global Variables Definition | |||||
| //---------------------------------------------------------------------------------- | |||||
| static const char *guiPropertyName[] = { | |||||
| "GLOBAL_BASE_COLOR", | |||||
| "GLOBAL_BORDER_COLOR", | |||||
| "GLOBAL_TEXT_COLOR", | |||||
| "GLOBAL_TEXT_FONTSIZE", | |||||
| "GLOBAL_BORDER_WIDTH", | |||||
| "BACKGROUND_COLOR", | |||||
| "LABEL_BORDER_WIDTH", | |||||
| "LABEL_TEXT_COLOR", | |||||
| "LABEL_TEXT_PADDING", | |||||
| "BUTTON_BORDER_WIDTH", | |||||
| "BUTTON_TEXT_PADDING", | |||||
| "BUTTON_DEFAULT_BORDER_COLOR", | |||||
| "BUTTON_DEFAULT_INSIDE_COLOR", | |||||
| "BUTTON_DEFAULT_TEXT_COLOR", | |||||
| "BUTTON_HOVER_BORDER_COLOR", | |||||
| "BUTTON_HOVER_INSIDE_COLOR", | |||||
| "BUTTON_HOVER_TEXT_COLOR", | |||||
| "BUTTON_PRESSED_BORDER_COLOR", | |||||
| "BUTTON_PRESSED_INSIDE_COLOR", | |||||
| "BUTTON_PRESSED_TEXT_COLOR", | |||||
| "TOGGLE_TEXT_PADDING", | |||||
| "TOGGLE_BORDER_WIDTH", | |||||
| "TOGGLE_DEFAULT_BORDER_COLOR", | |||||
| "TOGGLE_DEFAULT_INSIDE_COLOR", | |||||
| "TOGGLE_DEFAULT_TEXT_COLOR", | |||||
| "TOGGLE_HOVER_BORDER_COLOR", | |||||
| "TOGGLE_HOVER_INSIDE_COLOR", | |||||
| "TOGGLE_HOVER_TEXT_COLOR", | |||||
| "TOGGLE_PRESSED_BORDER_COLOR", | |||||
| "TOGGLE_PRESSED_INSIDE_COLOR", | |||||
| "TOGGLE_PRESSED_TEXT_COLOR", | |||||
| "TOGGLE_ACTIVE_BORDER_COLOR", | |||||
| "TOGGLE_ACTIVE_INSIDE_COLOR", | |||||
| "TOGGLE_ACTIVE_TEXT_COLOR", | |||||
| "TOGGLEGROUP_PADDING", | |||||
| "SLIDER_BORDER_WIDTH", | |||||
| "SLIDER_BUTTON_BORDER_WIDTH", | |||||
| "SLIDER_BORDER_COLOR", | |||||
| "SLIDER_INSIDE_COLOR", | |||||
| "SLIDER_DEFAULT_COLOR", | |||||
| "SLIDER_HOVER_COLOR", | |||||
| "SLIDER_ACTIVE_COLOR", | |||||
| "SLIDERBAR_BORDER_COLOR", | |||||
| "SLIDERBAR_INSIDE_COLOR", | |||||
| "SLIDERBAR_DEFAULT_COLOR", | |||||
| "SLIDERBAR_HOVER_COLOR", | |||||
| "SLIDERBAR_ACTIVE_COLOR", | |||||
| "SLIDERBAR_ZERO_LINE_COLOR", | |||||
| "PROGRESSBAR_BORDER_COLOR", | |||||
| "PROGRESSBAR_INSIDE_COLOR", | |||||
| "PROGRESSBAR_PROGRESS_COLOR", | |||||
| "PROGRESSBAR_BORDER_WIDTH", | |||||
| "SPINNER_LABEL_BORDER_COLOR", | |||||
| "SPINNER_LABEL_INSIDE_COLOR", | |||||
| "SPINNER_DEFAULT_BUTTON_BORDER_COLOR", | |||||
| "SPINNER_DEFAULT_BUTTON_INSIDE_COLOR", | |||||
| "SPINNER_DEFAULT_SYMBOL_COLOR", | |||||
| "SPINNER_DEFAULT_TEXT_COLOR", | |||||
| "SPINNER_HOVER_BUTTON_BORDER_COLOR", | |||||
| "SPINNER_HOVER_BUTTON_INSIDE_COLOR", | |||||
| "SPINNER_HOVER_SYMBOL_COLOR", | |||||
| "SPINNER_HOVER_TEXT_COLOR", | |||||
| "SPINNER_PRESSED_BUTTON_BORDER_COLOR", | |||||
| "SPINNER_PRESSED_BUTTON_INSIDE_COLOR", | |||||
| "SPINNER_PRESSED_SYMBOL_COLOR", | |||||
| "SPINNER_PRESSED_TEXT_COLOR", | |||||
| "COMBOBOX_PADDING", | |||||
| "COMBOBOX_BUTTON_WIDTH", | |||||
| "COMBOBOX_BUTTON_HEIGHT", | |||||
| "COMBOBOX_BORDER_WIDTH", | |||||
| "COMBOBOX_DEFAULT_BORDER_COLOR", | |||||
| "COMBOBOX_DEFAULT_INSIDE_COLOR", | |||||
| "COMBOBOX_DEFAULT_TEXT_COLOR", | |||||
| "COMBOBOX_DEFAULT_LIST_TEXT_COLOR", | |||||
| "COMBOBOX_HOVER_BORDER_COLOR", | |||||
| "COMBOBOX_HOVER_INSIDE_COLOR", | |||||
| "COMBOBOX_HOVER_TEXT_COLOR", | |||||
| "COMBOBOX_HOVER_LIST_TEXT_COLOR", | |||||
| "COMBOBOX_PRESSED_BORDER_COLOR", | |||||
| "COMBOBOX_PRESSED_INSIDE_COLOR", | |||||
| "COMBOBOX_PRESSED_TEXT_COLOR", | |||||
| "COMBOBOX_PRESSED_LIST_BORDER_COLOR", | |||||
| "COMBOBOX_PRESSED_LIST_INSIDE_COLOR", | |||||
| "COMBOBOX_PRESSED_LIST_TEXT_COLOR", | |||||
| "CHECKBOX_DEFAULT_BORDER_COLOR", | |||||
| "CHECKBOX_DEFAULT_INSIDE_COLOR", | |||||
| "CHECKBOX_HOVER_BORDER_COLOR", | |||||
| "CHECKBOX_HOVER_INSIDE_COLOR", | |||||
| "CHECKBOX_CLICK_BORDER_COLOR", | |||||
| "CHECKBOX_CLICK_INSIDE_COLOR", | |||||
| "CHECKBOX_STATUS_ACTIVE_COLOR", | |||||
| "CHECKBOX_INSIDE_WIDTH", | |||||
| "TEXTBOX_BORDER_WIDTH", | |||||
| "TEXTBOX_BORDER_COLOR", | |||||
| "TEXTBOX_INSIDE_COLOR", | |||||
| "TEXTBOX_TEXT_COLOR", | |||||
| "TEXTBOX_LINE_COLOR", | |||||
| "TEXTBOX_TEXT_FONTSIZE" | |||||
| }; | |||||
| //---------------------------------------------------------------------------------- | |||||
| // Module Functions Declaration | |||||
| //---------------------------------------------------------------------------------- | |||||
| void GuiLabel(Rectangle bounds, const char *text); // Label element, show text | |||||
| void GuiLabelEx(Rectangle bounds, const char *text, Color textColor, Color border, Color inner); // Label element extended, configurable colors | |||||
| bool GuiButton(Rectangle bounds, const char *text); // Button element, returns true when clicked | |||||
| bool GuiToggleButton(Rectangle bounds, const char *text, bool toggle); // Toggle Button element, returns true when active | |||||
| int GuiToggleGroup(Rectangle bounds, int toggleNum, char **toggleText, int toggleActive); // Toggle Group element, returns toggled button index | |||||
| int GuiComboBox(Rectangle bounds, int comboNum, char **comboText, int comboActive); // Combo Box element, returns selected item index | |||||
| bool GuiCheckBox(Rectangle bounds, const char *text, bool checked); // Check Box element, returns true when active | |||||
| float GuiSlider(Rectangle bounds, float value, float minValue, float maxValue); // Slider element, returns selected value | |||||
| float GuiSliderBar(Rectangle bounds, float value, float minValue, float maxValue); // Slider Bar element, returns selected value | |||||
| void GuiProgressBar(Rectangle bounds, float value); // Progress Bar element, shows current progress value | |||||
| int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue); // Spinner element, returns selected value | |||||
| char *GuiTextBox(Rectangle bounds, char *text); // Text Box element, returns input text | |||||
| void SaveGuiStyle(const char *fileName); // Save GUI style file | |||||
| void LoadGuiStyle(const char *fileName); // Load GUI style file | |||||
| void SetStyleProperty(int guiProperty, int value); // Set one style property | |||||
| int GetStyleProperty(int guiProperty); // Get one style property | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif // RAYGUI_H | |||||