- colorchooser: rework tis gui-element; ...

* use OFFSET defines
* rename some variables
* use paintBoxFrame() instead of background-icon; this avoids scaling
  issues on higher resolutions; scaled icons are ugly
This commit is contained in:
vanhofen
2017-09-14 21:37:44 +02:00
committed by Jacek Jendrzej
parent 10d236fd16
commit 442f1adff0
2 changed files with 181 additions and 159 deletions

View File

@@ -1,32 +1,22 @@
/* /*
Neutrino-GUI - DBoxII-Project Based up Neutrino-GUI - Tuxbox-Project
Copyright (C) 2001 Steffen Hehn 'McClean' Copyright (C) 2001 Steffen Hehn 'McClean'
Homepage: http://dbox.cyberphoria.org/
Kommentar:
Diese GUI wurde von Grund auf neu programmiert und sollte nun vom
Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert
auf der Client-Server Idee, diese GUI ist also von der direkten DBox-
Steuerung getrennt. Diese wird dann von Daemons uebernommen.
License: GPL License: GPL
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or
it under the terms of the GNU General Public License as published by modify it under the terms of the GNU General Public
the Free Software Foundation; either version 2 of the License, or License as published by the Free Software Foundation; either
(at your option) any later version. version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU General Public License for more details. General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program. If not, see <http://www.gnu.org/licenses/>.
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@@ -46,55 +36,67 @@
#include <gui/widget/msgbox.h> #include <gui/widget/msgbox.h>
#include <gui/widget/icons.h> #include <gui/widget/icons.h>
static const char * const icon_names[VALUES] =
#define VALUE_R 0 {
#define VALUE_G 1
#define VALUE_B 2
#define VALUE_ALPHA 3
static const char * const iconnames[4] = {
NEUTRINO_ICON_VOLUMESLIDER2RED, NEUTRINO_ICON_VOLUMESLIDER2RED,
NEUTRINO_ICON_VOLUMESLIDER2GREEN, NEUTRINO_ICON_VOLUMESLIDER2GREEN,
NEUTRINO_ICON_VOLUMESLIDER2BLUE, NEUTRINO_ICON_VOLUMESLIDER2BLUE,
NEUTRINO_ICON_VOLUMESLIDER2ALPHA NEUTRINO_ICON_VOLUMESLIDER2ALPHA
}; };
static const neutrino_locale_t colorchooser_names[4] = static const neutrino_locale_t colorchooser_names[VALUES] =
{ {
LOCALE_COLORCHOOSER_RED , LOCALE_COLORCHOOSER_RED,
LOCALE_COLORCHOOSER_GREEN, LOCALE_COLORCHOOSER_GREEN,
LOCALE_COLORCHOOSER_BLUE , LOCALE_COLORCHOOSER_BLUE,
LOCALE_COLORCHOOSER_ALPHA LOCALE_COLORCHOOSER_ALPHA
}; };
CColorChooser::CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* Alpha, CChangeObserver* Observer) // UTF-8 CColorChooser::CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* A, CChangeObserver* Observer)
{ {
frameBuffer = CFrameBuffer::getInstance(); frameBuffer = CFrameBuffer::getInstance();
hheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight(); header_height = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight();
mheight = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); item_height = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight();
font_info = SNeutrinoSettings::FONT_TYPE_MENU;
observer = Observer; observer = Observer;
name = Name; name = Name;
//calculate max width of LOCALS // calculate max width of locals
offset = 0; text_width = 0;
for (int i = 0; i < 4; i++) { for (int i = 0; i < VALUES; i++)
int tmpoffset = g_Font[font_info]->getRenderWidth(g_Locale->getText(colorchooser_names[i])); {
if (tmpoffset > offset) { int tmp_text_width = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(colorchooser_names[i]));
offset = tmpoffset; if (tmp_text_width > text_width)
} text_width = tmp_text_width;
} }
width = w_max((offset + (162 + mheight*4 + 10)), 0); // assuming all sliders have same dimensions
height = h_max(hheight+ mheight* 4, 0); int dummy;
frameBuffer->getIconSize(NEUTRINO_ICON_VOLUMESLIDER2ALPHA, &slider_width, &dummy);
x = frameBuffer->getScreenX() + ((frameBuffer->getScreenWidth()-width) >> 1); bar_width = frameBuffer->scale2Res(150);
y = frameBuffer->getScreenY() + ((frameBuffer->getScreenHeight()-height)>>1); /*
We have a half slider_width before and after the bar
to get the middle of the slider at the point of choise
*/
bar_offset = slider_width/2;
bar_full = bar_width + slider_width;
value[VALUE_R] = R; preview_w = VALUES*item_height;
value[VALUE_G] = G; preview_h = VALUES*item_height;
value[VALUE_B] = B;
value[VALUE_ALPHA] = Alpha; width = w_max((text_width + bar_full + preview_w + 4*OFFSET_INNER_MID), 0);
height = h_max((header_height + VALUES*item_height + 2*OFFSET_INNER_SMALL), 0);
x = getScreenStartX(width);
y = getScreenStartY(height);
preview_x = x + text_width + bar_full + 3*OFFSET_INNER_MID;
preview_y = y + header_height + OFFSET_INNER_SMALL;
value[VALUE_R] = R;
value[VALUE_G] = G;
value[VALUE_B] = B;
value[VALUE_A] = A;
chooser_gradient = gradient_none; chooser_gradient = gradient_none;
} }
@@ -102,13 +104,10 @@ CColorChooser::CColorChooser(const neutrino_locale_t Name, unsigned char *R, uns
void CColorChooser::setColor() void CColorChooser::setColor()
{ {
fb_pixel_t col = getColor(); fb_pixel_t col = getColor();
int x_col = x+offset+160;
int y_col = y+hheight+5;
int w_col = mheight*4;
int h_col = mheight*4-10;
if ((g_settings.theme.menu_Head_gradient) && ((chooser_gradient == gradient_head_body) || (chooser_gradient == gradient_head_text))) { if ((g_settings.theme.menu_Head_gradient) && ((chooser_gradient == gradient_head_body) || (chooser_gradient == gradient_head_text)))
CComponentsHeader header(x_col, y_col+((h_col-hheight)/2), w_col, hheight, "Head"); {
CComponentsHeader header(preview_x, preview_y+((preview_h-header_height)/2), preview_w, header_height, "Head");
if (chooser_gradient == gradient_head_body) if (chooser_gradient == gradient_head_body)
header.setColorBody(col); header.setColorBody(col);
else if (chooser_gradient == gradient_head_text) else if (chooser_gradient == gradient_head_text)
@@ -116,15 +115,20 @@ void CColorChooser::setColor()
header.paint(CC_SAVE_SCREEN_NO); header.paint(CC_SAVE_SCREEN_NO);
} }
else else
frameBuffer->paintBoxRel(x_col+2, y_col+2, w_col-4 , h_col-4, col); {
CComponentsShapeSquare preview(preview_x, preview_y, preview_w, preview_h, NULL, false, COL_FRAME_PLUS_0, col);
preview.setFrameThickness(1);
preview.setCorner(RADIUS_SMALL);
preview.paint(false);
}
} }
fb_pixel_t CColorChooser::getColor() fb_pixel_t CColorChooser::getColor()
{ {
int color = convertSetupColor2RGB(*(value[VALUE_R]), *(value[VALUE_G]), *(value[VALUE_B])); int color = convertSetupColor2RGB(*(value[VALUE_R]), *(value[VALUE_G]), *(value[VALUE_B]));
int tAlpha = (value[VALUE_ALPHA]) ? (convertSetupAlpha2Alpha(*(value[VALUE_ALPHA]))) : 0xFF; int alpha = (value[VALUE_A]) ? (convertSetupAlpha2Alpha(*(value[VALUE_A]))) : 0xFF;
return (((tAlpha << 24) & 0xFF000000) | color); return (((alpha << 24) & 0xFF000000) | color);
} }
int CColorChooser::exec(CMenuTarget* parent, const std::string &) int CColorChooser::exec(CMenuTarget* parent, const std::string &)
@@ -136,91 +140,94 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
if (parent) if (parent)
parent->hide(); parent->hide();
unsigned char r_alt= *value[VALUE_R]; unsigned char r_alt = *value[VALUE_R];
unsigned char g_alt= *value[VALUE_G]; unsigned char g_alt = *value[VALUE_G];
unsigned char b_alt= *value[VALUE_B]; unsigned char b_alt = *value[VALUE_B];
unsigned char a_null = 0; unsigned char a_null = 0;
unsigned char a_alt = (value[VALUE_ALPHA]) ? (*(value[VALUE_ALPHA])) : a_null; unsigned char a_alt = (value[VALUE_A]) ? (*(value[VALUE_A])) : a_null;
paint(); paint();
setColor(); setColor();
int selected = 0; int selected = 0;
uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
::TIMING_MENU]);
bool loop=true; bool loop=true;
while (loop) { while (loop) {
g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true); g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd, true);
if ( msg <= CRCInput::RC_MaxRC ) if ( msg <= CRCInput::RC_MaxRC )
timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]);
::TIMING_MENU]);
int val = (*value[selected]); int val = (*value[selected]);
switch ( msg ) { switch ( msg ) {
case CRCInput::RC_down: case CRCInput::RC_down:
{
if (selected < ((value[VALUE_A]) ? 3 : 2))
{ {
if (selected < ((value[VALUE_ALPHA]) ? 3 : 2)) paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
{ selected++;
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false); paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
selected++;
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
} else {
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false);
selected = 0;
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
}
break;
} }
else
{
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
selected = 0;
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
}
break;
}
case CRCInput::RC_up: case CRCInput::RC_up:
{
if (selected > 0)
{ {
if (selected > 0) paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
{ selected--;
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false); paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
selected--;
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
} else {
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], false);
selected = ((value[VALUE_ALPHA]) ? 3 : 2);
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true);
}
break;
} }
else
{
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], false);
selected = ((value[VALUE_A]) ? 3 : 2);
paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
}
break;
}
case CRCInput::RC_right: case CRCInput::RC_right:
{
if (val < 100)
{ {
if (val < 100) if (val < 98)
{ val += 2;
if (val < 98) else
val += 2; val = 100;
else (*value[selected]) = (uint8_t)val;
val = 100;
(*value[selected]) = (uint8_t)val;
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true); paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
setColor(); setColor();
}
break;
} }
break;
}
case CRCInput::RC_left: case CRCInput::RC_left:
{
if (val > 0)
{ {
if (val > 0) if (val > 2)
{ val -= 2;
if (val > 2) else
val -= 2; val = 0;
else (*value[selected]) = (uint8_t)val;
val = 0;
(*value[selected]) = (uint8_t)val;
paintSlider(x + 10, y + hheight + mheight * selected, value[selected], colorchooser_names[selected], iconnames[selected], true); paintSlider(x, y + header_height + OFFSET_INNER_SMALL + item_height * selected, value[selected], colorchooser_names[selected], icon_names[selected], true);
setColor(); setColor();
}
break;
} }
break;
}
case CRCInput::RC_home: case CRCInput::RC_home:
if (((*value[VALUE_R] != r_alt) || (*value[VALUE_G] != g_alt) || (*value[VALUE_B] != b_alt) || ((value[VALUE_ALPHA]) && (*(value[VALUE_ALPHA]) != a_alt))) && {
if (((*value[VALUE_R] != r_alt) || (*value[VALUE_G] != g_alt) || (*value[VALUE_B] != b_alt) || ((value[VALUE_A]) && (*(value[VALUE_A]) != a_alt))) &&
(ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel)) (ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel))
break; break;
@@ -228,15 +235,19 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
*value[VALUE_R] = r_alt; *value[VALUE_R] = r_alt;
*value[VALUE_G] = g_alt; *value[VALUE_G] = g_alt;
*value[VALUE_B] = b_alt; *value[VALUE_B] = b_alt;
if (value[VALUE_ALPHA]) if (value[VALUE_A])
*value[VALUE_ALPHA] = a_alt; *value[VALUE_A] = a_alt;
loop = false; loop = false;
break; break;
}
case CRCInput::RC_timeout: case CRCInput::RC_timeout:
case CRCInput::RC_ok: case CRCInput::RC_ok:
{
loop = false; loop = false;
break; break;
}
default: default:
{
if (CNeutrinoApp::getInstance()->listModeKey(msg)) if (CNeutrinoApp::getInstance()->listModeKey(msg))
{ {
break; break;
@@ -246,12 +257,13 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
loop = false; loop = false;
res = menu_return::RETURN_EXIT_ALL; res = menu_return::RETURN_EXIT_ALL;
} }
}
} }
} }
hide(); hide();
if(observer) if (observer)
observer->changeNotify(name, NULL); observer->changeNotify(name, NULL);
return res; return res;
@@ -259,33 +271,37 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &)
void CColorChooser::hide() void CColorChooser::hide()
{ {
frameBuffer->paintBackgroundBoxRel(x,y, width,height); frameBuffer->paintBackgroundBoxRel(x, y, width, height);
} }
void CColorChooser::paint() void CColorChooser::paint()
{ {
CComponentsHeader header(x, y, width, hheight, g_Locale->getText(name)); CComponentsHeader header(x, y, width, header_height, g_Locale->getText(name));
header.enableShadow(CC_SHADOW_RIGHT | CC_SHADOW_CORNER_TOP_RIGHT | CC_SHADOW_CORNER_BOTTOM_RIGHT);
header.paint(CC_SAVE_SCREEN_NO); header.paint(CC_SAVE_SCREEN_NO);
frameBuffer->paintBoxRel(x,y+hheight, width,height-hheight, COL_MENUCONTENT_PLUS_0, RADIUS_MID, CORNER_BOTTOM);//round PaintBoxRel(x, y + header_height, width, height - header_height, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM, CC_SHADOW_ON);
for (int i = 0; i < 4; i++) for (int i = 0; i < VALUES; i++)
paintSlider(x + 10, y + hheight + mheight * i, value[i], colorchooser_names[i], iconnames[i], (i == 0)); paintSlider(x, y + header_height + OFFSET_INNER_SMALL + i*item_height, value[i], colorchooser_names[i], icon_names[i], (i == 0));
if ((!g_settings.theme.menu_Head_gradient) || ((chooser_gradient != gradient_head_body) && (chooser_gradient != gradient_head_text))) {
//color preview
frameBuffer->paintBoxRel(x+offset+160,y+hheight+5, mheight*4, mheight*4-10, COL_MENUHEAD_PLUS_0);
frameBuffer->paintBoxRel(x+offset+162,y+hheight+2+5, mheight*4-4 ,mheight*4-4-10, 254);
}
} }
void CColorChooser::paintSlider(int px, int py, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected) void CColorChooser::paintSlider(int px, int py, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected)
{ {
if (!spos) if (!spos)
return; return;
frameBuffer->paintBoxRel(px+offset+10,py,120,mheight, COL_MENUCONTENT_PLUS_0);
frameBuffer->paintIcon(NEUTRINO_ICON_VOLUMEBODY,px+offset+10,py+2+mheight/4);
frameBuffer->paintIcon(selected ? iconname : NEUTRINO_ICON_VOLUMESLIDER2,px+offset+13+(*spos),py+mheight/4);
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(px,py+mheight, width, g_Locale->getText(text), COL_MENUCONTENT_TEXT); // clear area
frameBuffer->paintBoxRel(px + text_width + 2*OFFSET_INNER_MID, py, bar_full, item_height, COL_MENUCONTENT_PLUS_0);
// paint bar
/*
NEUTRINO_ICON_VOLUMEBODY should be scaled to bar_width.
So long we paint a simple frame. This is more save on higher resolutions.
*/
//frameBuffer->paintIcon(NEUTRINO_ICON_VOLUMEBODY, px + text_width + 2*OFFSET_INNER_MID + bar_offset, py, item_height);
frameBuffer->paintBoxFrame(px + text_width + 2*OFFSET_INNER_MID + bar_offset, py + item_height/3, bar_width, item_height/3, 1, COL_FRAME_PLUS_0);
// paint slider
frameBuffer->paintIcon(selected ? iconname : NEUTRINO_ICON_VOLUMESLIDER2, px + text_width + 2*OFFSET_INNER_MID + ((*spos)*bar_width / 100), py, item_height);
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(px + OFFSET_INNER_MID, py + item_height, text_width, g_Locale->getText(text), COL_MENUCONTENT_TEXT);
} }

