remove LOCKED state. Create guiLocked boolean. Improve FOCUSED state.

This commit is contained in:
Sergio Martínez
2018-10-23 13:11:22 +02:00
parent 16193a35b0
commit f4c043f302
3 changed files with 118 additions and 89 deletions

View File

@ -39,7 +39,7 @@ int main()
int Spinner001Value = 0;
int ValueBox002Value = 0;
char TextBox003Text[64] = "SAMPLE TEXT";
int ListView004Active = 1;
int ListView004Active = -1;
const char *ListView004TextList[6] = { "Charmander", "Bulbasaur", "Squirtel", "Pikachu", "Eevee", "Pidgey" };
char TextBox006Text[141] = "SAMPLE TEXT";
@ -54,7 +54,7 @@ int main()
bool dropDown001EditMode = false;
//----------------------------------------------------------------------------------
Font font = LoadFontEx("fonts/pixelpoiiz10.ttf", 10, 0, 0);
Font font = LoadFontEx("fonts/NorthernLights.ttf", 30, 0, 0);
GuiFont(font);
SetTargetFPS(60);
@ -92,6 +92,12 @@ int main()
if (GuiDropdownBox((Rectangle){ 25, 25, 125, 30 }, DropdownBox000TextList, 3, &DropdownBox000Active, dropDown000EditMode)) dropDown000EditMode = !dropDown000EditMode;
GuiLock();
GuiState(0); if (GuiButton((Rectangle){ 25, 400, 125, 30 }, "SAMPLE TEXT")) Button005();
GuiState(1); if (GuiButton((Rectangle){ 25, 440, 125, 30 }, "SAMPLE TEXT")) Button005();
GuiState(2); if (GuiButton((Rectangle){ 25, 480, 125, 30 }, "SAMPLE TEXT")) Button005();
GuiState(3); if (GuiButton((Rectangle){ 25, 520, 125, 30 }, "SAMPLE TEXT")) Button005();
GuiState(1);
GuiUnlock();
//----------------------------------------------------------------------------------

Binary file not shown.

View File

