mirror of
https://github.com/aseprite/aseprite.git
synced 2025-01-30 15:32:38 +00:00
Modified color selector (tabs replaced with buttons).
Mask button now is just one button (you don't need to select tab and then the "mask button").
This commit is contained in:
parent
475398eb4b
commit
d4a0b4b9eb
@ -271,10 +271,9 @@ static void colorbutton_open_tooltip(JWidget widget)
|
|||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
if (colorbutton->tooltip_window == NULL) {
|
if (colorbutton->tooltip_window == NULL) {
|
||||||
window = colorselector_new(false);
|
window = colorselector_new();
|
||||||
window->user_data[0] = widget;
|
window->user_data[0] = widget;
|
||||||
jwidget_add_hook(window, -1, tooltip_window_msg_proc, NULL);
|
jwidget_add_hook(window, -1, tooltip_window_msg_proc, NULL);
|
||||||
window->setText("Select color");
|
|
||||||
|
|
||||||
colorbutton->tooltip_window = window;
|
colorbutton->tooltip_window = window;
|
||||||
}
|
}
|
||||||
@ -306,7 +305,7 @@ static void colorbutton_open_tooltip(JWidget widget)
|
|||||||
JRegion rgn = jregion_new(rc, 1);
|
JRegion rgn = jregion_new(rc, 1);
|
||||||
jrect_free(rc);
|
jrect_free(rc);
|
||||||
|
|
||||||
static_cast<TipWindow*>(window)->set_hotregion(rgn);
|
static_cast<PopupWindow*>(window)->setHotRegion(rgn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <allegro.h>
|
#include <allegro.h>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include "jinete/jinete.h"
|
#include "jinete/jinete.h"
|
||||||
|
|
||||||
@ -32,7 +33,6 @@
|
|||||||
#include "raster/palette.h"
|
#include "raster/palette.h"
|
||||||
#include "widgets/colsel.h"
|
#include "widgets/colsel.h"
|
||||||
#include "widgets/paledit.h"
|
#include "widgets/paledit.h"
|
||||||
#include "widgets/tabs.h"
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MODEL_RGB,
|
MODEL_RGB,
|
||||||
@ -49,12 +49,12 @@ typedef struct Model
|
|||||||
JWidget (*create)();
|
JWidget (*create)();
|
||||||
} Model;
|
} Model;
|
||||||
|
|
||||||
typedef struct ColorSelector
|
struct ColorSelector
|
||||||
{
|
{
|
||||||
color_t color;
|
color_t color;
|
||||||
bool palette_locked;
|
Model* selected_model;
|
||||||
bool editable_palette;
|
std::vector<JWidget> model_buttons;
|
||||||
} ColorSelector;
|
};
|
||||||
|
|
||||||
static JWidget create_rgb_container();
|
static JWidget create_rgb_container();
|
||||||
static JWidget create_hsv_container();
|
static JWidget create_hsv_container();
|
||||||
@ -64,7 +64,6 @@ static JWidget create_mask_container();
|
|||||||
static int colorselector_type();
|
static int colorselector_type();
|
||||||
static ColorSelector* colorselector_data(JWidget widget);
|
static ColorSelector* colorselector_data(JWidget widget);
|
||||||
static bool colorselector_msg_proc(JWidget widget, JMessage msg);
|
static bool colorselector_msg_proc(JWidget widget, JMessage msg);
|
||||||
static void colorselector_update_lock_button(JWidget widget);
|
|
||||||
static void colorselector_set_color2(JWidget widget, color_t color,
|
static void colorselector_set_color2(JWidget widget, color_t color,
|
||||||
bool update_index_entry,
|
bool update_index_entry,
|
||||||
bool select_index_entry,
|
bool select_index_entry,
|
||||||
@ -72,11 +71,9 @@ static void colorselector_set_color2(JWidget widget, color_t color,
|
|||||||
static void colorselector_set_paledit_index(JWidget widget, int index,
|
static void colorselector_set_paledit_index(JWidget widget, int index,
|
||||||
bool select_index_entry);
|
bool select_index_entry);
|
||||||
|
|
||||||
static void select_tab_callback(JWidget tabs, void* data, int button);
|
static bool select_model_hook(JWidget widget, void* data);
|
||||||
static bool slider_change_hook(JWidget widget, void* data);
|
static bool slider_change_hook(JWidget widget, void* data);
|
||||||
static bool button_mask_select_hook(JWidget widget, void* data);
|
|
||||||
static bool paledit_change_hook(JWidget widget, void* data);
|
static bool paledit_change_hook(JWidget widget, void* data);
|
||||||
static bool lock_button_select_hook(JWidget widget, void* data);
|
|
||||||
|
|
||||||
static Model models[] = {
|
static Model models[] = {
|
||||||
{ "RGB", MODEL_RGB, COLOR_TYPE_RGB, create_rgb_container },
|
{ "RGB", MODEL_RGB, COLOR_TYPE_RGB, create_rgb_container },
|
||||||
@ -86,48 +83,48 @@ static Model models[] = {
|
|||||||
{ NULL, 0, 0, NULL }
|
{ NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
Frame* colorselector_new(bool editable_palette)
|
Frame* colorselector_new()
|
||||||
{
|
{
|
||||||
Frame* window = new TipWindow("");
|
Frame* window = new PopupWindow(NULL, false);
|
||||||
JWidget grid1 = jgrid_new(3, false);
|
JWidget grid1 = jgrid_new(2, false);
|
||||||
JWidget grid2 = jgrid_new(5, false);
|
JWidget grid2 = jgrid_new(5, false);
|
||||||
JWidget tabs = tabs_new(select_tab_callback);
|
JWidget models_box = jbox_new(JI_HORIZONTAL);
|
||||||
PalEdit* pal = new PalEdit(false);
|
PalEdit* pal = new PalEdit(false);
|
||||||
JWidget idx = jlabel_new("None");
|
JWidget idx = jlabel_new("None");
|
||||||
JWidget lock = jbutton_new("");
|
|
||||||
JWidget child;
|
JWidget child;
|
||||||
ColorSelector* colorselector = jnew(ColorSelector, 1);
|
ColorSelector* colorselector = new ColorSelector;
|
||||||
Model* m;
|
Model* m;
|
||||||
|
|
||||||
pal->setName("pal");
|
pal->setName("pal");
|
||||||
idx->setName("idx");
|
idx->setName("idx");
|
||||||
lock->setName("lock");
|
|
||||||
tabs->setName("tabs");
|
|
||||||
grid2->setName("grid2");
|
grid2->setName("grid2");
|
||||||
|
|
||||||
/* color selector */
|
/* color selector */
|
||||||
colorselector->color = color_mask();
|
colorselector->color = color_mask();
|
||||||
colorselector->palette_locked = true;
|
colorselector->selected_model = &models[0];
|
||||||
colorselector->editable_palette = editable_palette;
|
|
||||||
|
|
||||||
/* palette */
|
/* palette */
|
||||||
jwidget_add_tooltip_text(pal, _("Use SHIFT or CTRL to select ranges"));
|
jwidget_add_tooltip_text(pal, _("Use SHIFT or CTRL to select ranges"));
|
||||||
|
|
||||||
/* lock button */
|
|
||||||
add_gfxicon_to_button(lock, GFX_BOX_LOCK, JI_CENTER | JI_MIDDLE);
|
|
||||||
|
|
||||||
/* tabs */
|
|
||||||
tabs->setBgColor(window->getBgColor());
|
|
||||||
|
|
||||||
/* data for a better layout */
|
/* data for a better layout */
|
||||||
grid1->child_spacing = 0;
|
grid1->child_spacing = 0;
|
||||||
grid2->border_width.t = 3 * jguiscale();
|
grid2->border_width.t = 3 * jguiscale();
|
||||||
jwidget_expansive(grid2, true);
|
jwidget_expansive(grid2, true);
|
||||||
|
|
||||||
/* append a tab for each color-model */
|
jwidget_noborders(models_box);
|
||||||
for (m=models; m->text!=NULL; ++m) {
|
|
||||||
tabs_append_tab(tabs, _(m->text), (void*)m);
|
|
||||||
|
|
||||||
|
// Append one button for each color-model
|
||||||
|
for (m=models; m->text!=NULL; ++m) {
|
||||||
|
// Create the color-model button to select it
|
||||||
|
JWidget model_button = ji_generic_button_new(_(m->text), JI_RADIO, JI_BUTTON);
|
||||||
|
colorselector->model_buttons.push_back(model_button);
|
||||||
|
setup_mini_look(model_button);
|
||||||
|
HOOK(model_button, JI_SIGNAL_RADIO_CHANGE, select_model_hook, (void*)m);
|
||||||
|
jwidget_add_child(models_box, model_button);
|
||||||
|
|
||||||
|
jradio_set_group(model_button, 1);
|
||||||
|
|
||||||
|
// Create the color-model container
|
||||||
child = (*m->create)();
|
child = (*m->create)();
|
||||||
child->setName(m->text);
|
child->setName(m->text);
|
||||||
jgrid_add_child(grid2, child, 1, 1, JI_HORIZONTAL | JI_TOP);
|
jgrid_add_child(grid2, child, 1, 1, JI_HORIZONTAL | JI_TOP);
|
||||||
@ -135,10 +132,9 @@ Frame* colorselector_new(bool editable_palette)
|
|||||||
|
|
||||||
/* add children */
|
/* add children */
|
||||||
jgrid_add_child(grid2, pal, 1, 1, JI_RIGHT | JI_TOP);
|
jgrid_add_child(grid2, pal, 1, 1, JI_RIGHT | JI_TOP);
|
||||||
jgrid_add_child(grid1, tabs, 1, 1, JI_HORIZONTAL | JI_BOTTOM);
|
jgrid_add_child(grid1, models_box, 1, 1, JI_HORIZONTAL | JI_BOTTOM);
|
||||||
jgrid_add_child(grid1, idx, 1, 1, JI_RIGHT | JI_BOTTOM);
|
jgrid_add_child(grid1, idx, 1, 1, JI_RIGHT | JI_BOTTOM);
|
||||||
jgrid_add_child(grid1, lock, 1, 1, JI_RIGHT | JI_BOTTOM);
|
jgrid_add_child(grid1, grid2, 2, 1, JI_HORIZONTAL | JI_VERTICAL);
|
||||||
jgrid_add_child(grid1, grid2, 3, 1, JI_HORIZONTAL | JI_VERTICAL);
|
|
||||||
jwidget_add_child(window, grid1);
|
jwidget_add_child(window, grid1);
|
||||||
|
|
||||||
/* hooks */
|
/* hooks */
|
||||||
@ -147,10 +143,6 @@ Frame* colorselector_new(bool editable_palette)
|
|||||||
colorselector_msg_proc, colorselector);
|
colorselector_msg_proc, colorselector);
|
||||||
|
|
||||||
HOOK(pal, SIGNAL_PALETTE_EDITOR_CHANGE, paledit_change_hook, 0);
|
HOOK(pal, SIGNAL_PALETTE_EDITOR_CHANGE, paledit_change_hook, 0);
|
||||||
HOOK(lock, JI_SIGNAL_BUTTON_SELECT, lock_button_select_hook, 0);
|
|
||||||
|
|
||||||
/* update the lock button */
|
|
||||||
colorselector_update_lock_button(window);
|
|
||||||
|
|
||||||
jwidget_init_theme(window);
|
jwidget_init_theme(window);
|
||||||
return window;
|
return window;
|
||||||
@ -244,9 +236,7 @@ static JWidget create_gray_container()
|
|||||||
|
|
||||||
static JWidget create_mask_container()
|
static JWidget create_mask_container()
|
||||||
{
|
{
|
||||||
JWidget button = jbutton_new("Mask Color");
|
return jlabel_new("Mask color selected");
|
||||||
HOOK(button, JI_SIGNAL_BUTTON_SELECT, button_mask_select_hook, 0);
|
|
||||||
return button;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int colorselector_type()
|
static int colorselector_type()
|
||||||
@ -270,7 +260,7 @@ static bool colorselector_msg_proc(JWidget widget, JMessage msg)
|
|||||||
switch (msg->type) {
|
switch (msg->type) {
|
||||||
|
|
||||||
case JM_DESTROY:
|
case JM_DESTROY:
|
||||||
jfree(colorselector);
|
delete colorselector;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JM_SIGNAL:
|
case JM_SIGNAL:
|
||||||
@ -291,30 +281,14 @@ static bool colorselector_msg_proc(JWidget widget, JMessage msg)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void colorselector_update_lock_button(JWidget widget)
|
|
||||||
{
|
|
||||||
ColorSelector* colorselector = colorselector_data(widget);
|
|
||||||
JWidget lock = jwidget_find_name(widget, "lock");
|
|
||||||
|
|
||||||
if (colorselector->palette_locked) {
|
|
||||||
set_gfxicon_in_button(lock, GFX_BOX_LOCK);
|
|
||||||
jwidget_add_tooltip_text(lock, _("Press here to edit the palette"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
set_gfxicon_in_button(lock, GFX_BOX_UNLOCK);
|
|
||||||
jwidget_add_tooltip_text(lock, _("Press here to lock the palette"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void colorselector_set_color2(JWidget widget, color_t color,
|
static void colorselector_set_color2(JWidget widget, color_t color,
|
||||||
bool update_index_entry,
|
bool update_index_entry,
|
||||||
bool select_index_entry,
|
bool select_index_entry,
|
||||||
Model* exclude_this_model)
|
Model* exclude_this_model)
|
||||||
{
|
{
|
||||||
ColorSelector* colorselector = colorselector_data(widget);
|
ColorSelector* colorselector = colorselector_data(widget);
|
||||||
JWidget tabs = jwidget_find_name(widget, "tabs");
|
|
||||||
int imgtype = app_get_current_image_type();
|
int imgtype = app_get_current_image_type();
|
||||||
Model* m = reinterpret_cast<Model*>(tabs_get_selected_tab(tabs));
|
Model* m = colorselector->selected_model;
|
||||||
JWidget rgb_rslider = jwidget_find_name(widget, "rgb_r");
|
JWidget rgb_rslider = jwidget_find_name(widget, "rgb_r");
|
||||||
JWidget rgb_gslider = jwidget_find_name(widget, "rgb_g");
|
JWidget rgb_gslider = jwidget_find_name(widget, "rgb_g");
|
||||||
JWidget rgb_bslider = jwidget_find_name(widget, "rgb_b");
|
JWidget rgb_bslider = jwidget_find_name(widget, "rgb_b");
|
||||||
@ -362,8 +336,12 @@ static void colorselector_set_color2(JWidget widget, color_t color,
|
|||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
tabs_select_tab(tabs, m);
|
// // Select the RGB button
|
||||||
select_tab_callback(tabs, m, 1);
|
// jwidget_select(colorselector->rgb_button);
|
||||||
|
jwidget_select(colorselector->model_buttons[m->model]);
|
||||||
|
|
||||||
|
// Call the hook
|
||||||
|
select_model_hook(widget, (void*)m);
|
||||||
|
|
||||||
if (update_index_entry) {
|
if (update_index_entry) {
|
||||||
switch (color_type(color)) {
|
switch (color_type(color)) {
|
||||||
@ -393,7 +371,6 @@ static void colorselector_set_paledit_index(JWidget widget, int index, bool sele
|
|||||||
ColorSelector* colorselector = colorselector_data(widget);
|
ColorSelector* colorselector = colorselector_data(widget);
|
||||||
PalEdit* pal = static_cast<PalEdit*>(widget->findChild("pal"));
|
PalEdit* pal = static_cast<PalEdit*>(widget->findChild("pal"));
|
||||||
Widget* idx = widget->findChild("idx");
|
Widget* idx = widget->findChild("idx");
|
||||||
Widget* lock = widget->findChild("lock");
|
|
||||||
char buf[256];
|
char buf[256];
|
||||||
|
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
@ -401,32 +378,28 @@ static void colorselector_set_paledit_index(JWidget widget, int index, bool sele
|
|||||||
pal->selectColor(index);
|
pal->selectColor(index);
|
||||||
|
|
||||||
sprintf(buf, "Index=%d", index);
|
sprintf(buf, "Index=%d", index);
|
||||||
|
|
||||||
if (colorselector->editable_palette)
|
|
||||||
jwidget_enable(lock);
|
|
||||||
else
|
|
||||||
jwidget_disable(lock);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (select_index_entry)
|
if (select_index_entry)
|
||||||
pal->selectRange(-1, -1, PALETTE_EDITOR_RANGE_NONE);
|
pal->selectRange(-1, -1, PALETTE_EDITOR_RANGE_NONE);
|
||||||
|
|
||||||
sprintf(buf, "None");
|
sprintf(buf, "None");
|
||||||
|
|
||||||
jwidget_disable(lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
idx->setText(buf);
|
idx->setText(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void select_tab_callback(JWidget tabs, void* data, int button)
|
static bool select_model_hook(JWidget widget, void* data)
|
||||||
{
|
{
|
||||||
Frame* window = static_cast<Frame*>(tabs->getRoot());
|
Frame* window = static_cast<Frame*>(widget->getRoot());
|
||||||
|
ColorSelector* colorselector = colorselector_data(window);
|
||||||
Model* selected_model = (Model*)data;
|
Model* selected_model = (Model*)data;
|
||||||
JWidget child;
|
JWidget child;
|
||||||
Model* m;
|
Model* m;
|
||||||
bool something_change = false;
|
bool something_change = false;
|
||||||
|
|
||||||
|
colorselector->selected_model = selected_model;
|
||||||
|
|
||||||
for (m=models; m->text!=NULL; ++m) {
|
for (m=models; m->text!=NULL; ++m) {
|
||||||
child = jwidget_find_name(window, m->text);
|
child = jwidget_find_name(window, m->text);
|
||||||
|
|
||||||
@ -444,17 +417,25 @@ static void select_tab_callback(JWidget tabs, void* data, int button)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (something_change)
|
if (something_change) {
|
||||||
|
// Select the mask color
|
||||||
|
if (selected_model->model == MODEL_MASK) {
|
||||||
|
colorselector_set_color2(window, color_mask(), false, false, NULL);
|
||||||
|
jwidget_emit_signal(window, SIGNAL_COLORSELECTOR_COLOR_CHANGED);
|
||||||
|
}
|
||||||
|
|
||||||
jwidget_relayout(window);
|
jwidget_relayout(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool slider_change_hook(JWidget widget, void* data)
|
static bool slider_change_hook(JWidget widget, void* data)
|
||||||
{
|
{
|
||||||
Frame* window = static_cast<Frame*>(widget->getRoot());
|
Frame* window = static_cast<Frame*>(widget->getRoot());
|
||||||
ColorSelector* colorselector = colorselector_data(window);
|
ColorSelector* colorselector = colorselector_data(window);
|
||||||
JWidget tabs = jwidget_find_name(window, "tabs");
|
|
||||||
PalEdit* pal = static_cast<PalEdit*>(window->findChild("pal"));
|
PalEdit* pal = static_cast<PalEdit*>(window->findChild("pal"));
|
||||||
Model* m = reinterpret_cast<Model*>(tabs_get_selected_tab(tabs));
|
Model* m = colorselector->selected_model;
|
||||||
color_t color = colorselector->color;
|
color_t color = colorselector->color;
|
||||||
int i, r, g, b;
|
int i, r, g, b;
|
||||||
|
|
||||||
@ -491,42 +472,16 @@ static bool slider_change_hook(JWidget widget, void* data)
|
|||||||
g = color_get_green(color);
|
g = color_get_green(color);
|
||||||
b = color_get_blue (color);
|
b = color_get_blue (color);
|
||||||
|
|
||||||
/* if the palette is locked then we have to search for the closest
|
// Search for the closest color to the RGB values
|
||||||
color to the RGB values */
|
i = get_current_palette()->findBestfit(r, g, b);
|
||||||
if (colorselector->palette_locked) {
|
if (i >= 0 && i < 256)
|
||||||
i = get_current_palette()->findBestfit(r, g, b);
|
colorselector_set_paledit_index(window, i, true);
|
||||||
if (i >= 0 && i < 256)
|
|
||||||
colorselector_set_paledit_index(window, i, true);
|
|
||||||
}
|
|
||||||
/* the palette is unlocked, we have to modify the select entries */
|
|
||||||
else {
|
|
||||||
bool array[256];
|
|
||||||
|
|
||||||
pal->getSelectedEntries(array);
|
|
||||||
for (i=0; i<256; ++i)
|
|
||||||
if (array[i])
|
|
||||||
set_current_color(i, r, g, b);
|
|
||||||
|
|
||||||
jwidget_dirty(pal);
|
|
||||||
|
|
||||||
i = pal->get2ndColor();
|
|
||||||
if (i >= 0)
|
|
||||||
color = color_index(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
colorselector_set_color2(window, color, false, false, m);
|
colorselector_set_color2(window, color, false, false, m);
|
||||||
jwidget_emit_signal(window, SIGNAL_COLORSELECTOR_COLOR_CHANGED);
|
jwidget_emit_signal(window, SIGNAL_COLORSELECTOR_COLOR_CHANGED);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool button_mask_select_hook(JWidget widget, void* data)
|
|
||||||
{
|
|
||||||
Frame* window = static_cast<Frame*>(widget->getRoot());
|
|
||||||
colorselector_set_color(window, color_mask());
|
|
||||||
jwidget_emit_signal(window, SIGNAL_COLORSELECTOR_COLOR_CHANGED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool paledit_change_hook(Widget* widget, void* data)
|
static bool paledit_change_hook(Widget* widget, void* data)
|
||||||
{
|
{
|
||||||
Frame* window = static_cast<Frame*>(widget->getRoot());
|
Frame* window = static_cast<Frame*>(widget->getRoot());
|
||||||
@ -546,13 +501,3 @@ static bool paledit_change_hook(Widget* widget, void* data)
|
|||||||
jwidget_emit_signal(window, SIGNAL_COLORSELECTOR_COLOR_CHANGED);
|
jwidget_emit_signal(window, SIGNAL_COLORSELECTOR_COLOR_CHANGED);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool lock_button_select_hook(JWidget widget, void* data)
|
|
||||||
{
|
|
||||||
Frame* window = static_cast<Frame*>(widget->getRoot());
|
|
||||||
ColorSelector* colorselector = colorselector_data(window);
|
|
||||||
|
|
||||||
colorselector->palette_locked = !colorselector->palette_locked;
|
|
||||||
colorselector_update_lock_button(window);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
@ -28,7 +28,7 @@ class Frame;
|
|||||||
// TODO use some JI_SIGNAL_USER
|
// TODO use some JI_SIGNAL_USER
|
||||||
#define SIGNAL_COLORSELECTOR_COLOR_CHANGED 0x10009
|
#define SIGNAL_COLORSELECTOR_COLOR_CHANGED 0x10009
|
||||||
|
|
||||||
Frame* colorselector_new(bool editable_palette);
|
Frame* colorselector_new();
|
||||||
|
|
||||||
void colorselector_set_color(JWidget widget, color_t color);
|
void colorselector_set_color(JWidget widget, color_t color);
|
||||||
color_t colorselector_get_color(JWidget widget);
|
color_t colorselector_get_color(JWidget widget);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user