diff --git a/tools/rGuiStyler/design/rguistyler2_light_REV4.png b/tools/rGuiStyler/design/rguistyler2_light_REV4.png new file mode 100644 index 0000000..b952b35 Binary files /dev/null and b/tools/rGuiStyler/design/rguistyler2_light_REV4.png differ diff --git a/tools/rGuiStyler/rguistyler.c b/tools/rGuiStyler/rguistyler.c index e75d778..51dce5e 100644 --- a/tools/rGuiStyler/rguistyler.c +++ b/tools/rGuiStyler/rguistyler.c @@ -57,28 +57,44 @@ #define STATUS_BAR_HEIGHT 25 #define NUM_CONTROLS 15 -#define NUM_STYLES 12 - -// NOTE: Be extremely careful when defining: NUM_CONTROLS, GuiElement, guiControlText, guiPropertyNum, guiPropertyType and guiPropertyPos -// All those variables must be coherent, one small mistake breaks the program (and it could take hours to find the error!) +#define NUM_STYLES 12 //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- typedef enum { LABEL = 0, + LABELBUTTON, BUTTON, + IMAGEBUTTON, TOGGLE, TOGGLEGROUP, SLIDER, SLIDERBAR, PROGRESSBAR, + CHECKBOX, SPINNER, COMBOBOX, - CHECKBOX, - TEXTBOX + TEXTBOX, + LISTVIEW, + COLORPICKER } GuiControlType; +typedef enum { + BORDER_COLOR_NORMAL = 0, + BASE_COLOR_NORMAL, + TEXT_COLOR_NORMAL, + BORDER_COLOR_FOCUSED, + BASE_COLOR_FOCUSED, + TEXT_COLOR_FOCUSED, + BORDER_COLOR_PRESSED, + BASE_COLOR_PRESSED, + TEXT_COLOR_PRESSED, + BORDER_COLOR_DISABLED, + BASE_COLOR_DISABLED, + TEXT_COLOR_DISABLED +} GuiStyleType; + //---------------------------------------------------------------------------------- // Global Variables Definition //---------------------------------------------------------------------------------- @@ -116,40 +132,7 @@ const char *guiStylesText[NUM_STYLES] = { "BASE_COLOR_DISABLED", "TEXT_COLOR_DISABLED" }; -/* -const char *guiListText[30] = { - "This", - "is", - "afghj", - "test", - "aaaaaaa", - "bbbbbbb", - "ccccccc", - "ddddddd", - "eeeeeee", - "fffffff", - "ggggggg", - "hhhhhhh", - "iiiiiii", - "jjjjjjj", - "kkkkkkk", - "lllllll", - "mmmmmmm", - "nnnnnnn", - "ooooooo", - "ppppppp", - "qqqqqqq", - "rrrrrrr", - "sssssss", - "ttttttt", - "uuuuuuu", - "vvvvvvv", - "wwwwwww", - "xxxxxxx", - "yyyyyyy", - "zzzzzzz" -}; -*/ + //---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- @@ -166,70 +149,49 @@ int main() const int screenWidth = 700; const int screenHeight = 700; - SetConfigFlags(FLAG_WINDOW_RESIZABLE); + //SetConfigFlags(FLAG_WINDOW_RESIZABLE); InitWindow(screenWidth, screenHeight, "rGuiStyler - raygui style editor"); - SetWindowMinSize(700, 700); + //SetWindowMinSize(700, 700); int dropsCount = 0; char **droppedFiles; - - - const int guiPropertyNum[NUM_CONTROLS] = { 3, 11, 14, 1, 7, 6, 4, 14, 18, 8, 6 }; - - // Defines if the property to change is a Color or a value to update it accordingly - // NOTE: 0 - Color, 1 - value - const unsigned char guiPropertyType[NUM_PROPERTIES] = { 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 1, 0, 0, 0, 0, 1 }; - int aux = 0; - int guiPropertyPos[NUM_CONTROLS]; - - for (int i = 0; i < NUM_CONTROLS; i++) - { - guiPropertyPos[i] = aux; - aux += guiPropertyNum[i]; - } - - Rectangle guiControlListRec[NUM_CONTROLS]; - - for (int i = 0; i < NUM_CONTROLS; i++) guiControlListRec[i] = (Rectangle){ 0, 0 + i*CONTROL_LIST_HEIGHT, 140, CONTROL_LIST_HEIGHT }; - - int guiControlSelected = -1; - int guiControlHover = -1; - - - Rectangle guiPropertyListRec[NUM_PROPERTIES]; - - for (int j = 0; j < NUM_CONTROLS; j++) - { - for (int i = 0; i < guiPropertyNum[j]; i++) - { - if ((j + guiPropertyNum[j]) > 18) guiPropertyListRec[guiPropertyPos[j] + i] = (Rectangle){ guiControlListRec[0].width, guiControlListRec[18 - guiPropertyNum[j]].y + i*CONTROL_LIST_HEIGHT, 260, CONTROL_LIST_HEIGHT }; - else guiPropertyListRec[guiPropertyPos[j] + i] = (Rectangle){ guiControlListRec[0].width, guiControlListRec[j].y + i*CONTROL_LIST_HEIGHT, 260, CONTROL_LIST_HEIGHT }; - } - } - - int guiPropertySelected = -1; - int guiPropertyHover = -1; - //------------------------------------------------------------ - - // Gui area variables - //----------------------------------------------------------- - int guiPosX = 455; + int guiPosX = 340; int guiPosY = 35; - - int guiHeight = 30; - int guiWidth = 150; - int deltaY = 45; + // TODO: Define gui controls rectangles + Rectangle bounds[NUM_CONTROLS] = { + (Rectangle){ guiPosX + 20, guiPosY + 20, 30, 10 }, // LABEL + (Rectangle){ guiPosX + 60, guiPosY + 20, 62, 10 }, // LABELBUTTON + (Rectangle){ guiPosX + 140, guiPosY + 10, 150, 30 }, // BUTTON + (Rectangle){ guiPosX + 300, guiPosY + 10, 30, 30 }, // IMAGEBUTTON + (Rectangle){ guiPosX + 20, guiPosY + 60, 80, 30 }, // TOGGLE + (Rectangle){ guiPosX + 120, guiPosY + 60, 75, 30 }, // TOGGLEGROUP + (Rectangle){ guiPosX + 20, guiPosY + 110, 330, 30 }, // SLIDER + (Rectangle){ guiPosX + 20, guiPosY + 150, 330, 30 }, // SLIDERBAR + (Rectangle){ guiPosX + 20, guiPosY + 190, 290, 30 }, // PROGRESSBAR + (Rectangle){ guiPosX + 320, guiPosY + 190, 30, 30 }, // CHECKBOX + (Rectangle){ guiPosX + 20, guiPosY + 240, 150, 30 }, // SPINNER + (Rectangle){ guiPosX + 200, guiPosY + 240, 150, 30 }, // COMBOBOX + (Rectangle){ guiPosX + 20, guiPosY + 290, 150, 30 }, // TEXTBOX + (Rectangle){ 0, guiPosY, 140, GetScreenHeight() - 100 }, // LISTVIEW + (Rectangle){ guiPosX + 20, guiPosY + 330, 240, 240 }, // COLORPICKER + + + }; + + // Get current directory + // NOTE: Current working directory could not match current executable directory + GetCurrentDir(currentPath, sizeof(currentPath)); + currentPath[strlen(currentPath)] = '\\'; + currentPath[strlen(currentPath) + 1] = '\0'; // Not really required - int selectPosX = 401; - int selectWidth = screenWidth - 723; + GuiLoadStyleImage("resources/rguistyle_default_light.png"); + + Texture2D texIcons = LoadTexture("resources/icons.png"); + Texture2D texLogo = LoadTexture("resources/logo128x128.png"); + + SetTargetFPS(60); //------------------------------------------------------------ // Gui controls data @@ -254,24 +216,9 @@ int main() Vector2 colorPickerPos = { (float)screenWidth - 287, 20.0f }; Color colorPickerValue = RED; - Texture2D texIcons = LoadTexture("resources/icons.png"); - Texture2D texLogo = LoadTexture("resources/logo128x128.png"); int listViewActive = -1; int listViewStyleActive = -1; - - int controlsAnchorPos = 340; - //----------------------------------------------------------- - - // Get current directory - // NOTE: Current working directory could not match current executable directory - GetCurrentDir(currentPath, sizeof(currentPath)); - currentPath[strlen(currentPath)] = '\\'; - currentPath[strlen(currentPath) + 1] = '\0'; // Not really required - - GuiLoadStyleImage("resources/rguistyle_default_light.png"); - - SetTargetFPS(60); //-------------------------------------------------------------------------------------- // Main game loop @@ -285,7 +232,7 @@ int main() GuiLoadStyle(droppedFiles[0]); ClearDroppedFiles(); } - + //colorPickerValue = GetColor(GuiGetStyleProperty(BUTTON_BASE_COLOR_NORMAL)); //GuiSetStyleProperty(BUTTON_BASE_COLOR_NORMAL, GetHexValue(colorPickerValue)); @@ -307,75 +254,63 @@ int main() DrawRectangle(0, GetScreenHeight() - 25, GetScreenWidth(), 25, LIGHTGRAY); //Draw top and bottom bars' text - GuiLabel((Rectangle){20, GetScreenHeight() - 18, guiWidth/2, guiHeight}, FormatText("CURRENT SELECTION: %s_%s", guiControlText[listViewActive], guiStylesText[listViewStyleActive])); - GuiLabel((Rectangle){controlsAnchorPos + 100, GetScreenHeight() - 18, guiWidth/2, guiHeight}, FormatText("SAVE STATUS: %s", guiText)); + GuiLabel((Rectangle){20, GetScreenHeight() - 18, 100, 20}, FormatText("CURRENT SELECTION: %s_%s", guiControlText[listViewActive], guiStylesText[listViewStyleActive])); + GuiLabel((Rectangle){guiPosX + 100, GetScreenHeight() - 18, 100, 20}, FormatText("SAVE STATUS: %s", guiText)); DrawText("CHOOSE CONTROL", 25, 10, styleGeneric[DEFAULT_TEXT_SIZE], LIGHTGRAY); DrawText("> CHOOSE PROPERTY STYLE", 140, 10, styleGeneric[DEFAULT_TEXT_SIZE], LIGHTGRAY); - DrawText("> STYLE VIEWER", controlsAnchorPos, 10, styleGeneric[DEFAULT_TEXT_SIZE], LIGHTGRAY); + DrawText("> STYLE VIEWER", guiPosX, 10, styleGeneric[DEFAULT_TEXT_SIZE], LIGHTGRAY); + - //Draw texture of the logo - DrawTexture(texLogo, 10, 540, WHITE); - - // Draw selected control rectangles - /*switch (listViewActive) - { - case LABEL: DrawRectangleLines(selectPosX + 10, guiPosY - 10, selectWidth - 20, guiHeight + 20, Fade(COLOR_REC, 0.8f)); break; - case BUTTON: DrawRectangleLines(selectPosX + 10, guiPosY + deltaY - 10, selectWidth - 20, guiHeight + 20, Fade(COLOR_REC, 0.8f)); break; - case TOGGLE: - case TOGGLEGROUP: DrawRectangleLines(selectPosX + 10, guiPosY + (2 * deltaY) - 10, selectWidth - 20, guiHeight + 80, Fade(COLOR_REC, 0.8f)); break; - case SLIDER: DrawRectangleLines(selectPosX + 10, guiPosY + (4 * deltaY) - 10, selectWidth - 20, guiHeight + 80, Fade(COLOR_REC, 0.8f)); break; - case PROGRESSBAR: DrawRectangleLines(selectPosX + 10, guiPosY + (6 * deltaY) - 10, selectWidth - 20, guiHeight + 20, Fade(COLOR_REC, 0.8f)); break; - case SPINNER: DrawRectangleLines(selectPosX + 10, guiPosY + (7 * deltaY) - 10, selectWidth - 20, guiHeight + 20, Fade(COLOR_REC, 0.8f)); break; - case COMBOBOX: DrawRectangleLines(selectPosX + 10, guiPosY + (8 * deltaY) - 10, selectWidth - 20, guiHeight + 20, Fade(COLOR_REC, 0.8f)); break; - case CHECKBOX: DrawRectangleLines(selectPosX + 10, guiPosY + (9 * deltaY) - 10, selectWidth - 20, guiHeight + 20, Fade(COLOR_REC, 0.8f)); break; - case TEXTBOX: DrawRectangleLines(selectPosX + 10, guiPosY + (10 * deltaY) - 10, selectWidth - 20, guiHeight + 20, Fade(COLOR_REC, 0.8f)); break; - default: break; - }*/ - listViewActive = GuiListView((Rectangle){ 0, guiPosY, 140, 720/1.5f }, guiControlText, NUM_CONTROLS, listViewActive); + // Gui controls + listViewActive = GuiListView(bounds[LISTVIEW], guiControlText, NUM_CONTROLS, listViewActive); - listViewStyleActive = GuiListView((Rectangle){ 145, guiPosY, 140, 720/1.5f }, guiStylesText, NUM_STYLES, listViewStyleActive); + if (listViewActive < 0) GuiDisable(); + listViewStyleActive = GuiListView((Rectangle){ 145, guiPosY, 180, GetScreenHeight() - 100 }, guiStylesText, NUM_STYLES, listViewStyleActive); + GuiEnable(); - GuiLabel((Rectangle){controlsAnchorPos, guiPosY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, "Label"); + GuiLabel(bounds[LABEL], "Label"); - //if (GuiButton((Rectangle){controlsAnchorPos, guiPosY + deltaY, guiWidth, guiHeight}, "Button")) { } + if (GuiLabelButton(bounds[LABELBUTTON], "LabelButton")) {} - if (GuiLabelButton((Rectangle){controlsAnchorPos + guiWidth/3, guiPosY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth, guiHeight}, "LabelButton")) {} + if (GuiImageButtonEx(bounds[IMAGEBUTTON], texIcons , (Rectangle){ 0, 0, texIcons.width/3, texIcons.height/6 }, "test")) { } - if (GuiImageButtonEx((Rectangle){ controlsAnchorPos + guiWidth*2.3f - guiWidth/3, guiPosY, texIcons.width/3, texIcons.height/6 }, texIcons , (Rectangle){ 0, 0, texIcons.width/3, texIcons.height/6 })) { } + if (toggle) toggle = GuiToggleButton(bounds[TOGGLE], "Toggle ACT", toggle); + else toggle = GuiToggleButton(bounds[TOGGLE], "Toggle INE", toggle); - if (toggle) toggle = GuiToggleButton((Rectangle){controlsAnchorPos, guiPosY + deltaY, guiWidth/2, guiHeight}, "Toggle ACT", toggle); - else toggle = GuiToggleButton((Rectangle){controlsAnchorPos, guiPosY + deltaY, guiWidth/2, guiHeight}, "Toggle INE", toggle); + toggleValue = GuiToggleGroup(bounds[TOGGLEGROUP], toggleGuiText, 3, toggleValue); - toggleValue = GuiToggleGroup((Rectangle){controlsAnchorPos + guiWidth/1.5f, guiPosY + deltaY, guiWidth/2, guiHeight}, toggleGuiText, 3, toggleValue); + sliderValue = GuiSlider(bounds[SLIDER], sliderValue, 0, 100); - sliderValue = GuiSlider((Rectangle){controlsAnchorPos, guiPosY + 2*deltaY, 2.2f*guiWidth, guiHeight}, sliderValue, 0, 100); + sliderBarValue = GuiSliderBar(bounds[SLIDERBAR], sliderBarValue, -10.0f, 40.0f); - sliderBarValue = GuiSliderBar((Rectangle){controlsAnchorPos, guiPosY + 3*deltaY, 2.2f*guiWidth, guiHeight}, sliderBarValue, -10.0f, 40.0f); + progressValue = GuiProgressBar(bounds[PROGRESSBAR], progressValue, 0.0f, 1.0f); - progressValue = GuiProgressBar((Rectangle){controlsAnchorPos, guiPosY + 4*deltaY, 1.9f*guiWidth, guiHeight}, progressValue, 0.0f, 1.0f); + spinnerValue = GuiSpinner(bounds[SPINNER], spinnerValue, 0, 100); - spinnerValue = GuiSpinner((Rectangle){controlsAnchorPos, guiPosY + 5*deltaY, guiWidth, guiHeight}, spinnerValue, 0, 100); - - comboActive = GuiComboBox((Rectangle){controlsAnchorPos + guiWidth*1.2f, guiPosY + 5*deltaY, guiWidth, guiHeight}, comboText, comboNum, comboActive); + comboActive = GuiComboBox(bounds[COMBOBOX], comboText, comboNum, comboActive); - checked = GuiCheckBox((Rectangle){controlsAnchorPos + guiWidth*2, guiPosY + 4*deltaY, guiWidth/5, guiHeight}, checked); + checked = GuiCheckBox(bounds[CHECKBOX], checked); - GuiTextBox((Rectangle){controlsAnchorPos, guiPosY + 6*deltaY, guiWidth, guiHeight}, guiText, 16); + GuiTextBox(bounds[TEXTBOX], guiText, 16); - colorPickerValue = GuiColorPicker((Rectangle){ controlsAnchorPos, guiPosY + 7*deltaY, 240, 240 }, colorPickerValue); + colorPickerValue = GuiColorPicker(bounds[COLORPICKER], colorPickerValue); - //Draw labels for GuiColorPicker information - GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 7*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("R: %i", colorPickerValue.r)); - GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 7.4f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("G: %i", colorPickerValue.g)); - GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 7.8f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("B: %i", colorPickerValue.b)); - GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 8.2f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("A: %i", colorPickerValue.a)); - GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 12.5f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("#%x", GetHexValue(colorPickerValue))); + // Draw labels for GuiColorPicker information + GuiGroupBox((Rectangle){ guiPosX + 300, guiPosY + 340, 50, 80 }, "RGBA"); + // GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 7.2f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("R: %i", colorPickerValue.r)); + // GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 7.5f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("G: %i", colorPickerValue.g)); + // GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 7.8f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("B: %i", colorPickerValue.b)); + // GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 8.1f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("A: %i", colorPickerValue.a)); + // GuiLabel((Rectangle){controlsAnchorPos + guiWidth*1.9f, guiPosY + 12.5f*deltaY + guiHeight/2 - styleGeneric[DEFAULT_TEXT_SIZE]/2, guiWidth/2, guiHeight}, FormatText("#%x", GetHexValue(colorPickerValue))); // Draw Load and Save buttons - if (GuiButton((Rectangle){ controlsAnchorPos + guiWidth*1.2f - guiWidth/3, guiPosY, guiWidth, guiHeight }, "Load Style")) BtnLoadStyle(); - if (GuiButton((Rectangle){ controlsAnchorPos + guiWidth*1.2f, guiPosY + 6*deltaY, guiWidth, guiHeight }, "Save Style")) BtnSaveStyle(); + if (GuiButton(bounds[BUTTON], "Load Style")) BtnLoadStyle(); + if (GuiButton((Rectangle){ guiPosX + 200, guiPosY + 290, 150, 30 }, "Save Style")) BtnSaveStyle(); + + // TODO: Draw selected control rectangles + if (listViewActive >= 0) DrawRectangleLinesEx(bounds[listViewActive], 1, RED); EndDrawing(); //---------------------------------------------------------------------------------- @@ -384,9 +319,9 @@ int main() //-------------------------------------------------------------------------------------- UnloadTexture(texIcons); UnloadTexture(texLogo); - ClearDroppedFiles(); // Clear internal buffers + ClearDroppedFiles(); // Clear internal buffers - CloseWindow(); // Close window and OpenGL context + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; @@ -426,3 +361,30 @@ static void BtnSaveStyle(void) fileName = ""; } } + +static int GetGuiStylePropertyIndex(int control, int property) +{ + int guiProp = -1; + + switch (control) + { + case LABEL: break; + case LABELBUTTON: break; + case BUTTON: guiProp = BUTTON_BORDER_COLOR_NORMAL + property; break; + case IMAGEBUTTON: break; + case TOGGLE: + case TOGGLEGROUP: guiProp = TOGGLE_BORDER_COLOR_NORMAL + property; break; + case SLIDER: break; + case SLIDERBAR: break; + case PROGRESSBAR: break; + case CHECKBOX: break; + case SPINNER: guiProp = SPINNER_BORDER_COLOR_NORMAL + property; break; + case COMBOBOX: guiProp = COMBOBOX_BORDER_COLOR_NORMAL + property; break; + case TEXTBOX: guiProp = TEXTBOX_BORDER_COLOR_NORMAL + property; break; + case LISTVIEW: guiProp = LISTVIEW_BORDER_COLOR_NORMAL + property; break; + case COLORPICKER: break; + default: break; + } + + return guiProp; +}