Multiple tool improvements

- Added DropdownBox controler
- GenerateLayoutCode() added bool noStaticData
- Reviewed multiple layouts
This commit is contained in:
Ray San
2018-04-05 13:56:43 +02:00
parent c9bc1fadb7
commit 7c14e7547a
5 changed files with 269 additions and 217 deletions

View File

@ -13,11 +13,11 @@ a 004 0 0 0
a 005 0 0 0
a 006 0 0 0
a 007 0 0 0
c 000 13 24 15 220 161 1 Image Export Options
c 001 9 102 47 130 20 1
c 002 9 102 77 130 20 1 SAMPLE TEXT
c 003 11 102 107 131 22 1 Untitled
c 004 1 35 139 200 30 1 Export Image
c 005 0 35 53 60 20 1 File format
c 006 0 35 83 61 20 1 Pixel format
c 007 0 35 113 50 20 1 File name
c 000 13 0 0 220 161 1 Image Export Options
c 001 9 77 32 130 20 1 Laser/Shoot
c 002 9 77 62 130 20 1 SAMPLE TEXT
c 003 11 77 92 131 22 1 Untitled
c 004 1 10 124 200 30 1 Export Image
c 005 0 10 38 60 20 1 File format
c 006 0 10 68 61 20 1 Pixel format
c 007 0 10 98 50 20 1 File name

View File

@ -13,25 +13,25 @@ a 004 0 0 0
a 005 0 0 0
a 006 0 0 0
a 007 0 0 0
c 000 13 116 65 200 452 1 RAW Import Options
c 002 0 126 116 80 20 1 File size:
c 004 0 136 166 30 20 1 Width:
c 005 0 136 191 33 20 1 Height:
c 006 0 266 166 30 20 1 pixels
c 007 0 266 191 30 20 1 pixels
c 008 11 176 161 80 20 1 SAMPLE TEXT
c 009 11 176 186 80 20 1 SAMPLE TEXT
c 011 0 138 254 63 20 1 Pixel format:
c 012 9 137 268 158 21 1 SAMPLE TEXT
c 013 0 137 304 50 20 1 Channels:
c 012 4 137 317 156 20 1 Bit Depth:
c 013 4 137 358 156 20 1 Bit Depth:
c 014 0 137 345 50 20 1 Bit Depth:
c 015 0 136 432 22 20 1 Size:
c 016 0 266 432 30 20 1 bytes
c 017 11 176 427 80 20 1 SAMPLE TEXT
c 018 1 126 477 180 24 1 SAMPLE TEXT
c 019 12 126 412 179 49 1 Header
c 020 12 126 241 179 150 1 Pixels Data
c 021 12 126 141 179 79 1 Resolution
c 022 0 126 96 54 20 1 Import file:
c 000 13 0 0 200 452 1 RAW Import Options
c 002 0 9 50 80 20 1 File size:
c 004 0 19 100 30 20 1 Width:
c 005 0 19 125 33 20 1 Height:
c 006 0 149 100 30 20 1 pixels
c 007 0 149 125 30 20 1 pixels
c 008 11 59 95 80 20 1 SAMPLE TEXT
c 009 11 59 120 80 20 1 SAMPLE TEXT
c 011 0 21 188 63 20 1 Pixel format:
c 012 9 20 202 158 21 1 SAMPLE TEXT
c 013 0 20 238 50 20 1 Channels:
c 012 4 20 251 156 20 1 Bit Depth:
c 013 4 20 292 156 20 1 Bit Depth:
c 014 0 20 279 50 20 1 Bit Depth:
c 015 0 19 366 22 20 1 Size:
c 016 0 149 366 30 20 1 bytes
c 017 11 59 361 80 20 1 SAMPLE TEXT
c 018 1 9 411 180 24 1 Import
c 019 12 9 346 179 49 1 Header
c 020 12 9 175 179 150 1 Pixels Data
c 021 12 9 75 179 79 1 Resolution
c 022 0 9 30 54 20 1 Import file:

View File

@ -1,116 +1,123 @@
#
# rgl text file (v1.0) - raygui layout text file generated using rGuiLayout
#
# Total number of controls: 101
# Total number of controls: 108
# Anchor info: a <id> <posx> <posy> <enabled>
# Control info: c <id> <type> <rectangle> <anchor_id> <text>
#
a 000 0 0 1
a 001 0 0 1
a 001 50 50 1
a 002 0 0 0
a 003 0 0 0
a 004 0 0 0
a 005 0 0 0
a 006 0 0 0
a 007 0 0 0
c 000 1 113 98 92 20 1 Pickup/Coin
c 001 1 113 123 92 20 1 Laser/Shoot
c 002 1 113 148 92 20 1 Explosion
c 003 1 113 173 92 20 1 Powerup
c 004 1 113 198 92 20 1 Hit/Hurt
c 005 1 113 223 92 20 1 Jump
c 006 1 113 248 92 20 1 Blip/Select
c 007 1 113 414 92 20 1 Mutate
c 008 1 113 439 92 20 1 Randomize
c 009 1 494 65 92 20 1 Screen Size x2
c 010 1 494 333 92 20 1 Load Sound
c 011 1 494 357 92 20 1 Save Sound
c 012 1 494 439 92 20 1 Export Wav
c 013 1 494 131 92 20 1 Play Sound
c 014 10 494 165 10 10 1 SAMPLE TEXT
c 015 0 510 165 80 20 1 Play on change
c 016 0 494 190 80 20 1 powered by
c 017 0 505 300 70 20 1 www.raylib.com
c 018 0 494 99 92 20 1 VOLUME: 60 %
c 019 6 494 115 92 10 1 SAMPLE TEXT
c 020 9 494 390 92 20 1 SAMPLE TEXT
c 021 9 494 414 92 20 1 SAMPLE TEXT
c 022 4 217 65 264 20 1 SAMPLE TEXT
c 023 0 116 285 90 20 1 based on sfxr by
c 024 0 113 298 98 20 1 Tomas Pettersson
c 025 0 118 370 100 20 1 www.github.com/
c 026 0 118 385 81 20 1 raysan5/raylib
c 027 6 344 98 100 10 1 SAMPLE TEXT
c 028 6 344 113 100 10 1 SAMPLE TEXT
c 029 6 344 128 100 10 1 SAMPLE TEXT
c 030 6 344 143 100 10 1 SAMPLE TEXT
c 031 6 344 164 100 10 1 SAMPLE TEXT
c 032 6 344 179 100 10 1 SAMPLE TEXT
c 033 6 344 194 100 10 1 SAMPLE TEXT
c 034 6 344 209 100 10 1 SAMPLE TEXT
c 035 6 344 224 100 10 1 SAMPLE TEXT
c 036 6 344 239 100 10 1 SAMPLE TEXT
c 037 6 344 260 100 10 1 SAMPLE TEXT
c 038 6 344 275 100 10 1 SAMPLE TEXT
c 039 6 344 296 100 10 1 SAMPLE TEXT
c 040 6 344 311 100 10 1 SAMPLE TEXT
c 041 6 344 332 100 10 1 SAMPLE TEXT
c 042 6 344 353 100 10 1 SAMPLE TEXT
c 043 6 344 368 100 10 1 SAMPLE TEXT
c 044 6 344 389 100 10 1 SAMPLE TEXT
c 045 6 344 404 100 10 1 SAMPLE TEXT
c 046 6 344 419 100 10 1 SAMPLE TEXT
c 047 6 344 434 100 10 1 SAMPLE TEXT
c 048 6 344 449 100 10 1 SAMPLE TEXT
c 049 14 427 530 173 20 1 Wave size:
c 050 14 100 530 201 20 1 SOUND INFO: Num samples:
c 051 14 300 530 128 20 1 Duration:
c 052 0 451 450 20 20 1 0.00
c 053 0 451 99 20 20 1 0.00
c 054 0 451 129 20 20 1 0.00
c 055 0 451 180 20 20 1 0.00
c 056 0 451 195 20 20 1 0.00
c 057 0 451 210 20 20 1 0.00
c 058 0 451 225 20 20 1 0.00
c 059 0 451 240 20 20 1 0.00
c 060 0 451 261 20 20 1 0.00
c 061 0 451 276 20 20 1 0.00
c 062 0 451 297 20 20 1 0.00
c 063 0 451 312 19 20 1 0.00
c 064 0 451 333 19 20 1 0.00
c 065 0 451 354 19 20 1 0.00
c 066 0 451 390 20 20 1 1.00
c 067 0 451 405 20 20 1 0.00
c 068 0 451 420 20 20 1 0.00
c 069 0 451 435 20 20 1 0.00
c 070 0 451 165 20 20 1 0.30
c 071 0 451 114 20 20 1 0.30
c 072 0 451 144 20 20 1 0.40
c 073 0 451 369 19 20 1 0.00
c 074 0 258 98 80 20 1 ATTACK TIME
c 075 0 255 113 81 20 1 SUSTAIN TIME
c 076 0 247 128 90 20 1 SUSTAIN PUNCH
c 077 0 267 143 70 20 1 DECAY TIME
c 078 0 229 164 103 20 1 START FREQUENCY
c 079 0 247 179 90 20 1 MIN FREQUENCY
c 080 0 302 194 30 20 1 SLIDE
c 081 0 263 209 70 20 1 DELTA SLIDE
c 082 0 246 239 90 20 1 VIBRATO SPEED
c 083 0 245 224 90 20 1 VIBRATO DEPTH
c 084 0 243 260 90 20 1 CHANGE AMOUNT
c 085 0 252 275 80 20 1 CHANGE SPEED
c 086 0 258 296 80 20 1 SQUARE DUTY
c 087 0 264 311 68 20 1 DUTY SWEEP
c 088 0 251 332 81 20 1 REPEAT SPEED
c 089 0 251 368 81 20 1 PHASER SWEEP
c 090 0 244 353 88 20 1 PHASER OFFSET
c 091 0 226 404 106 20 1 LPF CUTOFF SWEEP
c 092 0 266 389 66 20 1 LPF CUTOFF
c 093 0 246 419 86 20 1 LPF RESONANCE
c 094 0 225 449 107 20 1 HPF CUTOFF SWEEP
c 095 0 265 434 67 20 1 HPF CUTOFF
c 096 0 118 330 100 20 1 www.github.com/
c 097 0 118 345 81 20 1 raysan5/raygui
c 098 14 494 203 92 92 1 LOGO
c 099 14 129 65 76 20 1 Version
c 100 14 113 471 473 50 1 WAVE
c 000 1 13 48 92 20 1 Pickup/Coin
c 001 1 13 73 92 20 1 Laser/Shoot
c 002 1 13 98 92 20 1 Explosion
c 003 1 13 123 92 20 1 Powerup
c 004 1 13 148 92 20 1 Hit/Hurt
c 005 1 13 173 92 20 1 Jump
c 006 1 13 198 92 20 1 Blip/Select
c 007 1 13 364 92 20 1 Mutate
c 008 1 13 389 92 20 1 Randomize
c 009 1 394 15 92 20 1 Screen Size x2
c 010 1 394 283 92 20 1 Load Sound
c 011 1 394 307 92 20 1 Save Sound
c 012 1 394 389 92 20 1 Export Wav
c 013 1 394 81 92 20 1 Play Sound
c 014 10 394 115 10 10 1 SAMPLE TEXT
c 015 0 410 115 80 20 1 Play on change
c 016 0 394 140 80 20 1 powered by
c 017 0 405 250 70 20 1 www.raylib.com
c 018 0 394 49 92 20 1 VOLUME: 60 %
c 019 6 394 65 92 10 1 SAMPLE TEXT
c 020 9 394 340 92 20 1 SAMPLE TEXT
c 021 9 394 364 92 20 1 SAMPLE TEXT
c 022 4 117 15 264 20 1 SAMPLE TEXT
c 023 0 16 235 90 20 1 based on sfxr by
c 024 0 13 248 98 20 1 Tomas Pettersson
c 025 0 18 320 100 20 1 www.github.com/
c 026 0 18 335 81 20 1 raysan5/raylib
c 027 6 244 48 100 10 1 SAMPLE TEXT
c 028 6 244 63 100 10 1 SAMPLE TEXT
c 029 6 244 78 100 10 1 SAMPLE TEXT
c 030 6 244 93 100 10 1 SAMPLE TEXT
c 031 6 244 114 100 10 1 SAMPLE TEXT
c 032 6 244 129 100 10 1 SAMPLE TEXT
c 033 6 244 144 100 10 1 SAMPLE TEXT
c 034 6 244 159 100 10 1 SAMPLE TEXT
c 035 6 244 174 100 10 1 SAMPLE TEXT
c 036 6 244 189 100 10 1 SAMPLE TEXT
c 037 6 244 210 100 10 1 SAMPLE TEXT
c 038 6 244 225 100 10 1 SAMPLE TEXT
c 039 6 244 246 100 10 1 SAMPLE TEXT
c 040 6 244 261 100 10 1 SAMPLE TEXT
c 041 6 244 282 100 10 1 SAMPLE TEXT
c 042 6 244 303 100 10 1 SAMPLE TEXT
c 043 6 244 318 100 10 1 SAMPLE TEXT
c 044 6 244 339 100 10 1 SAMPLE TEXT
c 045 6 244 354 100 10 1 SAMPLE TEXT
c 046 6 244 369 100 10 1 SAMPLE TEXT
c 047 6 244 384 100 10 1 SAMPLE TEXT
c 048 6 244 399 100 10 1 SAMPLE TEXT
c 049 14 327 480 173 20 1 Wave size:
c 050 14 0 480 201 20 1 SOUND INFO: Num samples:
c 051 14 200 480 128 20 1 Duration:
c 052 0 351 400 20 20 1 0.00
c 053 0 351 49 20 20 1 0.00
c 054 0 351 79 20 20 1 0.00
c 055 0 351 130 20 20 1 0.00
c 056 0 351 145 20 20 1 0.00
c 057 0 351 160 20 20 1 0.00
c 058 0 351 175 20 20 1 0.00
c 059 0 351 190 20 20 1 0.00
c 060 0 351 211 20 20 1 0.00
c 061 0 351 226 20 20 1 0.00
c 062 0 351 247 20 20 1 0.00
c 063 0 351 262 19 20 1 0.00
c 064 0 351 283 19 20 1 0.00
c 065 0 351 304 19 20 1 0.00
c 066 0 351 340 20 20 1 1.00
c 067 0 351 355 20 20 1 0.00
c 068 0 351 370 20 20 1 0.00
c 069 0 351 385 20 20 1 0.00
c 070 0 351 115 20 20 1 0.30
c 071 0 351 64 20 20 1 0.30
c 072 0 351 94 20 20 1 0.40
c 073 0 351 319 19 20 1 0.00
c 074 0 158 48 80 20 1 ATTACK TIME
c 075 0 155 63 81 20 1 SUSTAIN TIME
c 076 0 147 78 90 20 1 SUSTAIN PUNCH
c 077 0 167 93 70 20 1 DECAY TIME
c 078 0 129 114 103 20 1 START FREQUENCY
c 079 0 147 129 90 20 1 MIN FREQUENCY
c 080 0 202 144 30 20 1 SLIDE
c 081 0 163 159 70 20 1 DELTA SLIDE
c 082 0 146 189 90 20 1 VIBRATO SPEED
c 083 0 145 174 90 20 1 VIBRATO DEPTH
c 084 0 143 210 90 20 1 CHANGE AMOUNT
c 085 0 152 225 80 20 1 CHANGE SPEED
c 086 0 158 246 80 20 1 SQUARE DUTY
c 087 0 164 261 68 20 1 DUTY SWEEP
c 088 0 151 282 81 20 1 REPEAT SPEED
c 089 0 151 318 81 20 1 PHASER SWEEP
c 090 0 144 303 88 20 1 PHASER OFFSET
c 091 0 126 354 106 20 1 LPF CUTOFF SWEEP
c 092 0 166 339 66 20 1 LPF CUTOFF
c 093 0 146 369 86 20 1 LPF RESONANCE
c 094 0 125 399 107 20 1 HPF CUTOFF SWEEP
c 095 0 165 384 67 20 1 HPF CUTOFF
c 096 0 18 280 100 20 1 www.github.com/
c 097 0 18 295 81 20 1 raysan5/raygui
c 098 14 394 153 92 92 1 LOGO
c 099 14 29 15 76 20 1 Version
c 100 14 13 421 473 50 1 WAVE
c 101 12 117 42 264 67 1
c 102 12 117 109 264 96 1
c 103 12 117 205 264 36 1
c 104 12 117 277 264 22 1
c 105 12 117 241 264 36 1
c 107 12 117 334 264 81 1
c 107 12 117 299 264 35 1

View File

@ -13,30 +13,30 @@ a 004 0 0 0
a 005 0 0 0
a 006 0 0 0
a 007 0 0 0
c 000 14 285 25 226 30 1 ATLAS SETTINGS
c 001 0 300 90 50 20 1 Algorythm
c 002 0 300 120 51 20 1 Heuristics
c 003 0 300 150 38 20 1 Padding
c 004 10 300 180 20 20 1 SAMPLE TEXT
c 005 10 300 210 20 20 1 SAMPLE TEXT
c 006 10 300 240 20 20 1 SAMPLE TEXT
c 007 0 340 185 62 20 1 Trim sprites
c 008 0 340 215 111 20 1 Allow sprites rotation
c 009 0 340 245 92 20 1 Remove duplicates
c 010 9 365 85 130 20 1 SAMPLE TEXT
c 011 9 365 115 130 20 1 SAMPLE TEXT
c 012 8 365 145 130 20 1 SAMPLE TEXT
c 013 12 290 70 215 200 1 Size
c 014 0 300 310 20 20 1 Size
c 015 11 340 305 70 20 1
c 016 11 425 305 70 20 1
c 017 10 300 340 20 20 1 SAMPLE TEXT
c 018 10 300 370 20 20 1 SAMPLE TEXT
c 019 0 335 345 56 20 1 Force POT
c 020 0 335 375 76 20 1 Force squared
c 021 0 300 408 61 20 1 Pixel format
c 022 9 375 403 120 20 1 SAMPLE TEXT
c 023 10 300 430 20 20 1 SAMPLE TEXT
c 024 0 335 435 58 20 1 Clear alpha
c 025 1 300 460 195 25 1 Export
c 026 12 290 290 215 205 1 Texture
c 000 14 0 0 226 30 1 ATLAS SETTINGS
c 001 0 15 65 50 20 1 Algorythm
c 002 0 15 95 51 20 1 Heuristics
c 003 0 15 125 38 20 1 Padding
c 004 10 15 155 20 20 1 SAMPLE TEXT
c 005 10 15 185 20 20 1 SAMPLE TEXT
c 006 10 15 215 20 20 1 SAMPLE TEXT
c 007 0 55 160 62 20 1 Trim sprites
c 008 0 55 190 111 20 1 Allow sprites rotation
c 009 0 55 220 92 20 1 Remove duplicates
c 010 9 80 60 130 20 1 SAMPLE TEXT
c 011 9 80 90 130 20 1 SAMPLE TEXT
c 012 8 80 120 130 20 1 SAMPLE TEXT
c 013 12 5 45 215 200 1 Size
c 014 0 15 285 20 20 1 Size
c 015 11 55 280 75 20 1 SAMPLE TEXT
c 016 11 140 280 70 20 1 SAMPLE TEXT
c 017 10 15 315 20 20 1 SAMPLE TEXT
c 018 10 15 345 20 20 1 SAMPLE TEXT
c 019 0 50 320 56 20 1 Force POT
c 020 0 50 350 76 20 1 Force squared
c 021 0 15 383 61 20 1 Pixel format
c 022 9 90 378 120 20 1 SAMPLE TEXT
c 023 10 15 405 20 20 1 SAMPLE TEXT
c 024 0 50 410 58 20 1 Clear alpha
c 025 1 15 435 195 25 1 Export
c 026 12 5 265 215 205 1 Texture