View File

@@ -1,32 +1,22 @@
/* /*
Neutrino-GUI - DBoxII-Project Based up Neutrino-GUI - Tuxbox-Project
Copyright (C) 2001 Steffen Hehn 'McClean' Copyright (C) 2001 Steffen Hehn 'McClean'
Homepage: http://dbox.cyberphoria.org/
Kommentar:
Diese GUI wurde von Grund auf neu programmiert und sollte nun vom
Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert
auf der Client-Server Idee, diese GUI ist also von der direkten DBox-
Steuerung getrennt. Diese wird dann von Daemons uebernommen.
License: GPL License: GPL
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or
it under the terms of the GNU General Public License as published by modify it under the terms of the GNU General Public
the Free Software Foundation; either version 2 of the License, or License as published by the Free Software Foundation; either
(at your option) any later version. version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU General Public License for more details. General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program. If not, see <http://www.gnu.org/licenses/>.
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
@@ -38,21 +28,40 @@
#include <string> #include <string>
enum {
VALUE_R = 0, // red
VALUE_G = 1, // green
VALUE_B = 2, // blue
VALUE_A = 3, // alpha
VALUES
};
class CFrameBuffer; class CFrameBuffer;
class CColorChooser : public CMenuTarget class CColorChooser : public CMenuTarget
{ {
private: private:
CFrameBuffer *frameBuffer; CFrameBuffer *frameBuffer;
int x; int x;
int y; int y;
int width; int width;
int height; int height;
int hheight,mheight; // head/menu font height int header_height;
int offset; int item_height;
int font_info; int text_width;
int bar_width;
int bar_offset;
int bar_full;
int slider_width;
int slider_step;
int preview_x;
int preview_y;
int preview_w;
int preview_h;
int chooser_gradient; int chooser_gradient;
unsigned char * value[4]; // r, g, b, alpha unsigned char * value[VALUES];
neutrino_locale_t name; neutrino_locale_t name;
@@ -63,8 +72,7 @@ class CColorChooser : public CMenuTarget
void paintSlider(int x, int y, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected); void paintSlider(int x, int y, unsigned char *spos, const neutrino_locale_t text, const char * const iconname, const bool selected);
public: public:
CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* A, CChangeObserver* Observer = NULL);
CColorChooser(const neutrino_locale_t Name, unsigned char *R, unsigned char *G, unsigned char *B, unsigned char* Alpha, CChangeObserver* Observer = NULL); // UTF-8
void hide(); void hide();
int exec(CMenuTarget* parent, const std::string & actionKey); int exec(CMenuTarget* parent, const std::string & actionKey);
@@ -78,6 +86,4 @@ class CColorChooser : public CMenuTarget
void setGradient(int gradient = gradient_none) { chooser_gradient = gradient; }; void setGradient(int gradient = gradient_none) { chooser_gradient = gradient; };
}; };
#endif #endif