Redesigning style loading system

This commit is contained in:
Ray
2017-11-05 16:50:01 +01:00
parent 15db8b9bee
commit 66a1084acc
6 changed files with 312 additions and 255 deletions

View File

@ -145,6 +145,27 @@
} Rectangle; } Rectangle;
#endif #endif
typedef enum GuiPropertyGeneric {
DEFAULT_BACKGROUND_COLOR,
DEFAULT_LINES_COLOR,
DEFAULT_TEXT_FONT,
DEFAULT_TEXT_SIZE,
DEFAULT_BORDER_WIDTH,
// Generic controls color style
DEFAULT_BORDER_COLOR_NORMAL,
DEFAULT_BASE_COLOR_NORMAL,
DEFAULT_TEXT_COLOR_NORMAL,
DEFAULT_BORDER_COLOR_FOCUSED,
DEFAULT_BASE_COLOR_FOCUSED,
DEFAULT_TEXT_COLOR_FOCUSED,
DEFAULT_BORDER_COLOR_PRESSED,
DEFAULT_BASE_COLOR_PRESSED,
DEFAULT_TEXT_COLOR_PRESSED,
DEFAULT_BORDER_COLOR_DISABLED,
DEFAULT_BASE_COLOR_DISABLED,
DEFAULT_TEXT_COLOR_DISABLED,
} GuiPropertyGeneric;
// Gui properties enumeration // Gui properties enumeration
typedef enum GuiProperty { typedef enum GuiProperty {
// Label // Label
@ -267,6 +288,9 @@ RAYGUIDEF void GuiTextBox(Rectangle bounds, char *text, int textSize);
RAYGUIDEF void GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with title name RAYGUIDEF void GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with title name
RAYGUIDEF Color GuiColorPicker(Rectangle bounds, Color color); // Color Picker control RAYGUIDEF Color GuiColorPicker(Rectangle bounds, Color color); // Color Picker control
RAYGUIDEF void LoadGuiStyleImage(const char *fileName); // Load GUI style from a text file
RAYGUIDEF void UpdateStyleComplete(void); // Updates full style property set with generic values
#if defined RAYGUI_STANDALONE #if defined RAYGUI_STANDALONE
// NOTE: raygui depend on some raylib input and drawing functions // NOTE: raygui depend on some raylib input and drawing functions
// TODO: To use raygui as standalone library, those functions must be called per frame // TODO: To use raygui as standalone library, those functions must be called per frame
@ -335,227 +359,134 @@ typedef enum { DISABLED, NORMAL, FOCUSED, PRESSED } ControlState;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Global Variables Definition // Global Variables Definition
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
//static Vector2 panelOffset = { 0, 0 }; static int styleGeneric[20] = {
//static ControlState state = NORMAL;
#if defined(RAYGUI_STYLE_DEFAULT_LIGHT) #if defined(RAYGUI_STYLE_DEFAULT_LIGHT)
0xf5f5f5ff, // DEFAULT_BACKGROUND_COLOR
#define DEFAULT_BACKGROUND_COLOR 0xf5f5f5ff 0x90abb5ff, // DEFAULT_LINES_COLOR
#define DEFAULT_LINES_COLOR 0x90abb5ff 0, // DEFAULT_TEXT_FONT
#define DEFAULT_TEXT_FONT 0 10, // styleGeneric[DEFAULT_TEXT_SIZE]
#define DEFAULT_TEXT_SIZE 10 1, // DEFAULT_BORDER_WIDTH
#define DEFAULT_BORDER_WIDTH 1 // Generic controls color style
0x828282ff, // DEFAULT_BORDER_COLOR_NORMAL
#define DEFAULT_BORDER_COLOR_NORMAL 0x828282ff 0xc8c8c8ff, // DEFAULT_BASE_COLOR_NORMAL
#define DEFAULT_BASE_COLOR_NORMAL 0xc8c8c8ff 0x686868ff, // DEFAULT_TEXT_COLOR_NORMAL
#define DEFAULT_TEXT_COLOR_NORMAL 0x686868ff 0x7bb0d6ff, // DEFAULT_BORDER_COLOR_FOCUSED
#define DEFAULT_BORDER_COLOR_FOCUSED 0x7bb0d6ff 0xc9effeff, // DEFAULT_BASE_COLOR_FOCUSED
#define DEFAULT_BASE_COLOR_FOCUSED 0xc9effeff 0x6c9bbcff, // DEFAULT_TEXT_COLOR_FOCUSED
#define DEFAULT_TEXT_COLOR_FOCUSED 0x6c9bbcff 0x048cc7ff, // DEFAULT_BORDER_COLOR_PRESSED
#define DEFAULT_BORDER_COLOR_PRESSED 0x048cc7ff 0x7ceafeff, // DEFAULT_BASE_COLOR_PRESSED
#define DEFAULT_BASE_COLOR_PRESSED 0x7ceafeff 0x0480b5ff, // DEFAULT_TEXT_COLOR_PRESSED
#define DEFAULT_TEXT_COLOR_PRESSED 0x0480b5ff 0xb1b1b1ff, // DEFAULT_BORDER_COLOR_DISABLED
#define DEFAULT_BORDER_COLOR_DISABLED 0xb1b1b1ff 0xfafafaff, // DEFAULT_BASE_COLOR_DISABLED
#define DEFAULT_BASE_COLOR_DISABLED 0xfafafaff 0xc8c8c8ff // DEFAULT_TEXT_COLOR_DISABLED
#define DEFAULT_TEXT_COLOR_DISABLED 0xc8c8c8ff
#elif defined(RAYGUI_STYLE_DEFAULT_DARK) #elif defined(RAYGUI_STYLE_DEFAULT_DARK)
0xf5f5f5ff, // DEFAULT_BACKGROUND_COLOR
#define DEFAULT_BACKGROUND_COLOR 0xf5f5f5ff 0x90abb5ff, // DEFAULT_LINES_COLOR
#define DEFAULT_LINES_COLOR 0x90abb5ff 0, // DEFAULT_TEXT_FONT
#define DEFAULT_TEXT_FONT 0 10, // styleGeneric[DEFAULT_TEXT_SIZE]
#define DEFAULT_TEXT_SIZE 10 1, // DEFAULT_BORDER_WIDTH
#define DEFAULT_BORDER_WIDTH 1 // Generic controls color style
0x828282ff, // DEFAULT_BORDER_COLOR_NORMAL
#define DEFAULT_BORDER_COLOR_NORMAL 0x828282ff 0xc8c8c8ff, // DEFAULT_BASE_COLOR_NORMAL
#define DEFAULT_BASE_COLOR_NORMAL 0xc8c8c8ff 0x686868ff, // DEFAULT_TEXT_COLOR_NORMAL
#define DEFAULT_TEXT_COLOR_NORMAL 0x686868ff 0x7bb0d6ff, // DEFAULT_BORDER_COLOR_FOCUSED
#define DEFAULT_BORDER_COLOR_FOCUSED 0x7bb0d6ff 0xc9effeff, // DEFAULT_BASE_COLOR_FOCUSED
#define DEFAULT_BASE_COLOR_FOCUSED 0xc9effeff 0x6c9bbcff, // DEFAULT_TEXT_COLOR_FOCUSED
#define DEFAULT_TEXT_COLOR_FOCUSED 0x6c9bbcff 0x048cc7ff, // DEFAULT_BORDER_COLOR_PRESSED
#define DEFAULT_BORDER_COLOR_PRESSED 0x048cc7ff 0x7ceafeff, // DEFAULT_BASE_COLOR_PRESSED
#define DEFAULT_BASE_COLOR_PRESSED 0x7ceafeff 0x0480b5ff, // DEFAULT_TEXT_COLOR_PRESSED
#define DEFAULT_TEXT_COLOR_PRESSED 0x0480b5ff 0xb1b1b1ff, // DEFAULT_BORDER_COLOR_DISABLED
#define DEFAULT_BORDER_COLOR_DISABLED 0xb1b1b1ff 0xfafafaff, // DEFAULT_BASE_COLOR_DISABLED
#define DEFAULT_BASE_COLOR_DISABLED 0xfafafaff 0xc8c8c8ff // DEFAULT_TEXT_COLOR_DISABLED
#define DEFAULT_TEXT_COLOR_DISABLED 0xc8c8c8ff
#endif #endif
};
// Current GUI style (default light) // Current GUI style (default light)
static int style[NUM_PROPERTIES] = { static int style[NUM_PROPERTIES] = {
DEFAULT_TEXT_COLOR_NORMAL, // LABEL_TEXT_COLOR_NORMAL, 0x686868ff, // LABEL_TEXT_COLOR_NORMAL -----> DEFAULT_TEXT_COLOR_NORMAL
DEFAULT_TEXT_COLOR_FOCUSED, // LABEL_TEXT_COLOR_FOCUSED, 0x6c9bbcff, // LABEL_TEXT_COLOR_FOCUSED ----> DEFAULT_TEXT_COLOR_FOCUSED
DEFAULT_TEXT_COLOR_PRESSED, // LABEL_TEXT_COLOR_PRESSED, 0x0480b5ff, // LABEL_TEXT_COLOR_PRESSED ----> DEFAULT_TEXT_COLOR_PRESSED
DEFAULT_BORDER_WIDTH*2, // BUTTON_BORDER_WIDTH, 2, // BUTTON_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
DEFAULT_BORDER_COLOR_NORMAL, // BUTTON_BORDER_COLOR_NORMAL, 0x000000ff, // BUTTON_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BASE_COLOR_NORMAL, // BUTTON_BASE_COLOR_NORMAL, 0x000000ff, // BUTTON_BASE_COLOR_NORMAL ----> DEFAULT_BASE_COLOR_NORMAL
DEFAULT_TEXT_COLOR_NORMAL, // BUTTON_TEXT_COLOR_NORMAL, 0x000000ff, // BUTTON_TEXT_COLOR_NORMAL ----> DEFAULT_TEXT_COLOR_NORMAL
DEFAULT_BORDER_COLOR_FOCUSED, // BUTTON_BORDER_COLOR_FOCUSED, 0x000000ff, // BUTTON_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_FOCUSED, // BUTTON_BASE_COLOR_FOCUSED, 0x000000ff, // BUTTON_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_TEXT_COLOR_FOCUSED, // BUTTON_TEXT_COLOR_FOCUSED, 0x000000ff, // BUTTON_TEXT_COLOR_FOCUSED ----> DEFAULT_TEXT_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // BUTTON_BORDER_COLOR_PRESSED, 0x000000ff, // BUTTON_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_BASE_COLOR_PRESSED, // BUTTON_BASE_COLOR_PRESSED, 0x000000ff, // BUTTON_BASE_COLOR_PRESSED ----> DEFAULT_BASE_COLOR_PRESSED
DEFAULT_TEXT_COLOR_PRESSED, // BUTTON_TEXT_COLOR_PRESSED, 0x000000ff, // BUTTON_TEXT_COLOR_PRESSED ----> DEFAULT_TEXT_COLOR_PRESSED
DEFAULT_BORDER_WIDTH, // TOGGLE_BORDER_WIDTH, 0x000000ff, // TOGGLE_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
DEFAULT_BORDER_COLOR_NORMAL, // TOGGLE_BORDER_COLOR_NORMAL, 0x000000ff, // TOGGLE_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BASE_COLOR_NORMAL, // TOGGLE_BASE_COLOR_NORMAL, 0x000000ff, // TOGGLE_BASE_COLOR_NORMAL ----> DEFAULT_BASE_COLOR_NORMAL
DEFAULT_TEXT_COLOR_NORMAL, // TOGGLE_TEXT_COLOR_NORMAL, 0x000000ff, // TOGGLE_TEXT_COLOR_NORMAL ----> DEFAULT_TEXT_COLOR_NORMAL
DEFAULT_BORDER_COLOR_FOCUSED, // TOGGLE_BORDER_COLOR_FOCUSED, 0x000000ff, // TOGGLE_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_FOCUSED, // TOGGLE_BASE_COLOR_FOCUSED, 0x000000ff, // TOGGLE_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_TEXT_COLOR_FOCUSED, // TOGGLE_TEXT_COLOR_FOCUSED, 0x000000ff, // TOGGLE_TEXT_COLOR_FOCUSED ----> DEFAULT_TEXT_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // TOGGLE_BORDER_COLOR_PRESSED, 0x000000ff, // TOGGLE_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_BASE_COLOR_PRESSED, // TOGGLE_BASE_COLOR_PRESSED, 0x000000ff, // TOGGLE_BASE_COLOR_PRESSED ----> DEFAULT_BASE_COLOR_PRESSED
DEFAULT_TEXT_COLOR_PRESSED, // TOGGLE_TEXT_COLOR_PRESSED, 0x000000ff, // TOGGLE_TEXT_COLOR_PRESSED ----> DEFAULT_TEXT_COLOR_PRESSED
2, // TOGGLEGROUP_PADDING, 2, // TOGGLEGROUP_PADDING
DEFAULT_BORDER_WIDTH, // SLIDER_BORDER_WIDTH, 0x000000ff, // SLIDER_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
DEFAULT_BORDER_COLOR_NORMAL, // SLIDER_BORDER_COLOR_NORMAL, 0x000000ff, // SLIDER_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BASE_COLOR_NORMAL, // SLIDER_BASE_COLOR_NORMAL, 0x000000ff, // SLIDER_BASE_COLOR_NORMAL ----> DEFAULT_BASE_COLOR_NORMAL
DEFAULT_BORDER_COLOR_FOCUSED, // SLIDER_BORDER_COLOR_FOCUSED, 0x000000ff, // SLIDER_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_FOCUSED, // SLIDER_BASE_COLOR_FOCUSED, 0x000000ff, // SLIDER_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // SLIDER_BORDER_COLOR_PRESSED, 0x000000ff, // SLIDER_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_BASE_COLOR_PRESSED, // SLIDER_BASE_COLOR_PRESSED, 0x000000ff, // SLIDER_BASE_COLOR_PRESSED ----> DEFAULT_BASE_COLOR_PRESSED
DEFAULT_BORDER_WIDTH, // SLIDERBAR_BORDER_WIDTH, 0x000000ff, // SLIDERBAR_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
DEFAULT_BORDER_COLOR_NORMAL, // SLIDERBAR_BORDER_COLOR_NORMAL, 0x000000ff, // SLIDERBAR_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BASE_COLOR_NORMAL, // SLIDERBAR_BASE_COLOR_NORMAL, 0x000000ff, // SLIDERBAR_BASE_COLOR_NORMAL ----> DEFAULT_BASE_COLOR_NORMAL
DEFAULT_BORDER_COLOR_FOCUSED, // SLIDERBAR_BORDER_COLOR_FOCUSED, 0x000000ff, // SLIDERBAR_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_FOCUSED, // SLIDERBAR_BASE_COLOR_FOCUSED, 0x000000ff, // SLIDERBAR_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // SLIDERBAR_BORDER_COLOR_PRESSED, 0x000000ff, // SLIDERBAR_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_BASE_COLOR_PRESSED, // SLIDERBAR_BASE_COLOR_PRESSED, 0x000000ff, // SLIDERBAR_BASE_COLOR_PRESSED ----> DEFAULT_BASE_COLOR_PRESSED
DEFAULT_BORDER_WIDTH, // PROGRESSBAR_BORDER_WIDTH, 0x000000ff, // PROGRESSBAR_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
DEFAULT_BORDER_COLOR_NORMAL, // PROGRESSBAR_BORDER_COLOR_NORMAL, 0x000000ff, // PROGRESSBAR_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BASE_COLOR_FOCUSED, // PROGRESSBAR_BASE_COLOR_NORMAL, 0x000000ff, // PROGRESSBAR_BASE_COLOR_NORMAL ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_FOCUSED, // PROGRESSBAR_BORDER_COLOR_FOCUSED 0x000000ff, // PROGRESSBAR_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_PRESSED, // PROGRESSBAR_BASE_COLOR_FOCUSED, 0x000000ff, // PROGRESSBAR_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_PRESSED
2, // SPINNER_BUTTON_PADDING 2, // SPINNER_BUTTON_PADDING
DEFAULT_BORDER_COLOR_NORMAL, // SPINNER_BORDER_COLOR_NORMAL, 0x000000ff, // SPINNER_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BASE_COLOR_NORMAL, // SPINNER_BASE_COLOR_NORMAL, 0x000000ff, // SPINNER_BASE_COLOR_NORMAL ----> DEFAULT_BASE_COLOR_NORMAL
DEFAULT_TEXT_COLOR_NORMAL, // SPINNER_TEXT_COLOR_NORMAL, 0x000000ff, // SPINNER_TEXT_COLOR_NORMAL ----> DEFAULT_TEXT_COLOR_NORMAL
DEFAULT_BORDER_COLOR_FOCUSED, // SPINNER_BORDER_COLOR_FOCUSED, 0x000000ff, // SPINNER_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_FOCUSED, // SPINNER_BASE_COLOR_FOCUSED, 0x000000ff, // SPINNER_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_TEXT_COLOR_FOCUSED, // SPINNER_TEXT_COLOR_FOCUSED, 0x000000ff, // SPINNER_TEXT_COLOR_FOCUSED ----> DEFAULT_TEXT_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // SPINNER_BORDER_COLOR_PRESSED, 0x000000ff, // SPINNER_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_BASE_COLOR_PRESSED, // SPINNER_BASE_COLOR_PRESSED, 0x000000ff, // SPINNER_BASE_COLOR_PRESSED ----> DEFAULT_BASE_COLOR_PRESSED
DEFAULT_TEXT_COLOR_PRESSED, // SPINNER_TEXT_COLOR_PRESSED, 0x000000ff, // SPINNER_TEXT_COLOR_PRESSED ----> DEFAULT_TEXT_COLOR_PRESSED
DEFAULT_BORDER_WIDTH, // COMBOBOX_BORDER_WIDTH, 0x000000ff, // COMBOBOX_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
2, // COMBOBOX_BUTTON_PADDING, 2, // COMBOBOX_BUTTON_PADDING
DEFAULT_BORDER_COLOR_NORMAL, // COMBOBOX_BORDER_COLOR_NORMAL, 0x000000ff, // COMBOBOX_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BASE_COLOR_NORMAL, // COMBOBOX_BASE_COLOR_NORMAL, 0x000000ff, // COMBOBOX_BASE_COLOR_NORMAL ----> DEFAULT_BASE_COLOR_NORMAL
DEFAULT_TEXT_COLOR_NORMAL, // COMBOBOX_TEXT_COLOR_NORMAL, 0x000000ff, // COMBOBOX_TEXT_COLOR_NORMAL ----> DEFAULT_TEXT_COLOR_NORMAL
DEFAULT_BORDER_COLOR_FOCUSED, // COMBOBOX_BORDER_COLOR_FOCUSED, 0x000000ff, // COMBOBOX_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_FOCUSED, // COMBOBOX_BASE_COLOR_FOCUSED, 0x000000ff, // COMBOBOX_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_TEXT_COLOR_FOCUSED, // COMBOBOX_TEXT_COLOR_FOCUSED, 0x000000ff, // COMBOBOX_TEXT_COLOR_FOCUSED ----> DEFAULT_TEXT_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // COMBOBOX_BORDER_COLOR_PRESSED, 0x000000ff, // COMBOBOX_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_BASE_COLOR_PRESSED, // COMBOBOX_BASE_COLOR_PRESSED, 0x000000ff, // COMBOBOX_BASE_COLOR_PRESSED ----> DEFAULT_BASE_COLOR_PRESSED
DEFAULT_TEXT_COLOR_PRESSED, // COMBOBOX_TEXT_COLOR_PRESSED, 0x000000ff, // COMBOBOX_TEXT_COLOR_PRESSED ----> DEFAULT_TEXT_COLOR_PRESSED
DEFAULT_BORDER_WIDTH, // CHECKBOX_BORDER_WIDTH, 0x000000ff, // CHECKBOX_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
1, // CHECKBOX_INNER_PADDING, 1, // CHECKBOX_INNER_PADDING
DEFAULT_BORDER_COLOR_NORMAL, // CHECKBOX_BORDER_COLOR_NORMAL, 0x000000ff, // CHECKBOX_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BACKGROUND_COLOR, // CHECKBOX_BASE_COLOR_NORMAL, 0x000000ff, // CHECKBOX_BASE_COLOR_NORMAL ----> DEFAULT_BACKGROUND_COLOR
DEFAULT_BORDER_COLOR_FOCUSED, // CHECKBOX_BORDER_COLOR_FOCUSED, 0x000000ff, // CHECKBOX_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_TEXT_COLOR_FOCUSED, // CHECKBOX_BASE_COLOR_FOCUSED, 0x000000ff, // CHECKBOX_BASE_COLOR_FOCUSED ----> DEFAULT_TEXT_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // CHECKBOX_BORDER_COLOR_PRESSED, 0x000000ff, // CHECKBOX_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_TEXT_COLOR_PRESSED, // CHECKBOX_BASE_COLOR_PRESSED, 0x000000ff, // CHECKBOX_BASE_COLOR_PRESSED ----> DEFAULT_TEXT_COLOR_PRESSED
DEFAULT_BORDER_WIDTH, // TEXTBOX_BORDER_WIDTH, 0x000000ff, // TEXTBOX_BORDER_WIDTH ----> DEFAULT_BORDER_WIDTH
DEFAULT_BORDER_COLOR_NORMAL, // TEXTBOX_BORDER_COLOR_NORMAL, 0x000000ff, // TEXTBOX_BORDER_COLOR_NORMAL ----> DEFAULT_BORDER_COLOR_NORMAL
DEFAULT_BACKGROUND_COLOR, // TEXTBOX_BASE_COLOR_NORMAL, 0x000000ff, // TEXTBOX_BASE_COLOR_NORMAL ----> DEFAULT_BACKGROUND_COLOR
DEFAULT_TEXT_COLOR_NORMAL, // TEXTBOX_TEXT_COLOR_NORMAL, 0x000000ff, // TEXTBOX_TEXT_COLOR_NORMAL ----> DEFAULT_TEXT_COLOR_NORMAL
DEFAULT_BORDER_COLOR_FOCUSED, // TEXTBOX_BORDER_COLOR_FOCUSED, 0x000000ff, // TEXTBOX_BORDER_COLOR_FOCUSED ----> DEFAULT_BORDER_COLOR_FOCUSED
DEFAULT_BASE_COLOR_FOCUSED, // TEXTBOX_BASE_COLOR_FOCUSED, 0x000000ff, // TEXTBOX_BASE_COLOR_FOCUSED ----> DEFAULT_BASE_COLOR_FOCUSED
DEFAULT_TEXT_COLOR_FOCUSED, // TEXTBOX_TEXT_COLOR_FOCUSED, 0x000000ff, // TEXTBOX_TEXT_COLOR_FOCUSED ----> DEFAULT_TEXT_COLOR_FOCUSED
DEFAULT_BORDER_COLOR_PRESSED, // TEXTBOX_BORDER_COLOR_PRESSED, 0x000000ff, // TEXTBOX_BORDER_COLOR_PRESSED ----> DEFAULT_BORDER_COLOR_PRESSED
DEFAULT_BASE_COLOR_PRESSED, // TEXTBOX_BASE_COLOR_PRESSED, 0x000000ff, // TEXTBOX_BASE_COLOR_PRESSED ----> DEFAULT_BASE_COLOR_PRESSED
DEFAULT_TEXT_COLOR_PRESSED, // TEXTBOX_TEXT_COLOR_PRESSED, 0x000000ff, // TEXTBOX_TEXT_COLOR_PRESSED ----> DEFAULT_TEXT_COLOR_PRESSED
}; };
#if defined(RAYGUI_STYLE_SAVE_LOAD)
// GUI property names (to read/write style text files)
static const char *guiPropertyName[] = {
"LABEL_TEXT_COLOR_NORMAL",
"LABEL_TEXT_COLOR_FOCUSED",
"LABEL_TEXT_COLOR_PRESSED",
"BUTTON_BORDER_WIDTH",
"BUTTON_BORDER_COLOR_NORMAL",
"BUTTON_BASE_COLOR_NORMAL",
"BUTTON_TEXT_COLOR_NORMAL",
"BUTTON_BORDER_COLOR_FOCUSED",
"BUTTON_BASE_COLOR_FOCUSED",
"BUTTON_TEXT_COLOR_FOCUSED",
"BUTTON_BORDER_COLOR_PRESSED",
"BUTTON_BASE_COLOR_PRESSED",
"BUTTON_TEXT_COLOR_PRESSED",
"TOGGLE_BORDER_WIDTH",
"TOGGLE_BORDER_COLOR_NORMAL",
"TOGGLE_BASE_COLOR_NORMAL",
"TOGGLE_TEXT_COLOR_NORMAL",
"TOGGLE_BORDER_COLOR_FOCUSED",
"TOGGLE_BASE_COLOR_FOCUSED",
"TOGGLE_TEXT_COLOR_FOCUSED",
"TOGGLE_BORDER_COLOR_PRESSED",
"TOGGLE_BASE_COLOR_PRESSED",
"TOGGLE_TEXT_COLOR_PRESSED",
"TOGGLEGROUP_PADDING",
"SLIDER_BORDER_WIDTH",
"SLIDER_BORDER_COLOR_NORMAL",
"SLIDER_BASE_COLOR_NORMAL",
"SLIDER_BORDER_COLOR_FOCUSED",
"SLIDER_BASE_COLOR_FOCUSED",
"SLIDER_BORDER_COLOR_PRESSED",
"SLIDER_BASE_COLOR_PRESSED",
"SLIDERBAR_BORDER_WIDTH",
"SLIDERBAR_BORDER_COLOR_NORMAL",
"SLIDERBAR_BASE_COLOR_NORMAL",
"SLIDERBAR_BORDER_COLOR_FOCUSED",
"SLIDERBAR_BASE_COLOR_FOCUSED",
"SLIDERBAR_BORDER_COLOR_PRESSED",
"SLIDERBAR_BASE_COLOR_PRESSED",
"PROGRESSBAR_BORDER_WIDTH",
"PROGRESSBAR_BORDER_COLOR_NORMAL",
"PROGRESSBAR_BASE_COLOR_NORMAL",
"PROGRESSBAR_BORDER_COLOR_FOCUSED",
"PROGRESSBAR_BASE_COLOR_FOCUSED",
"SPINNER_BUTTON_PADDING",
"SPINNER_BORDER_COLOR_NORMAL",
"SPINNER_BASE_COLOR_NORMAL",
"SPINNER_TEXT_COLOR_NORMAL",
"SPINNER_BORDER_COLOR_FOCUSED",
"SPINNER_BASE_COLOR_FOCUSED",
"SPINNER_TEXT_COLOR_FOCUSED",
"SPINNER_BORDER_COLOR_PRESSED",
"SPINNER_BASE_COLOR_PRESSED",
"SPINNER_TEXT_COLOR_PRESSED",
"COMBOBOX_BORDER_WIDTH",
"COMBOBOX_BUTTON_PADDING",
"COMBOBOX_BORDER_COLOR_NORMAL",
"COMBOBOX_BASE_COLOR_NORMAL",
"COMBOBOX_TEXT_COLOR_NORMAL",
"COMBOBOX_BORDER_COLOR_FOCUSED",
"COMBOBOX_BASE_COLOR_FOCUSED",
"COMBOBOX_TEXT_COLOR_FOCUSED",
"COMBOBOX_BORDER_COLOR_PRESSED",
"COMBOBOX_BASE_COLOR_PRESSED",
"COMBOBOX_TEXT_COLOR_PRESSED",
"CHECKBOX_BORDER_WIDTH",
"CHECKBOX_INNER_PADDING",
"CHECKBOX_BORDER_COLOR_NORMAL",
"CHECKBOX_BASE_COLOR_NORMAL",
"CHECKBOX_BORDER_COLOR_FOCUSED",
"CHECKBOX_BASE_COLOR_FOCUSED",
"CHECKBOX_BORDER_COLOR_PRESSED",
"CHECKBOX_BASE_COLOR_PRESSED",
"TEXTBOX_BORDER_WIDTH",
"TEXTBOX_BORDER_COLOR_NORMAL",
"TEXTBOX_BASE_COLOR_NORMAL",
"TEXTBOX_TEXT_COLOR_NORMAL",
"TEXTBOX_BORDER_COLOR_FOCUSED",
"TEXTBOX_BASE_COLOR_FOCUSED",
"TEXTBOX_TEXT_COLOR_FOCUSED",
"TEXTBOX_BORDER_COLOR_PRESSED",
"TEXTBOX_BASE_COLOR_PRESSED",
"TEXTBOX_TEXT_COLOR_PRESSED"
};
#endif
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Module specific Functions Declaration // Module specific Functions Declaration
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
@ -582,13 +513,13 @@ static Vector3 ConvertRGBtoHSV(Vector3 rgb); // Convert color data from R
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Get background color // Get background color
RAYGUIDEF Color GuiBackgroundColor(void) { return GetColor(DEFAULT_BACKGROUND_COLOR); } RAYGUIDEF Color GuiBackgroundColor(void) { return GetColor(styleGeneric[DEFAULT_BACKGROUND_COLOR]); }
// Get lines color // Get lines color
RAYGUIDEF Color GuiLinesColor(void) { return GetColor(DEFAULT_LINES_COLOR); } RAYGUIDEF Color GuiLinesColor(void) { return GetColor(styleGeneric[DEFAULT_LINES_COLOR]); }
// Get text color for normal state // Get text color for normal state
RAYGUIDEF Color GuiTextColor(void) { return GetColor(DEFAULT_TEXT_COLOR_NORMAL); } RAYGUIDEF Color GuiTextColor(void) { return GetColor(styleGeneric[DEFAULT_TEXT_COLOR_NORMAL]); }
// Label control // Label control
RAYGUIDEF void GuiLabel(Rectangle bounds, const char *text) RAYGUIDEF void GuiLabel(Rectangle bounds, const char *text)
@ -599,8 +530,8 @@ RAYGUIDEF void GuiLabel(Rectangle bounds, const char *text)
// Update control // Update control
//-------------------------------------------------------------------- //--------------------------------------------------------------------
int textWidth = MeasureText(text, DEFAULT_TEXT_SIZE); int textWidth = MeasureText(text, styleGeneric[DEFAULT_TEXT_SIZE]);
int textHeight = DEFAULT_TEXT_SIZE; int textHeight = styleGeneric[DEFAULT_TEXT_SIZE];
if (bounds.width < textWidth) bounds.width = textWidth; if (bounds.width < textWidth) bounds.width = textWidth;
if (bounds.height < textHeight) bounds.height = textHeight; if (bounds.height < textHeight) bounds.height = textHeight;
@ -617,9 +548,9 @@ RAYGUIDEF void GuiLabel(Rectangle bounds, const char *text)
//-------------------------------------------------------------------- //--------------------------------------------------------------------
switch (state) switch (state)
{ {
case NORMAL: DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[LABEL_TEXT_COLOR_NORMAL])); break; case NORMAL: DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[LABEL_TEXT_COLOR_NORMAL])); break;
case FOCUSED: DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[LABEL_TEXT_COLOR_FOCUSED])); break; case FOCUSED: DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[LABEL_TEXT_COLOR_FOCUSED])); break;
case PRESSED: DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[LABEL_TEXT_COLOR_PRESSED])); break; case PRESSED: DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[LABEL_TEXT_COLOR_PRESSED])); break;
default: break; default: break;
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------
@ -635,8 +566,8 @@ RAYGUIDEF bool GuiButton(Rectangle bounds, const char *text)
// Update control // Update control
//-------------------------------------------------------------------- //--------------------------------------------------------------------
int textWidth = MeasureText(text, DEFAULT_TEXT_SIZE); int textWidth = MeasureText(text, styleGeneric[DEFAULT_TEXT_SIZE]);
int textHeight = DEFAULT_TEXT_SIZE; int textHeight = styleGeneric[DEFAULT_TEXT_SIZE];
if (bounds.width < textWidth) bounds.width = textWidth; if (bounds.width < textWidth) bounds.width = textWidth;
if (bounds.height < textHeight) bounds.height = textHeight; if (bounds.height < textHeight) bounds.height = textHeight;
@ -658,19 +589,19 @@ RAYGUIDEF bool GuiButton(Rectangle bounds, const char *text)
{ {
DrawRectangleRecT(bounds, GetColor(style[BUTTON_BORDER_COLOR_NORMAL])); DrawRectangleRecT(bounds, GetColor(style[BUTTON_BORDER_COLOR_NORMAL]));
DrawRectangleT(bounds.x + style[BUTTON_BORDER_WIDTH], bounds.y + style[BUTTON_BORDER_WIDTH], bounds.width - 2*style[BUTTON_BORDER_WIDTH], bounds.height - 2*style[BUTTON_BORDER_WIDTH], GetColor(style[BUTTON_BASE_COLOR_NORMAL])); DrawRectangleT(bounds.x + style[BUTTON_BORDER_WIDTH], bounds.y + style[BUTTON_BORDER_WIDTH], bounds.width - 2*style[BUTTON_BORDER_WIDTH], bounds.height - 2*style[BUTTON_BORDER_WIDTH], GetColor(style[BUTTON_BASE_COLOR_NORMAL]));
DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[BUTTON_TEXT_COLOR_NORMAL])); DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[BUTTON_TEXT_COLOR_NORMAL]));
} break; } break;
case FOCUSED: case FOCUSED:
{ {
DrawRectangleRecT(bounds, GetColor(style[BUTTON_BORDER_COLOR_FOCUSED])); DrawRectangleRecT(bounds, GetColor(style[BUTTON_BORDER_COLOR_FOCUSED]));
DrawRectangleT(bounds.x + style[BUTTON_BORDER_WIDTH], bounds.y + style[BUTTON_BORDER_WIDTH], bounds.width - 2*style[BUTTON_BORDER_WIDTH], bounds.height - 2*style[BUTTON_BORDER_WIDTH], GetColor(style[BUTTON_BASE_COLOR_FOCUSED])); DrawRectangleT(bounds.x + style[BUTTON_BORDER_WIDTH], bounds.y + style[BUTTON_BORDER_WIDTH], bounds.width - 2*style[BUTTON_BORDER_WIDTH], bounds.height - 2*style[BUTTON_BORDER_WIDTH], GetColor(style[BUTTON_BASE_COLOR_FOCUSED]));
DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[BUTTON_TEXT_COLOR_FOCUSED])); DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[BUTTON_TEXT_COLOR_FOCUSED]));
} break; } break;
case PRESSED: case PRESSED:
{ {
DrawRectangleRecT(bounds, GetColor(style[BUTTON_BORDER_COLOR_PRESSED])); DrawRectangleRecT(bounds, GetColor(style[BUTTON_BORDER_COLOR_PRESSED]));
DrawRectangleT(bounds.x + style[BUTTON_BORDER_WIDTH], bounds.y + style[BUTTON_BORDER_WIDTH], bounds.width - 2*style[BUTTON_BORDER_WIDTH], bounds.height - 2*style[BUTTON_BORDER_WIDTH], GetColor(style[BUTTON_BASE_COLOR_PRESSED])); DrawRectangleT(bounds.x + style[BUTTON_BORDER_WIDTH], bounds.y + style[BUTTON_BORDER_WIDTH], bounds.width - 2*style[BUTTON_BORDER_WIDTH], bounds.height - 2*style[BUTTON_BORDER_WIDTH], GetColor(style[BUTTON_BASE_COLOR_PRESSED]));
DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[BUTTON_TEXT_COLOR_PRESSED])); DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[BUTTON_TEXT_COLOR_PRESSED]));
} break; } break;
default: break; default: break;
} }
@ -689,8 +620,8 @@ RAYGUIDEF bool GuiToggleButton(Rectangle bounds, const char *text, bool active)
// Update control // Update control
//-------------------------------------------------------------------- //--------------------------------------------------------------------
int textWidth = MeasureText(text, DEFAULT_TEXT_SIZE); int textWidth = MeasureText(text, styleGeneric[DEFAULT_TEXT_SIZE]);
int textHeight = DEFAULT_TEXT_SIZE; int textHeight = styleGeneric[DEFAULT_TEXT_SIZE];
if (bounds.width < textWidth) bounds.width = textWidth; if (bounds.width < textWidth) bounds.width = textWidth;
if (bounds.height < textHeight) bounds.height = textHeight; if (bounds.height < textHeight) bounds.height = textHeight;
@ -718,26 +649,26 @@ RAYGUIDEF bool GuiToggleButton(Rectangle bounds, const char *text, bool active)
{ {
DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_PRESSED])); DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_PRESSED]));
DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_PRESSED])); DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_PRESSED]));
DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[TOGGLE_TEXT_COLOR_PRESSED])); DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[TOGGLE_TEXT_COLOR_PRESSED]));
} }
else else
{ {
DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_NORMAL])); DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_NORMAL]));
DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_NORMAL])); DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_NORMAL]));
DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[TOGGLE_TEXT_COLOR_NORMAL])); DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[TOGGLE_TEXT_COLOR_NORMAL]));
} }
} break; } break;
case FOCUSED: case FOCUSED:
{ {
DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_FOCUSED])); DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_FOCUSED]));
DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_FOCUSED])); DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_FOCUSED]));
DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[TOGGLE_TEXT_COLOR_FOCUSED])); DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[TOGGLE_TEXT_COLOR_FOCUSED]));
} break; } break;
case PRESSED: case PRESSED:
{ {
DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_PRESSED])); DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_PRESSED]));
DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_PRESSED])); DrawRectangleT(bounds.x + style[TOGGLE_BORDER_WIDTH], bounds.y + style[TOGGLE_BORDER_WIDTH], bounds.width - 2*style[TOGGLE_BORDER_WIDTH], bounds.height - 2*style[TOGGLE_BORDER_WIDTH], GetColor(style[TOGGLE_BASE_COLOR_PRESSED]));
DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, DEFAULT_TEXT_SIZE, GetColor(style[TOGGLE_TEXT_COLOR_PRESSED])); DrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - textHeight/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[TOGGLE_TEXT_COLOR_PRESSED]));
} break; } break;
default: break; default: break;
} }
@ -835,8 +766,8 @@ RAYGUIDEF int GuiComboBox(Rectangle bounds, int comboCount, char **comboText, in
if (active < 0) active = 0; if (active < 0) active = 0;
else if (active > comboCount - 1) active = comboCount - 1; else if (active > comboCount - 1) active = comboCount - 1;
int textWidth = MeasureText(comboText[active], DEFAULT_TEXT_SIZE); int textWidth = MeasureText(comboText[active], styleGeneric[DEFAULT_TEXT_SIZE]);
int textHeight = DEFAULT_TEXT_SIZE; int textHeight = styleGeneric[DEFAULT_TEXT_SIZE];
if (bounds.width < textWidth) bounds.width = textWidth; if (bounds.width < textWidth) bounds.width = textWidth;
if (bounds.height < textHeight) bounds.height = textHeight; if (bounds.height < textHeight) bounds.height = textHeight;
@ -866,11 +797,11 @@ RAYGUIDEF int GuiComboBox(Rectangle bounds, int comboCount, char **comboText, in
DrawRectangleRecT(selector, GetColor(style[COMBOBOX_BORDER_COLOR_NORMAL])); DrawRectangleRecT(selector, GetColor(style[COMBOBOX_BORDER_COLOR_NORMAL]));
DrawRectangleT(selector.x + style[COMBOBOX_BORDER_WIDTH], selector.y + style[COMBOBOX_BORDER_WIDTH], selector.width - 2*style[COMBOBOX_BORDER_WIDTH], selector.height - 2*style[COMBOBOX_BORDER_WIDTH], GetColor(style[COMBOBOX_BASE_COLOR_NORMAL])); DrawRectangleT(selector.x + style[COMBOBOX_BORDER_WIDTH], selector.y + style[COMBOBOX_BORDER_WIDTH], selector.width - 2*style[COMBOBOX_BORDER_WIDTH], selector.height - 2*style[COMBOBOX_BORDER_WIDTH], GetColor(style[COMBOBOX_BASE_COLOR_NORMAL]));
DrawText(comboText[active], bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - DEFAULT_TEXT_SIZE/2, DEFAULT_TEXT_SIZE, GetColor(style[COMBOBOX_TEXT_COLOR_NORMAL])); DrawText(comboText[active], bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[COMBOBOX_TEXT_COLOR_NORMAL]));
DrawText(FormatText("%i/%i", active + 1, comboCount), DrawText(FormatText("%i/%i", active + 1, comboCount),
selector.x + selector.width/2 - (MeasureText(FormatText("%i/%i", active + 1, comboCount), selector.x + selector.width/2 - (MeasureText(FormatText("%i/%i", active + 1, comboCount),
DEFAULT_TEXT_SIZE)/2), selector.y + selector.height/2 - DEFAULT_TEXT_SIZE/2, styleGeneric[DEFAULT_TEXT_SIZE])/2), selector.y + selector.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2,
DEFAULT_TEXT_SIZE, GetColor(style[BUTTON_TEXT_COLOR_NORMAL])); styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[BUTTON_TEXT_COLOR_NORMAL]));
} break; } break;
case FOCUSED: case FOCUSED:
{ {
@ -880,11 +811,11 @@ RAYGUIDEF int GuiComboBox(Rectangle bounds, int comboCount, char **comboText, in
DrawRectangleRecT(selector, GetColor(style[COMBOBOX_BORDER_COLOR_FOCUSED])); DrawRectangleRecT(selector, GetColor(style[COMBOBOX_BORDER_COLOR_FOCUSED]));
DrawRectangleT(selector.x + style[COMBOBOX_BORDER_WIDTH], selector.y + style[COMBOBOX_BORDER_WIDTH], selector.width - 2*style[COMBOBOX_BORDER_WIDTH], selector.height - 2*style[COMBOBOX_BORDER_WIDTH], GetColor(style[COMBOBOX_BASE_COLOR_FOCUSED])); DrawRectangleT(selector.x + style[COMBOBOX_BORDER_WIDTH], selector.y + style[COMBOBOX_BORDER_WIDTH], selector.width - 2*style[COMBOBOX_BORDER_WIDTH], selector.height - 2*style[COMBOBOX_BORDER_WIDTH], GetColor(style[COMBOBOX_BASE_COLOR_FOCUSED]));
DrawText(comboText[active], bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - DEFAULT_TEXT_SIZE/2, DEFAULT_TEXT_SIZE, GetColor(style[COMBOBOX_TEXT_COLOR_FOCUSED])); DrawText(comboText[active], bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[COMBOBOX_TEXT_COLOR_FOCUSED]));
DrawText(FormatText("%i/%i", active + 1, comboCount), DrawText(FormatText("%i/%i", active + 1, comboCount),
selector.x + selector.width/2 - (MeasureText(FormatText("%i/%i", active + 1, comboCount), selector.x + selector.width/2 - (MeasureText(FormatText("%i/%i", active + 1, comboCount),
DEFAULT_TEXT_SIZE)/2), selector.y + selector.height/2 - DEFAULT_TEXT_SIZE/2, styleGeneric[DEFAULT_TEXT_SIZE])/2), selector.y + selector.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2,
DEFAULT_TEXT_SIZE, GetColor(style[BUTTON_TEXT_COLOR_FOCUSED])); styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[BUTTON_TEXT_COLOR_FOCUSED]));
} break; } break;
case PRESSED: case PRESSED:
{ {
@ -894,11 +825,11 @@ RAYGUIDEF int GuiComboBox(Rectangle bounds, int comboCount, char **comboText, in
DrawRectangleRecT(selector, GetColor(style[COMBOBOX_BORDER_COLOR_PRESSED])); DrawRectangleRecT(selector, GetColor(style[COMBOBOX_BORDER_COLOR_PRESSED]));
DrawRectangleT(selector.x + style[COMBOBOX_BORDER_WIDTH], selector.y + style[COMBOBOX_BORDER_WIDTH], selector.width - 2*style[COMBOBOX_BORDER_WIDTH], selector.height - 2*style[COMBOBOX_BORDER_WIDTH], GetColor(style[COMBOBOX_BASE_COLOR_PRESSED])); DrawRectangleT(selector.x + style[COMBOBOX_BORDER_WIDTH], selector.y + style[COMBOBOX_BORDER_WIDTH], selector.width - 2*style[COMBOBOX_BORDER_WIDTH], selector.height - 2*style[COMBOBOX_BORDER_WIDTH], GetColor(style[COMBOBOX_BASE_COLOR_PRESSED]));
DrawText(comboText[active], bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - DEFAULT_TEXT_SIZE/2, DEFAULT_TEXT_SIZE, GetColor(style[COMBOBOX_TEXT_COLOR_PRESSED])); DrawText(comboText[active], bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[COMBOBOX_TEXT_COLOR_PRESSED]));
DrawText(FormatText("%i/%i", active + 1, comboCount), DrawText(FormatText("%i/%i", active + 1, comboCount),
selector.x + selector.width/2 - (MeasureText(FormatText("%i/%i", active + 1, comboCount), selector.x + selector.width/2 - (MeasureText(FormatText("%i/%i", active + 1, comboCount),
DEFAULT_TEXT_SIZE)/2), selector.y + selector.height/2 - DEFAULT_TEXT_SIZE/2, styleGeneric[DEFAULT_TEXT_SIZE])/2), selector.y + selector.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2,
DEFAULT_TEXT_SIZE, GetColor(style[BUTTON_TEXT_COLOR_PRESSED])); styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[BUTTON_TEXT_COLOR_PRESSED]));
} break; } break;
default: break; default: break;
} }
@ -1101,8 +1032,8 @@ RAYGUIDEF int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue
Rectangle leftButtonBound = { bounds.x, bounds.y, SPINNER_BUTTON_WIDTH, bounds.height }; Rectangle leftButtonBound = { bounds.x, bounds.y, SPINNER_BUTTON_WIDTH, bounds.height };
Rectangle rightButtonBound = { bounds.x + bounds.width - SPINNER_BUTTON_WIDTH, bounds.y, SPINNER_BUTTON_WIDTH, bounds.height }; Rectangle rightButtonBound = { bounds.x + bounds.width - SPINNER_BUTTON_WIDTH, bounds.y, SPINNER_BUTTON_WIDTH, bounds.height };
int textWidth = MeasureText(FormatText("%i", value), DEFAULT_TEXT_SIZE); int textWidth = MeasureText(FormatText("%i", value), styleGeneric[DEFAULT_TEXT_SIZE]);
int textHeight = DEFAULT_TEXT_SIZE; int textHeight = styleGeneric[DEFAULT_TEXT_SIZE];
if (bounds.width < textWidth) bounds.width = textWidth; if (bounds.width < textWidth) bounds.width = textWidth;
if (bounds.height < textHeight) bounds.height = textHeight; if (bounds.height < textHeight) bounds.height = textHeight;
@ -1208,21 +1139,21 @@ RAYGUIDEF int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue
DrawRectangleRecT(spinner, GetColor(style[SPINNER_BORDER_COLOR_NORMAL])); DrawRectangleRecT(spinner, GetColor(style[SPINNER_BORDER_COLOR_NORMAL]));
DrawRectangleT(spinner.x + 1, spinner.y + 1, spinner.width - 2, spinner.height - 2, GetColor(style[SPINNER_BASE_COLOR_NORMAL])); DrawRectangleT(spinner.x + 1, spinner.y + 1, spinner.width - 2, spinner.height - 2, GetColor(style[SPINNER_BASE_COLOR_NORMAL]));
DrawText(FormatText("%i", value), spinner.x + (spinner.width/2 - textWidth/2), spinner.y + (spinner.height/2 - (DEFAULT_TEXT_SIZE/2)), DEFAULT_TEXT_SIZE, GetColor(style[SPINNER_TEXT_COLOR_NORMAL])); DrawText(FormatText("%i", value), spinner.x + (spinner.width/2 - textWidth/2), spinner.y + (spinner.height/2 - (styleGeneric[DEFAULT_TEXT_SIZE]/2)), styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[SPINNER_TEXT_COLOR_NORMAL]));
} break; } break;
case FOCUSED: case FOCUSED:
{ {
DrawRectangleRecT(spinner, GetColor(style[SPINNER_BORDER_COLOR_FOCUSED])); DrawRectangleRecT(spinner, GetColor(style[SPINNER_BORDER_COLOR_FOCUSED]));
DrawRectangleT(spinner.x + 1, spinner.y + 1, spinner.width - 2, spinner.height - 2, GetColor(style[SPINNER_BASE_COLOR_FOCUSED])); DrawRectangleT(spinner.x + 1, spinner.y + 1, spinner.width - 2, spinner.height - 2, GetColor(style[SPINNER_BASE_COLOR_FOCUSED]));
DrawText(FormatText("%i", value), spinner.x + (spinner.width/2 - textWidth/2), spinner.y + (spinner.height/2 - (DEFAULT_TEXT_SIZE/2)), DEFAULT_TEXT_SIZE, GetColor(style[SPINNER_TEXT_COLOR_FOCUSED])); DrawText(FormatText("%i", value), spinner.x + (spinner.width/2 - textWidth/2), spinner.y + (spinner.height/2 - (styleGeneric[DEFAULT_TEXT_SIZE]/2)), styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[SPINNER_TEXT_COLOR_FOCUSED]));
} break; } break;
case PRESSED: case PRESSED:
{ {
DrawRectangleRecT(spinner, GetColor(style[SPINNER_BORDER_COLOR_PRESSED])); DrawRectangleRecT(spinner, GetColor(style[SPINNER_BORDER_COLOR_PRESSED]));
DrawRectangleT(spinner.x + 1, spinner.y + 1, spinner.width - 2, spinner.height - 2, GetColor(style[SPINNER_BASE_COLOR_PRESSED])); DrawRectangleT(spinner.x + 1, spinner.y + 1, spinner.width - 2, spinner.height - 2, GetColor(style[SPINNER_BASE_COLOR_PRESSED]));
DrawText(FormatText("%i", value), spinner.x + (spinner.width/2 - textWidth/2), spinner.y + (spinner.height/2 - (DEFAULT_TEXT_SIZE/2)), DEFAULT_TEXT_SIZE, GetColor(style[SPINNER_TEXT_COLOR_PRESSED])); DrawText(FormatText("%i", value), spinner.x + (spinner.width/2 - textWidth/2), spinner.y + (spinner.height/2 - (styleGeneric[DEFAULT_TEXT_SIZE]/2)), styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[SPINNER_TEXT_COLOR_PRESSED]));
} break; } break;
default: break; default: break;
} }
@ -1294,16 +1225,16 @@ RAYGUIDEF void GuiTextBox(Rectangle bounds, char *text, int textSize)
{ {
DrawRectangleRecT(bounds, GetColor(style[TEXTBOX_BORDER_COLOR_NORMAL])); DrawRectangleRecT(bounds, GetColor(style[TEXTBOX_BORDER_COLOR_NORMAL]));
DrawRectangleT(bounds.x + style[TEXTBOX_BORDER_WIDTH], bounds.y + style[TEXTBOX_BORDER_WIDTH], bounds.width - 2*style[TEXTBOX_BORDER_WIDTH], bounds.height - 2*style[TEXTBOX_BORDER_WIDTH], GetColor(style[TEXTBOX_BASE_COLOR_NORMAL])); DrawRectangleT(bounds.x + style[TEXTBOX_BORDER_WIDTH], bounds.y + style[TEXTBOX_BORDER_WIDTH], bounds.width - 2*style[TEXTBOX_BORDER_WIDTH], bounds.height - 2*style[TEXTBOX_BORDER_WIDTH], GetColor(style[TEXTBOX_BASE_COLOR_NORMAL]));
DrawText(text, bounds.x + 4, bounds.y + style[TEXTBOX_BORDER_WIDTH] + bounds.height/2 - DEFAULT_TEXT_SIZE/2, DEFAULT_TEXT_SIZE, GetColor(style[TEXTBOX_TEXT_COLOR_NORMAL])); DrawText(text, bounds.x + 4, bounds.y + style[TEXTBOX_BORDER_WIDTH] + bounds.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[TEXTBOX_TEXT_COLOR_NORMAL]));
} break; } break;
case FOCUSED: case FOCUSED:
{ {
DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_FOCUSED])); DrawRectangleRecT(bounds, GetColor(style[TOGGLE_BORDER_COLOR_FOCUSED]));
DrawRectangleT(bounds.x + style[TEXTBOX_BORDER_WIDTH], bounds.y + style[TEXTBOX_BORDER_WIDTH], bounds.width - 2*style[TEXTBOX_BORDER_WIDTH], bounds.height - 2*style[TEXTBOX_BORDER_WIDTH], GetColor(style[TEXTBOX_BASE_COLOR_FOCUSED])); DrawRectangleT(bounds.x + style[TEXTBOX_BORDER_WIDTH], bounds.y + style[TEXTBOX_BORDER_WIDTH], bounds.width - 2*style[TEXTBOX_BORDER_WIDTH], bounds.height - 2*style[TEXTBOX_BORDER_WIDTH], GetColor(style[TEXTBOX_BASE_COLOR_FOCUSED]));
DrawText(text, bounds.x + 4, bounds.y + style[TEXTBOX_BORDER_WIDTH] + bounds.height/2 - DEFAULT_TEXT_SIZE/2, DEFAULT_TEXT_SIZE, GetColor(style[TEXTBOX_TEXT_COLOR_PRESSED])); DrawText(text, bounds.x + 4, bounds.y + style[TEXTBOX_BORDER_WIDTH] + bounds.height/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, styleGeneric[DEFAULT_TEXT_SIZE], GetColor(style[TEXTBOX_TEXT_COLOR_PRESSED]));
if ((framesCounter/20)%2 == 0) DrawRectangleT(bounds.x + 4 + MeasureText(text, DEFAULT_TEXT_SIZE), bounds.y + 2, 1, bounds.height - 4, GetColor(style[TEXTBOX_BORDER_COLOR_FOCUSED])); if ((framesCounter/20)%2 == 0) DrawRectangleT(bounds.x + 4 + MeasureText(text, styleGeneric[DEFAULT_TEXT_SIZE]), bounds.y + 2, 1, bounds.height - 4, GetColor(style[TEXTBOX_BORDER_COLOR_FOCUSED]));
} break; } break;
case PRESSED: break; // NOTE: PRESSED state is not used on this control case PRESSED: break; // NOTE: PRESSED state is not used on this control
@ -1548,20 +1479,143 @@ RAYGUIDEF void GuiEndPanel()
//offset = (Vector2){ 0.0f, 0.0f }; //offset = (Vector2){ 0.0f, 0.0f };
} }
// Load GUI style from an image file
RAYGUIDEF void LoadGuiStyleImage(const char *fileName)
{
// NOTE: Image data only defines color properties
Image imStyle = LoadImage(fileName);
Color *pixels = GetImageData(imStyle);
styleGeneric[DEFAULT_BACKGROUND_COLOR] = GetHexValue(pixels[1 + imStyle.width*1]);
styleGeneric[DEFAULT_LINES_COLOR] = GetHexValue(pixels[0 + imStyle.width*0]);
styleGeneric[DEFAULT_TEXT_FONT] = 0; // Info not included in image data
styleGeneric[styleGeneric[DEFAULT_TEXT_SIZE]] = 20; // Info not included in image data
styleGeneric[DEFAULT_BORDER_WIDTH] = 1; // Info not included in image data
styleGeneric[DEFAULT_BORDER_COLOR_NORMAL] = GetHexValue(pixels[2 + imStyle.width*2]);
styleGeneric[DEFAULT_BASE_COLOR_NORMAL] = GetHexValue(pixels[3 + imStyle.width*3]);
styleGeneric[DEFAULT_TEXT_COLOR_NORMAL] = GetHexValue(pixels[9 + imStyle.width*4]);
styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED] = GetHexValue(pixels[17 + imStyle.width*2]);
styleGeneric[DEFAULT_BASE_COLOR_FOCUSED] = GetHexValue(pixels[18 + imStyle.width*3]);
styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED] = GetHexValue(pixels[24 + imStyle.width*4]);
styleGeneric[DEFAULT_BORDER_COLOR_PRESSED] = GetHexValue(pixels[32 + imStyle.width*2]);
styleGeneric[DEFAULT_BASE_COLOR_PRESSED] = GetHexValue(pixels[33 + imStyle.width*3]);
styleGeneric[DEFAULT_TEXT_COLOR_PRESSED] = GetHexValue(pixels[39 + imStyle.width*4]);
styleGeneric[DEFAULT_BORDER_COLOR_DISABLED] = GetHexValue(pixels[47 + imStyle.width*2]);
styleGeneric[DEFAULT_BASE_COLOR_DISABLED] = GetHexValue(pixels[48 + imStyle.width*3]);
styleGeneric[DEFAULT_TEXT_COLOR_DISABLED] = GetHexValue(pixels[54 + imStyle.width*4]);
UpdateStyleComplete();
UnloadImage(imStyle);
}
// Updates full style property set with generic values
// NOTE: Requires globals styleGeneric[] and style[]
RAYGUIDEF void UpdateStyleComplete(void)
{
style[LABEL_TEXT_COLOR_NORMAL] = styleGeneric[DEFAULT_TEXT_COLOR_NORMAL];
style[LABEL_TEXT_COLOR_FOCUSED] = styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED];
style[LABEL_TEXT_COLOR_PRESSED] = styleGeneric[DEFAULT_TEXT_COLOR_PRESSED];
style[BUTTON_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH]*2;
style[BUTTON_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[BUTTON_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BASE_COLOR_NORMAL];
style[BUTTON_TEXT_COLOR_NORMAL] = styleGeneric[DEFAULT_TEXT_COLOR_NORMAL];
style[BUTTON_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[BUTTON_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[BUTTON_TEXT_COLOR_FOCUSED] = styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED];
style[BUTTON_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[BUTTON_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[BUTTON_TEXT_COLOR_PRESSED] = styleGeneric[DEFAULT_TEXT_COLOR_PRESSED];
style[TOGGLE_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH];
style[TOGGLE_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[TOGGLE_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BASE_COLOR_NORMAL];
style[TOGGLE_TEXT_COLOR_NORMAL] = styleGeneric[DEFAULT_TEXT_COLOR_NORMAL];
style[TOGGLE_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[TOGGLE_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[TOGGLE_TEXT_COLOR_FOCUSED] = styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED];
style[TOGGLE_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[TOGGLE_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[TOGGLE_TEXT_COLOR_PRESSED] = styleGeneric[DEFAULT_TEXT_COLOR_PRESSED];
style[TOGGLEGROUP_PADDING] = 2;
style[SLIDER_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH];
style[SLIDER_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[SLIDER_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BASE_COLOR_NORMAL];
style[SLIDER_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[SLIDER_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[SLIDER_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[SLIDER_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[SLIDERBAR_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH];
style[SLIDERBAR_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[SLIDERBAR_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BASE_COLOR_NORMAL];
style[SLIDERBAR_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[SLIDERBAR_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[SLIDERBAR_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[SLIDERBAR_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[PROGRESSBAR_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH];
style[PROGRESSBAR_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[PROGRESSBAR_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[PROGRESSBAR_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[PROGRESSBAR_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[SPINNER_BUTTON_PADDING] = 2;
style[SPINNER_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[SPINNER_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BASE_COLOR_NORMAL];
style[SPINNER_TEXT_COLOR_NORMAL] = styleGeneric[DEFAULT_TEXT_COLOR_NORMAL];
style[SPINNER_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[SPINNER_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[SPINNER_TEXT_COLOR_FOCUSED] = styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED];
style[SPINNER_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[SPINNER_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[SPINNER_TEXT_COLOR_PRESSED] = styleGeneric[DEFAULT_TEXT_COLOR_PRESSED];
style[COMBOBOX_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH];
style[COMBOBOX_BUTTON_PADDING] = 2; //
style[COMBOBOX_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[COMBOBOX_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BASE_COLOR_NORMAL];
style[COMBOBOX_TEXT_COLOR_NORMAL] = styleGeneric[DEFAULT_TEXT_COLOR_NORMAL];
style[COMBOBOX_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[COMBOBOX_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[COMBOBOX_TEXT_COLOR_FOCUSED] = styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED];
style[COMBOBOX_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[COMBOBOX_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[COMBOBOX_TEXT_COLOR_PRESSED] = styleGeneric[DEFAULT_TEXT_COLOR_PRESSED];
style[CHECKBOX_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH];
style[CHECKBOX_INNER_PADDING] = 1;
style[CHECKBOX_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[CHECKBOX_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BACKGROUND_COLOR];
style[CHECKBOX_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[CHECKBOX_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED];
style[CHECKBOX_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[CHECKBOX_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_TEXT_COLOR_PRESSED];
style[TEXTBOX_BORDER_WIDTH] = styleGeneric[DEFAULT_BORDER_WIDTH];
style[TEXTBOX_BORDER_COLOR_NORMAL] = styleGeneric[DEFAULT_BORDER_COLOR_NORMAL];
style[TEXTBOX_BASE_COLOR_NORMAL] = styleGeneric[DEFAULT_BACKGROUND_COLOR];
style[TEXTBOX_TEXT_COLOR_NORMAL] = styleGeneric[DEFAULT_TEXT_COLOR_NORMAL];
style[TEXTBOX_BORDER_COLOR_FOCUSED] = styleGeneric[DEFAULT_BORDER_COLOR_FOCUSED];
style[TEXTBOX_BASE_COLOR_FOCUSED] = styleGeneric[DEFAULT_BASE_COLOR_FOCUSED];
style[TEXTBOX_TEXT_COLOR_FOCUSED] = styleGeneric[DEFAULT_TEXT_COLOR_FOCUSED];
style[TEXTBOX_BORDER_COLOR_PRESSED] = styleGeneric[DEFAULT_BORDER_COLOR_PRESSED];
style[TEXTBOX_BASE_COLOR_PRESSED] = styleGeneric[DEFAULT_BASE_COLOR_PRESSED];
style[TEXTBOX_TEXT_COLOR_PRESSED] = styleGeneric[DEFAULT_TEXT_COLOR_PRESSED];
}
#if defined(RAYGUI_STYLE_SAVE_LOAD) #if defined(RAYGUI_STYLE_SAVE_LOAD)
// Save current GUI style into a text file // Save current GUI style into a text file
RAYGUIDEF void SaveGuiStyle(const char *fileName) RAYGUIDEF void SaveGuiStyle(const char *fileName)
{ {
/*
FILE *styleFile = fopen(fileName, "wt"); FILE *styleFile = fopen(fileName, "wt");
for (int i = 0; i < NUM_PROPERTIES; i++) fprintf(styleFile, "%-40s0x%x\n", guiPropertyName[i], GetStyleProperty(i)); for (int i = 0; i < NUM_PROPERTIES; i++) fprintf(styleFile, "%-40s0x%x\n", guiPropertyName[i], GetStyleProperty(i));
fclose(styleFile); fclose(styleFile);
*/
} }
// Load GUI style from a text file // Load GUI style from a text file
RAYGUIDEF void LoadGuiStyle(const char *fileName) RAYGUIDEF void LoadGuiStyle(const char *fileName)
{ {
/*
#define MAX_STYLE_PROPERTIES 128 #define MAX_STYLE_PROPERTIES 128
typedef struct { typedef struct {
@ -1598,6 +1652,7 @@ RAYGUIDEF void LoadGuiStyle(const char *fileName)
} }
RAYGUI_FREE(styleProp); RAYGUI_FREE(styleProp);
*/
} }
// Set one style property value // Set one style property value

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -239,6 +239,8 @@ int main()
GetCurrentDir(currentPath, sizeof(currentPath)); GetCurrentDir(currentPath, sizeof(currentPath));
currentPath[strlen(currentPath)] = '\\'; currentPath[strlen(currentPath)] = '\\';
currentPath[strlen(currentPath) + 1] = '\0'; // Not really required currentPath[strlen(currentPath) + 1] = '\0'; // Not really required
LoadGuiStyleImage("rguistyle_default_dark.png");
SetTargetFPS(60); SetTargetFPS(60);
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
@ -389,8 +391,8 @@ int main()
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
// Show selected properties // Show selected properties
if (guiPropertySelected >= 0) DrawText(FormatText("SELECTED PROPERTY: <%s>", guiPropertyName[guiPropertySelected]), 5, screenHeight - STATUS_BAR_HEIGHT + 8, FONT_SIZE , BLACK); //if (guiPropertySelected >= 0) DrawText(FormatText("SELECTED PROPERTY: <%s>", guiPropertyName[guiPropertySelected]), 5, screenHeight - STATUS_BAR_HEIGHT + 8, FONT_SIZE , BLACK);
else DrawText("SELECTED PROPERTY: <style property> / none", 5, screenHeight - STATUS_BAR_HEIGHT + 8, FONT_SIZE , BLACK); //else DrawText("SELECTED PROPERTY: <style property> / none", 5, screenHeight - STATUS_BAR_HEIGHT + 8, FONT_SIZE , BLACK);
// Show if have been a modification // Show if have been a modification
if (!isModified) DrawText("SAVE STATUS: SAVED (filename.style)", screenWidth - 230 , screenHeight - STATUS_BAR_HEIGHT + 8, FONT_SIZE , BLACK); if (!isModified) DrawText("SAVE STATUS: SAVED (filename.style)", screenWidth - 230 , screenHeight - STATUS_BAR_HEIGHT + 8, FONT_SIZE , BLACK);
@ -404,7 +406,7 @@ int main()
// UI sample // UI sample
// Background // Background
DrawRectangle(400,0, screenWidth - 320 - 400, GetScreenHeight() - STATUS_BAR_HEIGHT, bgColor); DrawRectangle(400,0, screenWidth - 320 - 400, GetScreenHeight() - STATUS_BAR_HEIGHT, GuiBackgroundColor());
GuiLabel((Rectangle){guiPosX, guiPosY, guiWidth, guiHeight}, "Label"); GuiLabel((Rectangle){guiPosX, guiPosY, guiWidth, guiHeight}, "Label");
//GuiLabelEx((Rectangle){guiPosX + deltaX, guiPosY, guiWidth, guiHeight}, "LabelEx", BLACK, BLACK, WHITE); //GuiLabelEx((Rectangle){guiPosX + deltaX, guiPosY, guiWidth, guiHeight}, "LabelEx", BLACK, BLACK, WHITE);
@ -445,7 +447,7 @@ int main()
for (int i = guiPropertyPos[guiElementSelected]; i < guiPropertyPos[guiElementSelected] + guiPropertyNum[guiElementSelected]; i++) for (int i = guiPropertyPos[guiElementSelected]; i < guiPropertyPos[guiElementSelected] + guiPropertyNum[guiElementSelected]; i++)
{ {
DrawText(guiPropertyName[i], propertyRec[i].x + propertyRec[i].width/2 - MeasureText(guiPropertyName[i], FONT_SIZE)/2, propertyRec[i].y + 15, FONT_SIZE, BLACK); //DrawText(guiPropertyName[i], propertyRec[i].x + propertyRec[i].width/2 - MeasureText(guiPropertyName[i], FONT_SIZE)/2, propertyRec[i].y + 15, FONT_SIZE, BLACK);
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB