static struct gui_color color_picker(struct gui_panel_layout *panel, struct control_window *control, const char *name, struct gui_color color) { int i; gui_byte *iter; gui_bool *active[4]; active[0] = &control->spinner_r_active; active[1] = &control->spinner_g_active; active[2] = &control->spinner_b_active; active[3] = &control->spinner_a_active; gui_panel_row(panel, 30, 2); gui_panel_label(panel, name, GUI_TEXT_LEFT); gui_panel_button_color(panel, color, GUI_BUTTON_DEFAULT); iter = &color.r; gui_panel_row(panel, 30, 2); for (i = 0; i < 4; ++i, iter++) { gui_float t = *iter; t = gui_panel_slider(panel, 0, t, 255, 10); *iter = (gui_byte)t; *iter = (gui_byte)gui_panel_spinner(panel, 0, *iter, 255, 1, active[i]); } return color; }
static void color_tab(struct gui_panel_layout *panel, struct state *control, struct gui_config *config) { gui_size i = 0; gui_panel_row_dynamic(panel, 30, 2); for (i = 0; i < GUI_COLOR_COUNT; ++i) { struct gui_color c = config->colors[i]; gui_panel_label(panel, colors[i], GUI_TEXT_LEFT); if (gui_panel_button_color(panel, c, GUI_BUTTON_DEFAULT)) { control->picker.active = gui_true; control->picker.color = config->colors[i]; control->picker.index = i; } } if (control->picker.active) { color_picker(panel, &control->picker, colors[control->picker.index], &config->colors[control->picker.index]); } }
static gui_bool color_picker(struct gui_panel_layout *panel, struct color_picker* control, const char *name, struct gui_color *color) { int i; gui_byte *iter; gui_bool ret = gui_true; struct gui_panel_layout popup; gui_panel_popup_begin(panel, &popup, GUI_POPUP_STATIC, gui_rect(10, 100, 280, 280), gui_vec2(0,0)); { if (gui_panel_header(&popup, "Color", GUI_CLOSEABLE, GUI_CLOSEABLE, GUI_HEADER_LEFT)) { gui_panel_popup_close(&popup); return gui_false; } gui_panel_row_dynamic(&popup, 30, 2); gui_panel_label(&popup, name, GUI_TEXT_LEFT); gui_panel_button_color(&popup, control->color, GUI_BUTTON_DEFAULT); iter = &control->color.r; gui_panel_row_dynamic(&popup, 30, 2); for (i = 0; i < 4; ++i, iter++) { gui_float t = *iter; t = gui_panel_slider(&popup, 0, t, 255, 10); *iter = (gui_byte)t; *iter = (gui_byte)gui_panel_spinner_int(&popup, 0, *iter, 255, 1, NULL); } gui_panel_row_dynamic(&popup, 30, 3); gui_panel_spacing(&popup, 1); if (gui_panel_button_text(&popup, "ok", GUI_BUTTON_DEFAULT)) { gui_panel_popup_close(&popup); *color = control->color; ret = gui_false; } if (gui_panel_button_text(&popup, "cancel", GUI_BUTTON_DEFAULT)) { gui_panel_popup_close(&popup); ret = gui_false; } } gui_panel_popup_end(panel, &popup); control->active = (gui_state)ret; return ret; }
static void color_tab(struct gui_panel_layout *panel, struct control_window *control, struct gui_config *config) { gui_size i = 0; static const char *labels[] = {"Text:", "Panel:", "Header:", "Border:", "Button:", "Button Border:", "Button Hovering:", "Button Toggle:", "Button Hovering Text:", "Check:", "Check BG:", "Check Active:", "Option:", "Option BG:", "Option Active:", "Slider:", "Slider bar:", "Slider boder:","Slider cursor:", "Progress:", "Progress Cursor:", "Editbox:", "Editbox cursor:", "Editbox Border:", "Editbox Text:", "Spinner:", "Spinner Border:", "Spinner Triangle:", "Spinner Text:", "Selector:", "Selector Border:", "Selector Triangle:", "Selector Text:", "Histo:", "Histo Bars:", "Histo Negative:", "Histo Hovering:", "Plot:", "Plot Lines:", "Plot Hightlight:", "Scrollbar:", "Scrollbar Cursor:", "Scrollbar Border:", "Table lines:", "Shelf:", "Shelf Text:", "Shelf Active:", "Shelf Active Text:", "Scaler:", "Tiled Scaler" }; if (control->picker_active) { control->color = color_picker(panel,control,labels[control->current_color], control->color); gui_panel_row(panel, 30, 3); gui_panel_spacing(panel, 1); if (gui_panel_button_text(panel, "ok", GUI_BUTTON_DEFAULT)) { config->colors[control->current_color] = control->color; control->picker_active = gui_false; } if (gui_panel_button_text(panel, "cancel", GUI_BUTTON_DEFAULT)) control->picker_active = gui_false; } else { gui_panel_row(panel, 30, 2); for (i = 0; i < GUI_COLOR_COUNT; ++i) { struct gui_color c = config->colors[i]; gui_panel_label(panel, labels[i], GUI_TEXT_LEFT); if (gui_panel_button_color(panel, c, GUI_BUTTON_DEFAULT)) { if (!control->picker_active) { control->picker_active = gui_true; control->color = config->colors[i]; control->current_color = i; } else continue; } } } }