View File

@ -50,6 +50,7 @@ typedef enum {
GROUPBOX,
WINDOWBOX,
DUMMYREC,
DROPDOWNBOX,
STATUSBAR,
LISTVIEW,
COLORPICKER
@ -84,17 +85,17 @@ static GuiControl layout[MAX_GUI_CONTROLS] = { 0 };
static AnchorPoint anchors[MAX_ANCHOR_POINTS];
static int controlsCounter = 0;
const char *controlTypeName[] = { "LABEL", "BUTTON", "IMAGEBUTTON", "TOGGLE", "TOGGLEGROUP", "SLIDER", "SLIDERBAR", "PROGRESSBAR", "SPINNER", "COMBOBOX", "CHECKBOX", "TEXTBOX", "GROUPBOX", "WINDOWBOX", "DUMMYREC", "STATUSBAR", "LISTVIEW", "COLORPICKER" };
const char *controlTypeNameLow[] = { "Label", "Button", "ImageButton", "Toggle", "ToggleGroup", "Slider", "SliderBar", "ProgressBar", "Spinner", "ComboBox", "CheckBox", "TextBox", "GroupBox", "WindowBox", "DummyRec", "StatusBar", "ListView", "ColorPicker" };
const char *controlTypeNameShort[] = { "lbl", "btn", "ibtn", "tggl", "tgroup", "sldr", "sldrb", "prgssb", "spnr", "combox", "chkbox", "txtbox", "grpbox", "wdwbox", "dmyrc", "stsb", "lstvw", "clrpckr" };
const char *controlTypeName[] = { "LABEL", "BUTTON", "IMAGEBUTTON", "TOGGLE", "TOGGLEGROUP", "SLIDER", "SLIDERBAR", "PROGRESSBAR", "SPINNER", "COMBOBOX", "CHECKBOX", "TEXTBOX", "GROUPBOX", "WINDOWBOX", "DUMMYREC", "DROPDOWNBOX", "STATUSBAR", "LISTVIEW", "COLORPICKER" };
const char *controlTypeNameLow[] = { "Label", "Button", "ImageButton", "Toggle", "ToggleGroup", "Slider", "SliderBar", "ProgressBar", "Spinner", "ComboBox", "CheckBox", "TextBox", "GroupBox", "WindowBox", "DummyRec", "DropdownBox", "StatusBar", "ListView", "ColorPicker" };
const char *controlTypeNameShort[] = { "lbl", "btn", "ibtn", "tggl", "tgroup", "sldr", "sldrb", "prgssb", "spnr", "combox", "chkbox", "txtbox", "grpbox", "wdwbox", "dmyrc", "ddwnbox", "stsb", "lstvw", "clrpckr" };
//----------------------------------------------------------------------------------
// Module specific Functions Declaration
//----------------------------------------------------------------------------------
static void DrawGrid2D(int divsX, int divsY); // Draw 2d grid with horizontal and vertical lines depending on the screen size
static void SaveLayoutRGL(const char *fileName, bool binary); // Save gui layout project information
static void LoadLayoutRGL(const char *fileName); // Load gui layout project information
static void GenerateLayoutCode(const char *fileName); // Generate C code for gui layout
static void DrawGrid2D(int divsX, int divsY); // Draw 2d grid with horizontal and vertical lines depending on the screen size
static void SaveLayoutRGL(const char *fileName, bool binary); // Save gui layout project information
static void LoadLayoutRGL(const char *fileName); // Load gui layout project information
static void GenerateLayoutCode(const char *fileName , bool noStaticData); // Generate C code for gui layout
//----------------------------------------------------------------------------------
// Main Entry point
@ -139,7 +140,7 @@ int main()
char **droppedFiles = { 0 };
// Used to draw the preview of selectedControl
Rectangle defaultRec[18] = {
Rectangle defaultRec[19] = {
(Rectangle){ 0, 0, 80, 20}, // LABEL
(Rectangle){ 0, 0, 100, 30}, // BUTTON
(Rectangle){ 0, 0, 120, 40}, // IMAGEBUTTON
@ -155,6 +156,7 @@ int main()
(Rectangle){ 0, 0, 120, 40}, // GROUPBOX
(Rectangle){ 0, 0, 120, 48}, // WINDOWBOX
(Rectangle){ 0, 0, 100, 100}, // DUMMYREC
(Rectangle){ 0, 0, 120, 20}, // DROPDOWNBOX
(Rectangle){ 0, 0, 200, 30}, // STATUSBAR
(Rectangle){ 0, 0, 120, 250}, // LISTVIEW
(Rectangle){ 0, 0, 120, 120} // COLORPICKER
@ -172,7 +174,7 @@ int main()
const char *list[3] = { "ONE", "TWO", "THREE" };
const char *guiControls[18] = {
const char *guiControls[19] = {
"LABEL",
"BUTTON",
"IMAGEBUTTON",
@ -188,6 +190,7 @@ int main()
"GROUPBOX",
"WINDOWBOX",
"DUMMYREC",
"DROPDOWNBOX",
"STATUSBAR",
"LISTVIEW",
"COLORPICKER"
@ -711,7 +714,6 @@ int main()
controlDrag = false;
selectedAnchor = -1;
anchorMode = false;
}
// Moves the anchor to the mouse position
@ -750,8 +752,7 @@ int main()
}
}
}
// Enable anchor mode editing
if (IsKeyDown(KEY_A) && !textEditMode && (layout[selectedControl].type != TEXTBOX)) anchorMode = true;
@ -827,6 +828,8 @@ int main()
layout[controlsCounter].id = controlsCounter;
layout[controlsCounter].type = layout[selectedControl].type;
layout[controlsCounter].rec = layout[selectedControl].rec;
layout[controlsCounter].rec.x += 5;
layout[controlsCounter].rec.y += 5;
strcpy(layout[controlsCounter].text, layout[selectedControl].text);
layout[controlsCounter].ap = layout[selectedControl].ap; // Default anchor point (0, 0)
@ -859,7 +862,7 @@ int main()
}
}
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_ENTER)) GenerateLayoutCode("test_layout.c");
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_ENTER)) GenerateLayoutCode("test_layout.c", true);
// Tracemap texture control logic
if (tracemap.id > 0)
@ -960,6 +963,7 @@ int main()
case GROUPBOX: GuiGroupBox((Rectangle){ layout[i].ap->x + layout[i].rec.x, layout[i].ap->y + layout[i].rec.y, layout[i].rec.width, layout[i].rec.height }, layout[i].text); break;
case WINDOWBOX: GuiWindowBox((Rectangle){ layout[i].ap->x + layout[i].rec.x, layout[i].ap->y + layout[i].rec.y, layout[i].rec.width, layout[i].rec.height }, layout[i].text); break;
case DUMMYREC: GuiDummyRec((Rectangle){ layout[i].ap->x + layout[i].rec.x, layout[i].ap->y + layout[i].rec.y, layout[i].rec.width, layout[i].rec.height }, layout[i].text); break;
case DROPDOWNBOX: GuiDropdownBox((Rectangle){ layout[i].ap->x + layout[i].rec.x, layout[i].ap->y + layout[i].rec.y, layout[i].rec.width, layout[i].rec.height }, list, 3, 2); break;
case STATUSBAR: GuiStatusBar((Rectangle){ layout[i].ap->x + layout[i].rec.x, layout[i].ap->y + layout[i].rec.y, layout[i].rec.width, layout[i].rec.height }, layout[i].text, 15); break;
case LISTVIEW: GuiListView((Rectangle){ layout[i].ap->x + layout[i].rec.x, layout[i].ap->y + layout[i].rec.y, layout[i].rec.width, layout[i].rec.height }, guiControls, 14, 1); break;
case COLORPICKER: GuiColorPicker((Rectangle){ layout[i].ap->x + layout[i].rec.x, layout[i].ap->y + layout[i].rec.y, layout[i].rec.width, layout[i].rec.height }, RED); break;
@ -993,6 +997,7 @@ int main()
case GROUPBOX: GuiGroupBox(defaultRec[selectedTypeDraw], "GROUP BOX"); break;
case WINDOWBOX: GuiWindowBox(defaultRec[selectedTypeDraw], "WINDOW BOX"); break;
case DUMMYREC: GuiDummyRec(defaultRec[selectedTypeDraw], "DUMMY REC"); break;
case DROPDOWNBOX: GuiDropdownBox(defaultRec[selectedTypeDraw], list, 3, 2); break;
case STATUSBAR: GuiStatusBar(defaultRec[selectedTypeDraw], "STATUS BAR", 15); break;
case LISTVIEW: GuiListView(defaultRec[selectedTypeDraw], guiControls, 14, 1); break;
case COLORPICKER: GuiColorPicker(defaultRec[selectedTypeDraw], RED); break;
@ -1023,36 +1028,36 @@ int main()
{
// Draw the anchor that is currently moving
DrawCircle(anchors[i].x, anchors[i].y, ANCHOR_RADIUS, Fade(ORANGE, 0.5f));
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y, ANCHOR_RADIUS*2 + 10, 1, ORANGE);
DrawRectangle(anchors[i].x, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, ORANGE);
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y - 1, ANCHOR_RADIUS*2 + 10, 1, ORANGE);
DrawRectangle(anchors[i].x - 1, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, ORANGE);
}
else if (anchors[i].hidding && anchors[i].id == selectedAnchor)
{
// Draw idle anchor
DrawCircle(anchors[i].x, anchors[i].y, ANCHOR_RADIUS, Fade(BLUE, 0.5f));
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y, ANCHOR_RADIUS*2 + 10, 1, BLUE);
DrawRectangle(anchors[i].x, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, BLUE);
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y - 1, ANCHOR_RADIUS*2 + 10, 1, BLUE);
DrawRectangle(anchors[i].x - 1, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, BLUE);
}
else if (anchors[i].id == selectedAnchor)
{
// Draw the selected anchor
DrawCircle(anchors[i].x, anchors[i].y, ANCHOR_RADIUS, Fade(RED, 0.5f));
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y, ANCHOR_RADIUS*2 + 10, 1, RED);
DrawRectangle(anchors[i].x, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, RED);
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y - 1, ANCHOR_RADIUS*2 + 10, 1, RED);
DrawRectangle(anchors[i].x - 1, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, RED);
}
else if (anchors[i].hidding)
{
// Draw idle anchor
DrawCircleLines(anchors[i].x, anchors[i].y, ANCHOR_RADIUS, Fade(BLUE, 0.5f));
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y, ANCHOR_RADIUS*2 + 10, 1, BLUE);
DrawRectangle(anchors[i].x, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, BLUE);
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y - 1, ANCHOR_RADIUS*2 + 10, 1, BLUE);
DrawRectangle(anchors[i].x - 1, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, BLUE);
}
else
{
// Draw idle anchor
DrawCircleLines(anchors[i].x, anchors[i].y, ANCHOR_RADIUS, Fade(RED, 0.5f));
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y, ANCHOR_RADIUS*2 + 10, 1, RED);
DrawRectangle(anchors[i].x, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, RED);
DrawRectangle(anchors[i].x - ANCHOR_RADIUS - 5, anchors[i].y - 1, ANCHOR_RADIUS*2 + 10, 1, RED);
DrawRectangle(anchors[i].x - 1, anchors[i].y - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, RED);
}
}
@ -1068,8 +1073,8 @@ int main()
if (anchorMode)
{
DrawCircleLines(mouseX, mouseY, ANCHOR_RADIUS, Fade(RED, 0.5f));
DrawRectangle(mouseX - ANCHOR_RADIUS - 5, mouseY, ANCHOR_RADIUS*2 + 10, 1, RED);
DrawRectangle(mouseX, mouseY - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, RED);
DrawRectangle(mouseX - ANCHOR_RADIUS - 5, mouseY - 1, ANCHOR_RADIUS*2 + 10, 1, RED);
DrawRectangle(mouseX - 1 , mouseY - ANCHOR_RADIUS - 5, 1, ANCHOR_RADIUS*2 + 10, RED);
}
else
{
@ -1352,7 +1357,7 @@ static void LoadLayoutRGL(const char *fileName)
}
// Generate C code for gui layout
static void GenerateLayoutCode(const char *fileName)
static void GenerateLayoutCode(const char *fileName , bool noStaticData)
{
#define RGL_TOOL_NAME "rGuiLayout"
#define RGL_TOOL_DESCRIPTION "tool_name"
@ -1430,6 +1435,7 @@ static void GenerateLayoutCode(const char *fileName)
}
break;
case DROPDOWNBOX:
case COMBOBOX:
case LISTVIEW:
case TOGGLEGROUP:
@ -1483,18 +1489,21 @@ static void GenerateLayoutCode(const char *fileName)
fprintf(ftool, "\n");
// Define controls rectangles
fprintf(ftool, " // Define controls rectangles\n");
fprintf(ftool, " Rectangle layoutRecs[%i] = {\n", controlsCounter);
for (int i = 0; i < controlsCounter; i++)
if (!noStaticData)
{
fprintf(ftool, " (Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height);
// Define controls rectangles
fprintf(ftool, " // Define controls rectangles\n");
fprintf(ftool, " Rectangle layoutRecs[%i] = {\n", controlsCounter);
if (i == controlsCounter - 1) fprintf(ftool, "\t\t// %s %03i\n };\n\n", controlTypeName[layout[i].type], i);
else fprintf(ftool, ",\t\t// %s %03i\n", controlTypeName[layout[i].type], i);
for (int i = 0; i < controlsCounter; i++)
{
fprintf(ftool, " (Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height);
if (i == controlsCounter - 1) fprintf(ftool, "\t\t// %s %03i\n };\n\n", controlTypeName[layout[i].type], i);
else fprintf(ftool, ",\t\t// %s %03i\n", controlTypeName[layout[i].type], i);
}
}
fprintf(ftool, " SetTargetFPS(60);\n");
fprintf(ftool, " //--------------------------------------------------------------------------------------\n\n");
fprintf(ftool, " // Main game loop\n");
@ -1512,32 +1521,68 @@ static void GenerateLayoutCode(const char *fileName)
fprintf(ftool, "\t\t\t// Draw all controls\n");
// Draw all controls
for (int i = 0; i < controlsCounter; i++)
if (noStaticData)
{
switch (layout[i].type)
for (int i = 0; i < controlsCounter; i++)
{
case LABEL: fprintf(ftool, "\t\t\tGuiLabel(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case BUTTON: fprintf(ftool, "\t\t\tif (GuiButton(layoutRecs[%i], \"%s\")) Button%03i(); \n\n", i, layout[i].text, i); break;
case IMAGEBUTTON: fprintf(ftool, "\t\t\tif (GuiImageButtonEx(layoutRecs[%i], texture, (Rectangle){ 0, 0, texture.width/3, texture.height/6 }, \"%s\")) ImageButton%03i(); \n\n", i, layout[i].text, i); break;
case TOGGLE: fprintf(ftool, "\t\t\t%s%03i = GuiToggleButton(layoutRecs[%i], \"%s\", %s%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, layout[i].text, controlTypeNameShort[layout[i].type], i); break;
case TOGGLEGROUP: fprintf(ftool, "\t\t\t%sActive%03i = GuiToggleGroup(layoutRecs[%i], %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SLIDER: fprintf(ftool, "\t\t\t%sValue%03i = GuiSlider(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SLIDERBAR: fprintf(ftool, "\t\t\t%sValue%03i = GuiSliderBar(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case PROGRESSBAR: fprintf(ftool, "\t\t\t%sValue%03i = GuiProgressBar(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SPINNER: fprintf(ftool, "\t\t\t%sValue%03i = GuiSpinner(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case COMBOBOX: fprintf(ftool, "\t\t\t%sActive%03i = GuiComboBox(layoutRecs[%i], %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case CHECKBOX: fprintf(ftool, "\t\t\t%s%03i = GuiCheckBox(layoutRecs[%i], %s%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i); break;
case LISTVIEW: fprintf(ftool, "\t\t\t%sActive%03i = GuiListView(layoutRecs[%i], %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case TEXTBOX: fprintf(ftool, "\t\t\tGuiTextBox(layoutRecs[%i], %s%03i, %sSize%03i);\n\n", i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case GROUPBOX: fprintf(ftool, "\t\t\tGuiGroupBox(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case WINDOWBOX: fprintf(ftool, "\t\t\tGuiWindowBox(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case DUMMYREC: fprintf(ftool, "\t\t\tGuiDummyRec(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case STATUSBAR: fprintf(ftool, "\t\t\tGuiStatusBar(layoutRecs[%i], \"%s\", 10);\n\n", i, layout[i].text); break;
case COLORPICKER: fprintf(ftool, "\t\t\t%sColor%03i = GuiColorPicker(layoutRecs[%i], %sColor%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i); break;
default: break;
switch (layout[i].type)
{
case LABEL: fprintf(ftool, "\t\t\tGuiLabel((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, \"%s\");\n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text); break;
case BUTTON: fprintf(ftool, "\t\t\tif (GuiButton((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, \"%s\")) Button%03i(); \n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text, i); break;
case IMAGEBUTTON: fprintf(ftool, "\t\t\tif (GuiImageButtonEx((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, texture, (Rectangle){ 0, 0, texture.width/3, texture.height/6 }, \"%s\")) ImageButton%03i(); \n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text, i); break;
case TOGGLE: fprintf(ftool, "\t\t\t%s%03i = GuiToggleButton((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, \"%s\", %s%03i); \n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text, controlTypeNameShort[layout[i].type], i); break;
case TOGGLEGROUP: fprintf(ftool, "\t\t\t%sActive%03i = GuiToggleGroup((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SLIDER: fprintf(ftool, "\t\t\t%sValue%03i = GuiSlider((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SLIDERBAR: fprintf(ftool, "\t\t\t%sValue%03i = GuiSliderBar((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case PROGRESSBAR: fprintf(ftool, "\t\t\t%sValue%03i = GuiProgressBar((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SPINNER: fprintf(ftool, "\t\t\t%sValue%03i = GuiSpinner((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case COMBOBOX: fprintf(ftool, "\t\t\t%sActive%03i = GuiComboBox((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case CHECKBOX: fprintf(ftool, "\t\t\t%s%03i = GuiCheckBox((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %s%03i); \n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i); break;
case LISTVIEW: fprintf(ftool, "\t\t\t%sActive%03i = GuiListView((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case TEXTBOX: fprintf(ftool, "\t\t\tGuiTextBox((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %s%03i, %sSize%03i);\n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case GROUPBOX: fprintf(ftool, "\t\t\tGuiGroupBox((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, \"%s\");\n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text); break;
case WINDOWBOX: fprintf(ftool, "\t\t\tGuiWindowBox((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, \"%s\");\n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text); break;
case DUMMYREC: fprintf(ftool, "\t\t\tGuiDummyRec((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, \"%s\");\n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text); break;
case DROPDOWNBOX: fprintf(ftool, "\t\t\t%sActive%03i = GuiDropdownBox((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case STATUSBAR: fprintf(ftool, "\t\t\tGuiStatusBar((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, \"%s\", 10);\n\n", "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, layout[i].text); break;
case COLORPICKER: fprintf(ftool, "\t\t\t%sColor%03i = GuiColorPicker((Rectangle){ %s%02i%s + %i, %s%02i%s + %i, %i, %i }, %sColor%03i);\n\n", controlTypeNameShort[layout[i].type], i, "anchor", layout[i].ap->id, ".x", layout[i].rec.x, "anchor", layout[i].ap->id, ".y", layout[i].rec.y, layout[i].rec.width, layout[i].rec.height, controlTypeNameShort[layout[i].type], i); break;
default: break;
}
}
}
else
{
for (int i = 0; i < controlsCounter; i++)
{
switch (layout[i].type)
{
case LABEL: fprintf(ftool, "\t\t\tGuiLabel(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case BUTTON: fprintf(ftool, "\t\t\tif (GuiButton(layoutRecs[%i], \"%s\")) Button%03i(); \n\n", i, layout[i].text, i); break;
case IMAGEBUTTON: fprintf(ftool, "\t\t\tif (GuiImageButtonEx(layoutRecs[%i], texture, (Rectangle){ 0, 0, texture.width/3, texture.height/6 }, \"%s\")) ImageButton%03i(); \n\n", i, layout[i].text, i); break;
case TOGGLE: fprintf(ftool, "\t\t\t%s%03i = GuiToggleButton(layoutRecs[%i], \"%s\", %s%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, layout[i].text, controlTypeNameShort[layout[i].type], i); break;
case TOGGLEGROUP: fprintf(ftool, "\t\t\t%sActive%03i = GuiToggleGroup(layoutRecs[%i], %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SLIDER: fprintf(ftool, "\t\t\t%sValue%03i = GuiSlider(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SLIDERBAR: fprintf(ftool, "\t\t\t%sValue%03i = GuiSliderBar(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case PROGRESSBAR: fprintf(ftool, "\t\t\t%sValue%03i = GuiProgressBar(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case SPINNER: fprintf(ftool, "\t\t\t%sValue%03i = GuiSpinner(layoutRecs[%i], %sValue%03i, %sMinValue%03i, %sMaxValue%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case COMBOBOX: fprintf(ftool, "\t\t\t%sActive%03i = GuiComboBox(layoutRecs[%i], %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case CHECKBOX: fprintf(ftool, "\t\t\t%s%03i = GuiCheckBox(layoutRecs[%i], %s%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i); break;
case LISTVIEW: fprintf(ftool, "\t\t\t%sActive%03i = GuiListView(layoutRecs[%i], %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case TEXTBOX: fprintf(ftool, "\t\t\tGuiTextBox(layoutRecs[%i], %s%03i, %sSize%03i);\n\n", i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case GROUPBOX: fprintf(ftool, "\t\t\tGuiGroupBox(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case WINDOWBOX: fprintf(ftool, "\t\t\tGuiWindowBox(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case DUMMYREC: fprintf(ftool, "\t\t\tGuiDummyRec(layoutRecs[%i], \"%s\");\n\n", i, layout[i].text); break;
case DROPDOWNBOX: fprintf(ftool, "\t\t\t%sActive%03i = GuiDropdownBox(layoutRecs[%i], %sList%03i, %sCount%03i, %sActive%03i); \n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i, controlTypeNameShort[layout[i].type], i); break;
case STATUSBAR: fprintf(ftool, "\t\t\tGuiStatusBar(layoutRecs[%i], \"%s\", 10);\n\n", i, layout[i].text); break;
case COLORPICKER: fprintf(ftool, "\t\t\t%sColor%03i = GuiColorPicker(layoutRecs[%i], %sColor%03i);\n\n", controlTypeNameShort[layout[i].type], i, i, controlTypeNameShort[layout[i].type], i); break;
default: break;
}
}
}
fprintf(ftool, " EndDrawing();\n");
fprintf(ftool, " //----------------------------------------------------------------------------------\n");