@ -360,8 +360,9 @@ typedef enum GuiProperty {
// Global gui modification functions
RAYGUIDEF void GuiEnable(void); // Enable gui controls (global state)
RAYGUIDEF void GuiDisable(void); // Disable gui controls (global state)
RAYGUIDEF void GuiLock(void); // Disable gui controls (global state)
RAYGUIDEF void GuiUnlock(void); // Disable gui controls (global state)
RAYGUIDEF void GuiLock(void); // Lock gui controls (global state)
RAYGUIDEF void GuiUnlock(void); // Unlock gui controls (global state)
RAYGUIDEF void GuiState(int state); // Set gui state (global state)
RAYGUIDEF void GuiFont(Font font); // Define custom gui font (global state)
RAYGUIDEF void GuiFade(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f
@ -450,14 +451,14 @@ typedef enum GuiControlState {
DISABLED = 0,
NORMAL,
FOCUSED,
PRESSED,
LOCKED
PRESSED
} GuiControlState;
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
static GuiControlState guiState = NORMAL;
static bool guiLocked = false;
static float guiAlpha = 1.0f;
static Font guiFont = { 0 };
@ -803,7 +804,6 @@ static int style[NUM_PROPERTIES] = {
#define WHITE CLITERAL{ 255, 255, 255, 255 } // White
#define BLACK CLITERAL{ 0, 0, 0, 255 } // Black
#define LIGHTGRAY CLITERAL{ 200, 200, 200, 255 } // Light Gray
#define RAYWHITE CLITERAL{ 245, 245, 245, 255 } // My own White (raylib logo)
// This functions are directly implemented in raygui
@ -886,10 +886,13 @@ RAYGUIDEF void GuiEnable(void) { guiState = NORMAL; }
RAYGUIDEF void GuiDisable(void) { guiState = DISABLED; }
// Lock gui global state
RAYGUIDEF void GuiLock(void) { guiState = LOCKED; }
RAYGUIDEF void GuiLock(void) { guiLocked = true; }
// Unlock gui global state
RAYGUIDEF void GuiUnlock(void) { guiState = NORMAL; }
RAYGUIDEF void GuiUnlock(void) { guiLocked = false; }
// Set gui state (global state)
RAYGUIDEF void GuiState(int state) { guiState = (GuiControlState)state; }
// Define custom gui font
RAYGUIDEF void GuiFont(Font font)
@ -936,7 +939,7 @@ RAYGUIDEF bool GuiWindowBox(Rectangle bounds, const char *text)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -955,7 +958,6 @@ RAYGUIDEF bool GuiWindowBox(Rectangle bounds, const char *text)
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, WINDOWBOX_BORDER_WIDTH, Fade(GetColor(style[DEFAULT_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangleRec((Rectangle){ bounds.x + WINDOWBOX_BORDER_WIDTH, bounds.y + WINDOWBOX_BORDER_WIDTH, bounds.width - WINDOWBOX_BORDER_WIDTH*2, bounds.height - WINDOWBOX_BORDER_WIDTH*2 }, Fade(GetColor(style[DEFAULT_BACKGROUND_COLOR]), guiAlpha));
@ -1008,9 +1010,7 @@ RAYGUIDEF void GuiGroupBox(Rectangle bounds, const char *text)
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangle(bounds.x, bounds.y, GROUPBOX_LINE_THICK, bounds.height, Fade(GetColor(style[DEFAULT_LINES_COLOR]), guiAlpha));
DrawRectangle(bounds.x, bounds.y + bounds.height - 1, bounds.width, GROUPBOX_LINE_THICK, Fade(GetColor(style[DEFAULT_LINES_COLOR]), guiAlpha));
DrawRectangle(bounds.x + bounds.width - 1, bounds.y, GROUPBOX_LINE_THICK, bounds.height, Fade(GetColor(style[DEFAULT_LINES_COLOR]), guiAlpha));
@ -1056,7 +1056,6 @@ RAYGUIDEF void GuiLine(Rectangle bounds, int thick)
switch (state)
{
case NORMAL:
case LOCKED:
case FOCUSED:
case PRESSED: DrawRectangleLinesEx(line, thick, Fade(GetColor(style[DEFAULT_LINES_COLOR]), guiAlpha));break;
case DISABLED: DrawRectangleLinesEx(line, thick, Fade(GetColor(style[DEFAULT_BORDER_COLOR_DISABLED]), guiAlpha));break;
@ -1077,7 +1076,6 @@ RAYGUIDEF void GuiPanel(Rectangle bounds)
switch (state)
{
case NORMAL:
case LOCKED:
case FOCUSED:
case PRESSED:
{
@ -1122,8 +1120,7 @@ RAYGUIDEF void GuiLabel(Rectangle bounds, const char *text)
//--------------------------------------------------------------------
switch (state)
{
case NORMAL:
case LOCKED:
case NORMAL:
case FOCUSED:
case PRESSED: GuiDrawText(text, bounds.x, bounds.y + bounds.height/2 - textHeight/2 + VALIGN_OFFSET(bounds.height), Fade(GetColor(style[LABEL_TEXT_COLOR_NORMAL]), guiAlpha)); break;
case DISABLED: GuiDrawText(text, bounds.x, bounds.y + bounds.height/2 - textHeight/2 + VALIGN_OFFSET(bounds.height), Fade(GetColor(style[LABEL_TEXT_COLOR_DISABLED]), guiAlpha)); break;
@ -1146,7 +1143,7 @@ RAYGUIDEF bool GuiButton(Rectangle bounds, const char *text)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1166,7 +1163,6 @@ RAYGUIDEF bool GuiButton(Rectangle bounds, const char *text)
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[BUTTON_BORDER_WIDTH], Fade(GetColor(style[BUTTON_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[BUTTON_BASE_COLOR_NORMAL]), guiAlpha));
@ -1211,7 +1207,7 @@ RAYGUIDEF bool GuiLabelButton(Rectangle bounds, const char *text)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1229,7 +1225,7 @@ RAYGUIDEF bool GuiLabelButton(Rectangle bounds, const char *text)
//--------------------------------------------------------------------
switch (state)
{
case NORMAL: case LOCKED: GuiDrawText(text, bounds.x, bounds.y + bounds.height/2 - textHeight/2, Fade(GetColor(style[LABEL_TEXT_COLOR_NORMAL]), guiAlpha)); break;
case NORMAL: GuiDrawText(text, bounds.x, bounds.y + bounds.height/2 - textHeight/2, Fade(GetColor(style[LABEL_TEXT_COLOR_NORMAL]), guiAlpha)); break;
case FOCUSED: GuiDrawText(text, bounds.x, bounds.y + bounds.height/2 - textHeight/2, Fade(GetColor(style[LABEL_TEXT_COLOR_FOCUSED]), guiAlpha)); break;
case PRESSED: GuiDrawText(text, bounds.x, bounds.y + bounds.height/2 - textHeight/2, Fade(GetColor(style[LABEL_TEXT_COLOR_PRESSED]), guiAlpha)); break;
case DISABLED: GuiDrawText(text, bounds.x, bounds.y + bounds.height/2 - textHeight/2, Fade(GetColor(style[LABEL_TEXT_COLOR_DISABLED]), guiAlpha)); break;
@ -1272,7 +1268,7 @@ RAYGUIDEF bool GuiImageButtonEx(Rectangle bounds, Texture2D texture, Rectangle t
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1291,7 +1287,6 @@ RAYGUIDEF bool GuiImageButtonEx(Rectangle bounds, Texture2D texture, Rectangle t
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[BUTTON_BORDER_WIDTH], Fade(GetColor(style[BUTTON_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[BUTTON_BASE_COLOR_NORMAL]), guiAlpha));
@ -1339,7 +1334,7 @@ RAYGUIDEF bool GuiToggleButton(Rectangle bounds, const char *text, bool active)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1362,7 +1357,6 @@ RAYGUIDEF bool GuiToggleButton(Rectangle bounds, const char *text, bool active)
switch (state)
{
case NORMAL:
case LOCKED:
{
if (active)
{
@ -1421,7 +1415,7 @@ RAYGUIDEF bool GuiCheckBox(Rectangle bounds, bool checked)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1440,7 +1434,6 @@ RAYGUIDEF bool GuiCheckBox(Rectangle bounds, bool checked)
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[CHECKBOX_BORDER_WIDTH], Fade(GetColor(style[CHECKBOX_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[CHECKBOX_BORDER_WIDTH], bounds.y + style[CHECKBOX_BORDER_WIDTH], bounds.width - 2*style[CHECKBOX_BORDER_WIDTH], bounds.height - 2*style[CHECKBOX_BORDER_WIDTH], Fade(GetColor(style[CHECKBOX_BASE_COLOR_NORMAL]), guiAlpha));
@ -1494,7 +1487,7 @@ RAYGUIDEF bool GuiCheckBoxEx(Rectangle bounds, bool checked, const char *text)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1515,7 +1508,6 @@ RAYGUIDEF bool GuiCheckBoxEx(Rectangle bounds, bool checked, const char *text)
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[CHECKBOX_BORDER_WIDTH], Fade(GetColor(style[CHECKBOX_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[CHECKBOX_BORDER_WIDTH], bounds.y + style[CHECKBOX_BORDER_WIDTH], bounds.width - 2*style[CHECKBOX_BORDER_WIDTH], bounds.height - 2*style[CHECKBOX_BORDER_WIDTH], Fade(GetColor(style[CHECKBOX_BASE_COLOR_NORMAL]), guiAlpha));
@ -1580,7 +1572,7 @@ RAYGUIDEF int GuiComboBox(Rectangle bounds, const char **text, int count, int ac
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1604,7 +1596,6 @@ RAYGUIDEF int GuiComboBox(Rectangle bounds, const char **text, int count, int ac
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[COMBOBOX_BORDER_WIDTH], Fade(GetColor(style[COMBOBOX_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[COMBOBOX_BORDER_WIDTH], bounds.y + style[COMBOBOX_BORDER_WIDTH], bounds.width - 2*style[COMBOBOX_BORDER_WIDTH], bounds.height - 2*style[COMBOBOX_BORDER_WIDTH], Fade(GetColor(style[COMBOBOX_BASE_COLOR_NORMAL]), guiAlpha));
@ -1675,12 +1666,13 @@ RAYGUIDEF bool GuiDropdownBox(Rectangle bounds, const char **text, int count, in
Rectangle closeBounds = bounds;
Rectangle openBounds = bounds;
openBounds.height *= (count + 1);
openBounds.height *= (count + 1);
if (state == LOCKED && editMode) state = NORMAL;
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if (guiLocked && editMode) guiLocked = false;
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1728,7 +1720,6 @@ RAYGUIDEF bool GuiDropdownBox(Rectangle bounds, const char **text, int count, in
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangle(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[DEFAULT_BASE_COLOR_NORMAL]), guiAlpha));
DrawRectangleLinesEx(bounds, DROPDOWNBOX_BORDER_WIDTH, Fade(GetColor(style[LISTVIEW_BORDER_COLOR_NORMAL]), guiAlpha));
@ -1844,7 +1835,7 @@ RAYGUIDEF bool GuiValueBox(Rectangle bounds, int *value, int minValue, int maxVa
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1852,7 +1843,7 @@ RAYGUIDEF bool GuiValueBox(Rectangle bounds, int *value, int minValue, int maxVa
if (editMode)
{
state = FOCUSED; // NOTE: PRESSED state is not used on this control
state = PRESSED;
framesCounter++;
@ -1904,7 +1895,11 @@ RAYGUIDEF bool GuiValueBox(Rectangle bounds, int *value, int minValue, int maxVa
// Note: Changing editMode
if (!editMode)
{
if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(0)) pressed = true;
if (CheckCollisionPointRec(mousePoint, bounds))
{
state = FOCUSED;
if (IsMouseButtonPressed(0)) pressed = true;
}
}
else
{
@ -1920,7 +1915,6 @@ RAYGUIDEF bool GuiValueBox(Rectangle bounds, int *value, int minValue, int maxVa
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[VALUEBOX_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[VALUEBOX_BASE_COLOR_NORMAL]), guiAlpha));
@ -1929,12 +1923,17 @@ RAYGUIDEF bool GuiValueBox(Rectangle bounds, int *value, int minValue, int maxVa
case FOCUSED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[VALUEBOX_BORDER_COLOR_FOCUSED]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[VALUEBOX_BASE_COLOR_FOCUSED]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[VALUEBOX_BASE_COLOR_NORMAL]), guiAlpha));
GuiDrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - style[DEFAULT_TEXT_SIZE]/2 + VALIGN_OFFSET(bounds.height), Fade(GetColor(style[VALUEBOX_TEXT_COLOR_FOCUSED]), guiAlpha));
} break;
case PRESSED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[VALUEBOX_BORDER_COLOR_PRESSED]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[VALUEBOX_BASE_COLOR_FOCUSED]), guiAlpha));
GuiDrawText(text, bounds.x + bounds.width/2 - textWidth/2, bounds.y + bounds.height/2 - style[DEFAULT_TEXT_SIZE]/2 + VALIGN_OFFSET(bounds.height), Fade(GetColor(style[VALUEBOX_TEXT_COLOR_PRESSED]), guiAlpha));
if (editMode && ((framesCounter/20)%2 == 0)) DrawRectangle(bounds.x + 2 /*+ DEFAULT_TEXT_LINE_PADDING */+ GuiTextWidth(text)/2 + bounds.width/2, bounds.y + DEFAULT_TEXT_LINE_PADDING/2, 1, bounds.height - DEFAULT_TEXT_LINE_PADDING, Fade(GetColor(style[TEXTBOX_BORDER_COLOR_FOCUSED]), guiAlpha));
} break;
case PRESSED: break; // NOTE: State not used on this control
case DISABLED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[VALUEBOX_BORDER_COLOR_DISABLED]), guiAlpha));
@ -1959,7 +1958,7 @@ RAYGUIDEF bool GuiTextBox(Rectangle bounds, char *text, int textSize, bool editM
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -1967,7 +1966,7 @@ RAYGUIDEF bool GuiTextBox(Rectangle bounds, char *text, int textSize, bool editM
if (editMode)
{
state = FOCUSED; // NOTE: PRESSED state is not used on this control
state = PRESSED;
framesCounter++;
@ -2009,8 +2008,12 @@ RAYGUIDEF bool GuiTextBox(Rectangle bounds, char *text, int textSize, bool editM
// Note: Changing editMode
if (!editMode)
{
if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(0)) pressed = true;
{
if (CheckCollisionPointRec(mousePoint, bounds))
{
state = FOCUSED;
if (IsMouseButtonPressed(0)) pressed = true;
}
}
else
{
@ -2026,7 +2029,6 @@ RAYGUIDEF bool GuiTextBox(Rectangle bounds, char *text, int textSize, bool editM
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[TEXTBOX_BASE_COLOR_NORMAL]), guiAlpha));
@ -2035,12 +2037,17 @@ RAYGUIDEF bool GuiTextBox(Rectangle bounds, char *text, int textSize, bool editM
case FOCUSED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_FOCUSED]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[TEXTBOX_BASE_COLOR_NORMAL]), guiAlpha));
GuiDrawText(text, bounds.x + DEFAULT_TEXT_PADDING, bounds.y + bounds.height/2 - style[DEFAULT_TEXT_SIZE]/2, Fade(GetColor(style[TEXTBOX_TEXT_COLOR_FOCUSED]), guiAlpha));
} break;
case PRESSED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_PRESSED]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[TEXTBOX_BASE_COLOR_FOCUSED]), guiAlpha));
GuiDrawText(text, bounds.x + DEFAULT_TEXT_PADDING, bounds.y + bounds.height/2 - style[DEFAULT_TEXT_SIZE]/2, Fade(GetColor(style[TEXTBOX_TEXT_COLOR_PRESSED]), guiAlpha));
if (editMode && ((framesCounter/20)%2 == 0)) DrawRectangle(bounds.x + DEFAULT_TEXT_LINE_PADDING + GuiTextWidth(text), bounds.y + DEFAULT_TEXT_LINE_PADDING/2, 1, bounds.height - DEFAULT_TEXT_LINE_PADDING, Fade(GetColor(style[TEXTBOX_BORDER_COLOR_FOCUSED]), guiAlpha));
if (editMode && ((framesCounter/20)%2 == 0)) DrawRectangle(bounds.x + DEFAULT_TEXT_LINE_PADDING + GuiTextWidth(text), bounds.y + DEFAULT_TEXT_LINE_PADDING/2, 1, bounds.height - DEFAULT_TEXT_LINE_PADDING, Fade(GetColor(style[TEXTBOX_BORDER_COLOR_PRESSED]), guiAlpha));
} break;
case PRESSED: break; // NOTE: State not used on this control
case DISABLED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_DISABLED]), guiAlpha));
@ -2074,7 +2081,7 @@ RAYGUIDEF bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -2082,7 +2089,7 @@ RAYGUIDEF bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool
if (editMode)
{
state = FOCUSED;
state = PRESSED;
framesCounter++;
@ -2207,7 +2214,11 @@ RAYGUIDEF bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool
// Changing editMode
if (!editMode)
{
if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(0)) pressed = true;
if (CheckCollisionPointRec(mousePoint, bounds))
{
state = FOCUSED;
if (IsMouseButtonPressed(0)) pressed = true;
}
}
else
{
@ -2223,7 +2234,6 @@ RAYGUIDEF bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[TEXTBOX_BASE_COLOR_NORMAL]), guiAlpha));
@ -2232,6 +2242,12 @@ RAYGUIDEF bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool
case FOCUSED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_FOCUSED]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[TEXTBOX_BASE_COLOR_NORMAL]), guiAlpha));
GuiDrawText(text, bounds.x + GUITEXTBOXMULTI_PADDING, bounds.y + GUITEXTBOXMULTI_PADDING, Fade(GetColor(style[TEXTBOX_TEXT_COLOR_FOCUSED]), guiAlpha));
} break;
case PRESSED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_PRESSED]), guiAlpha));
DrawRectangle(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], Fade(GetColor(style[TEXTBOX_BASE_COLOR_FOCUSED]), guiAlpha));
GuiDrawText(text, bounds.x + GUITEXTBOXMULTI_PADDING, bounds.y + GUITEXTBOXMULTI_PADDING, Fade(GetColor(style[TEXTBOX_TEXT_COLOR_PRESSED]), guiAlpha));
@ -2250,7 +2266,6 @@ RAYGUIDEF bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool
}
} break;
case PRESSED: break; // NOTE: State not used on this control
case DISABLED:
{
DrawRectangleLinesEx(bounds, style[TEXTBOX_BORDER_WIDTH], Fade(GetColor(style[TEXTBOX_BORDER_COLOR_DISABLED]), guiAlpha));
@ -2276,7 +2291,7 @@ RAYGUIDEF float GuiSlider(Rectangle bounds, float value, float minValue, float m
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -2305,8 +2320,7 @@ RAYGUIDEF float GuiSlider(Rectangle bounds, float value, float minValue, float m
//--------------------------------------------------------------------
switch (state)
{
case NORMAL:
case LOCKED:
case NORMAL:
{
DrawRectangleLinesEx(bounds, style[SLIDER_BORDER_WIDTH], Fade(GetColor(style[SLIDER_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[SLIDER_BORDER_WIDTH], bounds.y + style[SLIDER_BORDER_WIDTH], bounds.width - 2*style[SLIDER_BORDER_WIDTH], bounds.height - 2*style[SLIDER_BORDER_WIDTH], Fade(GetColor(style[SLIDER_BASE_COLOR_NORMAL]), guiAlpha));
@ -2356,7 +2370,7 @@ RAYGUIDEF float GuiSliderEx(Rectangle bounds, float value, float minValue, float
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -2391,8 +2405,7 @@ RAYGUIDEF float GuiSliderEx(Rectangle bounds, float value, float minValue, float
//--------------------------------------------------------------------
switch (state)
{
case NORMAL:
case LOCKED:
case NORMAL:
{
DrawRectangleLinesEx(bounds, style[SLIDER_BORDER_WIDTH], Fade(GetColor(style[SLIDER_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[SLIDER_BORDER_WIDTH], bounds.y + style[SLIDER_BORDER_WIDTH], bounds.width - 2*style[SLIDER_BORDER_WIDTH], bounds.height - 2*style[SLIDER_BORDER_WIDTH], Fade(GetColor(style[SLIDER_BASE_COLOR_NORMAL]), guiAlpha));
@ -2445,7 +2458,7 @@ RAYGUIDEF float GuiSliderBar(Rectangle bounds, float value, float minValue, floa
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -2471,7 +2484,6 @@ RAYGUIDEF float GuiSliderBar(Rectangle bounds, float value, float minValue, floa
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[SLIDERBAR_BORDER_WIDTH], Fade(GetColor(style[SLIDERBAR_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[SLIDERBAR_BORDER_WIDTH], bounds.y + style[SLIDERBAR_BORDER_WIDTH], bounds.width - 2*style[SLIDERBAR_BORDER_WIDTH], bounds.height - 2*style[SLIDERBAR_BORDER_WIDTH], Fade(GetColor(style[SLIDERBAR_BASE_COLOR_NORMAL]), guiAlpha));
@ -2517,7 +2529,7 @@ RAYGUIDEF float GuiSliderBarEx(Rectangle bounds, float value, float minValue, fl
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -2543,7 +2555,6 @@ RAYGUIDEF float GuiSliderBarEx(Rectangle bounds, float value, float minValue, fl
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[SLIDERBAR_BORDER_WIDTH], Fade(GetColor(style[SLIDERBAR_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[SLIDERBAR_BORDER_WIDTH], bounds.y + style[SLIDERBAR_BORDER_WIDTH], bounds.width - 2*style[SLIDERBAR_BORDER_WIDTH], bounds.height - 2*style[SLIDERBAR_BORDER_WIDTH], Fade(GetColor(style[SLIDERBAR_BASE_COLOR_NORMAL]), guiAlpha));
@ -2608,7 +2619,6 @@ RAYGUIDEF float GuiProgressBar(Rectangle bounds, float value, float minValue, fl
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[PROGRESSBAR_BORDER_WIDTH], Fade(GetColor(style[PROGRESSBAR_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[PROGRESSBAR_BORDER_WIDTH], bounds.y + style[PROGRESSBAR_BORDER_WIDTH], bounds.width - 2*style[PROGRESSBAR_BORDER_WIDTH], bounds.height - 2*style[PROGRESSBAR_BORDER_WIDTH], Fade(GetColor(style[DEFAULT_BACKGROUND_COLOR]), guiAlpha));
@ -2660,7 +2670,6 @@ RAYGUIDEF float GuiProgressBarEx(Rectangle bounds, float value, float minValue,
switch (state)
{
case NORMAL:
case LOCKED:
{
DrawRectangleLinesEx(bounds, style[PROGRESSBAR_BORDER_WIDTH], Fade(GetColor(style[PROGRESSBAR_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(bounds.x + style[PROGRESSBAR_BORDER_WIDTH], bounds.y + style[PROGRESSBAR_BORDER_WIDTH], bounds.width - 2*style[PROGRESSBAR_BORDER_WIDTH], bounds.height - 2*style[PROGRESSBAR_BORDER_WIDTH], Fade(GetColor(style[DEFAULT_BACKGROUND_COLOR]), guiAlpha));
@ -2698,8 +2707,7 @@ RAYGUIDEF void GuiStatusBar(Rectangle bounds, const char *text, int offsetX)
//--------------------------------------------------------------------
switch (state)
{
case NORMAL:
case LOCKED:
case NORMAL:
case FOCUSED:
case PRESSED:
{
@ -2730,7 +2738,7 @@ RAYGUIDEF void GuiDummyRec(Rectangle bounds, const char *text)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -2748,7 +2756,6 @@ RAYGUIDEF void GuiDummyRec(Rectangle bounds, const char *text)
switch (state)
{
case NORMAL:
case LOCKED:
case FOCUSED:
case PRESSED:
{
@ -2779,10 +2786,11 @@ static bool GuiListElement(Rectangle bounds, const char *text, bool active, bool
int textWidth = GuiTextWidth(text);
int textHeight = style[DEFAULT_TEXT_SIZE];
if (state == LOCKED && editMode) state = NORMAL;
if (!guiLocked && editMode) state = NORMAL;
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
if (bounds.width < textWidth)
{
@ -2816,7 +2824,6 @@ static bool GuiListElement(Rectangle bounds, const char *text, bool active, bool
switch (state)
{
case NORMAL:
case LOCKED:
{
if (active)
{
@ -2882,13 +2889,13 @@ RAYGUIDEF bool GuiListView(Rectangle bounds, const char **text, int count, int *
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked) // && !guiLocked
{
Vector2 mousePoint = GetMousePosition();
if (editMode)
{
state = FOCUSED;
state = PRESSED;
// Change active with keys
if (IsKeyPressed(KEY_UP))
@ -2939,7 +2946,23 @@ RAYGUIDEF bool GuiListView(Rectangle bounds, const char **text, int count, int *
// Note: Changing editMode
if (!editMode)
{
if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(0)) pressed = true;
if (CheckCollisionPointRec(mousePoint, bounds))
{
state = FOCUSED;
if (IsMouseButtonPressed(0)) pressed = true;
int wheel = GetMouseWheelMove();
if (wheel)
{
startIndex -= wheel;
if (startIndex < 0) startIndex = 0;
else if (startIndex > (count - (endIndex - startIndex)))
{
startIndex = count - (endIndex - startIndex);
}
pressed = true;
}
}
}
else
{
@ -2984,22 +3007,25 @@ RAYGUIDEF bool GuiListView(Rectangle bounds, const char **text, int count, int *
}
// Draw scrollBar background
if (useScrollBar) DrawRectangle(bounds.x, bounds.y, style[LISTVIEW_BAR_WIDTH], bounds.height, Fade(LIGHTGRAY, guiAlpha));
if (useScrollBar) DrawRectangle(bounds.x, bounds.y, style[LISTVIEW_BAR_WIDTH], bounds.height, Fade(GetColor(style[DEFAULT_BORDER_COLOR_DISABLED]), guiAlpha));
// Draw ListView states
switch (state)
{
case NORMAL:
case LOCKED:
{
if (useScrollBar) DrawRectangle(bounds.x, barPosY, style[LISTVIEW_BAR_WIDTH], barHeight, Fade(GetColor(style[SLIDERBAR_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangleLinesEx(bounds, LISTVIEW_LINE_THICK, Fade(GetColor(style[LISTVIEW_BORDER_COLOR_NORMAL]), guiAlpha));
if(auxActive >= startIndex && auxActive < endIndex) GuiListElement((Rectangle){ posX, bounds.y + style[LISTVIEW_ELEMENTS_PADDING] + LISTVIEW_LINE_THICK + (auxActive - startIndex)*(style[LISTVIEW_ELEMENTS_HEIGHT] + style[LISTVIEW_ELEMENTS_PADDING]), elementWidth, style[LISTVIEW_ELEMENTS_HEIGHT] }, text[auxActive], true, false);
} break;
case FOCUSED:
{
if (useScrollBar) DrawRectangle(bounds.x, barPosY, style[LISTVIEW_BAR_WIDTH], barHeight, Fade(GetColor(style[SLIDERBAR_BASE_COLOR_FOCUSED]), guiAlpha));
DrawRectangleLinesEx(bounds, LISTVIEW_LINE_THICK, Fade(GetColor(style[LISTVIEW_BORDER_COLOR_FOCUSED]), guiAlpha));
if(auxActive >= startIndex && auxActive < endIndex) GuiListElement((Rectangle){ posX, bounds.y + style[LISTVIEW_ELEMENTS_PADDING] + LISTVIEW_LINE_THICK + (auxActive - startIndex)*(style[LISTVIEW_ELEMENTS_HEIGHT] + style[LISTVIEW_ELEMENTS_PADDING]), elementWidth, style[LISTVIEW_ELEMENTS_HEIGHT] }, text[auxActive], true, false);
} break;
case PRESSED:
{
@ -3042,7 +3068,7 @@ RAYGUIDEF Color GuiColorPanel(Rectangle bounds, Color color)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -3078,7 +3104,7 @@ RAYGUIDEF Color GuiColorPanel(Rectangle bounds, Color color)
// Draw control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
DrawRectangleGradientEx(bounds, Fade(WHITE, guiAlpha), Fade(WHITE, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha));
DrawRectangleGradientEx(bounds, Fade(BLACK, 0), Fade(BLACK, guiAlpha), Fade(BLACK, guiAlpha), Fade(BLACK, 0));
@ -3095,7 +3121,7 @@ RAYGUIDEF Color GuiColorPanel(Rectangle bounds, Color color)
switch (state)
{
case NORMAL: case LOCKED: DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_NORMAL]), guiAlpha)); break;
case NORMAL: DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_NORMAL]), guiAlpha)); break;
case FOCUSED: DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_FOCUSED]), guiAlpha)); break;
case PRESSED: DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_PRESSED]), guiAlpha)); break;
case DISABLED: DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_DISABLED]), guiAlpha)); break;
@ -3121,7 +3147,7 @@ RAYGUIDEF float GuiColorBarAlpha(Rectangle bounds, float alpha)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -3146,7 +3172,7 @@ RAYGUIDEF float GuiColorBarAlpha(Rectangle bounds, float alpha)
// Draw control
//--------------------------------------------------------------------
// Draw alpha bar: checked background
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
for (int i = 0; i < bounds.width/CHECKER_SIZE; i++) DrawRectangle(bounds.x + CHECKER_SIZE*(i%((int)bounds.width/CHECKER_SIZE)), bounds.y, bounds.width/(bounds.width/CHECKER_SIZE), CHECKER_SIZE, (i%2) ? Fade(Fade(GRAY, 0.4f), guiAlpha) : Fade(Fade(RAYWHITE, 0.4f), guiAlpha));
for (int i = 0; i < bounds.width/CHECKER_SIZE; i++) DrawRectangle(bounds.x + CHECKER_SIZE*(i%((int)bounds.width/CHECKER_SIZE)), bounds.y + CHECKER_SIZE, bounds.width/(bounds.width/CHECKER_SIZE), CHECKER_SIZE, (i%2) ? Fade(Fade(RAYWHITE, 0.4f), guiAlpha) : Fade(Fade(GRAY, 0.4f), guiAlpha));
@ -3157,8 +3183,7 @@ RAYGUIDEF float GuiColorBarAlpha(Rectangle bounds, float alpha)
switch (state)
{
case NORMAL:
case LOCKED:
case NORMAL:
{
DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_NORMAL]), guiAlpha));
DrawRectangle(selector.x , selector.y, selector.width, selector.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_PRESSED]), guiAlpha));
@ -3197,7 +3222,7 @@ RAYGUIDEF float GuiColorBarHue(Rectangle bounds, float hue)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@ -3231,7 +3256,7 @@ RAYGUIDEF float GuiColorBarHue(Rectangle bounds, float hue)
//--------------------------------------------------------------------
// Draw control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
//Draw hue bar:color bars
DrawRectangleGradientV(bounds.x + GUICOLORBARHUE_SELECTOR_PADDING/2, bounds.y + GUICOLORBARHUE_SELECTOR_PADDING/2, bounds.width - GUICOLORBARHUE_SELECTOR_PADDING, (int)bounds.height/6, Fade((Color){ 255,0,0,255 }, guiAlpha), Fade((Color){ 255,255,0,255 }, guiAlpha));
@ -3249,7 +3274,6 @@ RAYGUIDEF float GuiColorBarHue(Rectangle bounds, float hue)
switch (state)
{
case NORMAL:
case LOCKED:
{
// Draw hue bar: selector
DrawRectangleLines(bounds.x, bounds.y, bounds.width, bounds.height, Fade(GetColor(style[COLORPICKER_BORDER_COLOR_NORMAL]), guiAlpha));
@ -3349,7 +3373,7 @@ RAYGUIDEF Vector2 GuiGrid(Rectangle bounds, int spacing, int subdivs)
// Update control
//--------------------------------------------------------------------
if ((state != DISABLED) && (state != LOCKED))
if ((state != DISABLED) && !guiLocked)
{
// Check mouse position if snap
if (CheckCollisionPointRec(mousePoint, bounds))
@ -3365,7 +3389,6 @@ RAYGUIDEF Vector2 GuiGrid(Rectangle bounds, int spacing, int subdivs)
switch (state)
{
case NORMAL:
case LOCKED:
{
// Draw vertical grid lines
for (int i = 0; i < (bounds.width/spacing + 1)*subdivs; i++)