Updated tool WIP

This commit is contained in:
Ray San
2018-02-06 09:43:03 +01:00
parent 1844046244
commit b65daa1702
2 changed files with 123 additions and 161 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -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;
}