cc: rework color handling for select and focus status

This commit is contained in:
2020-12-07 20:33:52 +01:00
parent 26030ee914
commit c88a6ff7b3
26 changed files with 168 additions and 86 deletions

View File

@@ -51,7 +51,7 @@ void CComponentsDetailsLine::initVarDline( const int& x_pos, const int& y_pos_to
x = x_pos; x = x_pos;
y = y_pos_top; y = y_pos_top;
col_shadow = color_shadow; col_shadow = color_shadow;
col_body = color_line; col_body_std = color_line;
shadow_w = 1; shadow_w = 1;
@@ -91,6 +91,9 @@ CComponentsDetailsLine::~CComponentsDetailsLine()
void CComponentsDetailsLine::paint(const bool &do_save_bg) void CComponentsDetailsLine::paint(const bool &do_save_bg)
{ {
hide(); hide();
col_body = col_body_std;
if (hasChanges()) if (hasChanges())
clearFbData(); clearFbData();
@@ -137,6 +140,12 @@ void CComponentsDetailsLine::paint(const bool &do_save_bg)
//so you can ensure correct applied system colors in relevant objects with unchanged instances. //so you can ensure correct applied system colors in relevant objects with unchanged instances.
void CComponentsDetailsLine::syncSysColors() void CComponentsDetailsLine::syncSysColors()
{ {
col_body = COL_FRAME_PLUS_0; col_body_std = COL_FRAME_PLUS_0;
col_shadow = COL_SHADOW_PLUS_0; col_shadow = COL_SHADOW_PLUS_0;
} }
void CComponentsDetailsLine::setColors(const fb_pixel_t &color_line, const fb_pixel_t &color_shadow)
{
col_body_std = color_line;
col_shadow = color_shadow;
}

View File

@@ -61,7 +61,7 @@ class CComponentsDetailsLine : public CComponents
virtual~CComponentsDetailsLine(); virtual~CComponentsDetailsLine();
///set colors ///set colors
void setColors(fb_pixel_t color_line, fb_pixel_t color_shadow){col_body = color_line; col_shadow = color_shadow;}; void setColors(const fb_pixel_t &color_line, const fb_pixel_t &color_shadow);
///set colors with system settings ///set colors with system settings
void syncSysColors(); void syncSysColors();
///set property: lowest y position ///set property: lowest y position

View File

@@ -43,12 +43,14 @@ CCDraw::CCDraw() : COSDFader(g_settings.theme.menu_Content_alpha)
height = height_old = CC_HEIGHT_MIN; height = height_old = CC_HEIGHT_MIN;
width = width_old = CC_WIDTH_MIN; width = width_old = CC_WIDTH_MIN;
col_body = col_body_old = COL_MENUCONTENT_PLUS_0; col_body_std = COL_MENUCONTENT_PLUS_0;
col_body_sel = COL_MENUCONTENTSELECTED_PLUS_0;
col_body_sec = COL_MENUCONTENTINACTIVE_PLUS_0;
col_shadow = col_shadow_old = COL_SHADOW_PLUS_0; col_shadow = col_shadow_old = COL_SHADOW_PLUS_0;
col_frame = col_frame_old = COL_FRAME_PLUS_0; col_frame = col_frame_old = COL_FRAME_PLUS_0;
col_shadow_clean = 0; col_shadow_clean = 0;
cc_body_image = cc_body_image_old = std::string(); cc_bg_image = cc_bg_image_old = cc_bg_sel_image = cc_bg_sec_image = "";
fr_thickness = fr_thickness_old = 0; fr_thickness = fr_thickness_old = 0;
@@ -184,9 +186,9 @@ bool CCDraw::applyColChanges()
cc_body_gradient_direction_old = cc_body_gradient_direction; cc_body_gradient_direction_old = cc_body_gradient_direction;
ret = true; ret = true;
} }
if (cc_body_image != cc_body_image_old){ if (cc_bg_image != cc_bg_image_old){
dprintf(DEBUG_INFO, "\033[33m[CCDraw]\t[%s - %d], col changes cc_body_image %s != cc_body_image_old %s...\033[0m\n", __func__, __LINE__, cc_body_image.c_str(), cc_body_image_old.c_str()); dprintf(DEBUG_INFO, "\033[33m[CCDraw]\t[%s - %d], col changes cc_bg_image %s != cc_bg_image_old %s...\033[0m\n", __func__, __LINE__, cc_bg_image.c_str(), cc_bg_image_old.c_str());
cc_body_image_old = cc_body_image; cc_bg_image_old = cc_bg_image;
ret = true; ret = true;
} }
@@ -550,7 +552,7 @@ void CCDraw::paintFbItems(const bool &do_save_bg)
/* Paint all fb relevant basic parts (shadow, frame and body) /* Paint all fb relevant basic parts (shadow, frame and body)
* with all specified properties, paint_bg must be enabled. * with all specified properties, paint_bg must be enabled.
*/ */
if (cc_enable_frame && cc_body_image.empty()){ if (cc_enable_frame && cc_bg_image.empty()){
if (fbtype == CC_FBDATA_TYPE_FRAME) { if (fbtype == CC_FBDATA_TYPE_FRAME) {
if (v_fbdata.at(i).frame_thickness > 0 && cc_allow_paint){ if (v_fbdata.at(i).frame_thickness > 0 && cc_allow_paint){
frameBuffer->paintBoxFrame(v_fbdata.at(i).x, v_fbdata.at(i).y, v_fbdata.at(i).dx, v_fbdata.at(i).dy, v_fbdata.at(i).frame_thickness, v_fbdata.at(i).color, v_fbdata.at(i).r, v_fbdata.at(i).rtype); frameBuffer->paintBoxFrame(v_fbdata.at(i).x, v_fbdata.at(i).y, v_fbdata.at(i).dx, v_fbdata.at(i).dy, v_fbdata.at(i).frame_thickness, v_fbdata.at(i).color, v_fbdata.at(i).r, v_fbdata.at(i).rtype);
@@ -616,8 +618,8 @@ void CCDraw::paintFbItems(const bool &do_save_bg)
* we try to render an image instead to render default box. * we try to render an image instead to render default box.
* Paint of background image is prefered, next steps will be ignored! * Paint of background image is prefered, next steps will be ignored!
*/ */
if (!cc_body_image.empty()){ if (!cc_bg_image.empty()){
if (g_PicViewer->DisplayImage(cc_body_image, v_fbdata.at(i).x, v_fbdata.at(i).y, v_fbdata.at(i).dx, v_fbdata.at(i).dy, CFrameBuffer::TM_NONE)){ if (g_PicViewer->DisplayImage(cc_bg_image, v_fbdata.at(i).x, v_fbdata.at(i).y, v_fbdata.at(i).dx, v_fbdata.at(i).dy, CFrameBuffer::TM_NONE)){
// catch screen and store into paint cache // catch screen and store into paint cache
v_fbdata.at(i).pixbuf = getScreen(v_fbdata.at(i).x, v_fbdata.at(i).y, v_fbdata.at(i).dx, v_fbdata.at(i).dy); v_fbdata.at(i).pixbuf = getScreen(v_fbdata.at(i).x, v_fbdata.at(i).y, v_fbdata.at(i).dx, v_fbdata.at(i).dy);
v_fbdata.at(i).is_painted = true; v_fbdata.at(i).is_painted = true;
@@ -631,15 +633,15 @@ void CCDraw::paintFbItems(const bool &do_save_bg)
// On failed image paint, write this into log and reset image name. // On failed image paint, write this into log and reset image name.
if (!v_fbdata.at(i).is_painted){ if (!v_fbdata.at(i).is_painted){
dprintf(DEBUG_NORMAL, "\033[33m\[CCDraw]\t[%s - %d], WARNING: bg image %s defined, but paint failed,\nfallback to default rendering...\033[0m\n", __func__, __LINE__, cc_body_image.c_str()); dprintf(DEBUG_NORMAL, "\033[33m\[CCDraw]\t[%s - %d], WARNING: bg image %s defined, but paint failed,\nfallback to default rendering...\033[0m\n", __func__, __LINE__, cc_bg_image.c_str());
cc_body_image = ""; cc_bg_image = "";
} }
} }
/* If no background image is defined, we paint default box or box with gradient /* If no background image is defined, we paint default box or box with gradient
* This is also possible if any background image is defined but image paint ist failed * This is also possible if any background image is defined but image paint ist failed
*/ */
if (cc_body_image.empty()){ if (cc_bg_image.empty()){
if (cc_body_gradient_enable != CC_COLGRAD_OFF ){ if (cc_body_gradient_enable != CC_COLGRAD_OFF ){
/* If color gradient enabled we create a gradient_data /* If color gradient enabled we create a gradient_data
@@ -683,7 +685,7 @@ void CCDraw::paintFbItems(const bool &do_save_bg)
} }
} }
}else{ }else{
/* If is nothihng cached or no background image was defined or image paint was failed, /* If is nothing cached or no background image was defined or image paint was failed,
* render a default box. * render a default box.
*/ */
dprintf(DEBUG_INFO, "\033[33m[CCDraw]\t[%s - %d], paint default box)...\033[0m\n", __func__, __LINE__); dprintf(DEBUG_INFO, "\033[33m[CCDraw]\t[%s - %d], paint default box)...\033[0m\n", __func__, __LINE__);
@@ -871,22 +873,24 @@ bool CCDraw::cancelBlink(bool keep_on_screen)
return false; return false;
} }
bool CCDraw::setBodyBGImage(const std::string& image_path) bool CCDraw::setBodyBGImage(const std::string& image_path, const std::string& sel_image_path, const std::string& sec_image_path)
{ {
if (cc_body_image == image_path) if (cc_bg_std_image == image_path && cc_bg_image == image_path && cc_bg_sel_image == sel_image_path && cc_bg_sec_image == sec_image_path)
return false; return false;
cc_body_image = image_path; cc_bg_std_image = cc_bg_image = image_path;
cc_bg_sel_image = sel_image_path;
cc_bg_sec_image = sec_image_path;
if (clearPaintCache()) if (clearPaintCache())
dprintf(DEBUG_NORMAL, "\033[33m\[CCDraw]\t[%s - %d], new body background image defined: %s , \033[0m\n", __func__, __LINE__, cc_body_image.c_str()); dprintf(DEBUG_NORMAL, "\033[33m\[CCDraw]\t[%s - %d], body background image defined standard: [%s] selected: [%s], secondary: [%s]\033[0m\n", __func__, __LINE__, cc_bg_image.c_str(), cc_bg_sel_image.c_str(), cc_bg_sec_image.c_str());
return true; return true;
} }
bool CCDraw::setBodyBGImageName(const std::string& image_name) bool CCDraw::setBodyBGImageName(const std::string& image_name, const std::string& sel_image_name, const std::string& sec_image_name)
{ {
return setBodyBGImage(frameBuffer->getIconPath(image_name)); return setBodyBGImage(frameBuffer->getIconPath(image_name), frameBuffer->getIconPath(sel_image_name), frameBuffer->getIconPath(sec_image_name));
} }
int CCDraw::getXPos() const int CCDraw::getXPos() const
@@ -931,3 +935,22 @@ bool CCDraw::paintAllowed()
{ {
return cc_allow_paint; return cc_allow_paint;
} }
void CCDraw::setColorBody(const fb_pixel_t &color_std, const fb_pixel_t &color_sel, const fb_pixel_t &color_sec)
{
if (col_body_std != color_std)
col_body_std = color_std;
if (color_sel != col_body_sel)
col_body_sel = color_sel;
if (color_sec != col_body_sec)
col_body_sec = color_sec;
}
void CCDraw::setColorAll(const fb_pixel_t &color_frame, const fb_pixel_t &color_body, const fb_pixel_t &color_shadow, const fb_pixel_t &color_body_sel, const fb_pixel_t &color_body_sec)
{
setColorBody(color_body, color_body_sel, color_body_sec);
setColorFrame(color_frame);
setColorShadow(color_shadow);
}

View File

@@ -71,7 +71,7 @@ class CCDraw : public COSDFader, public CComponentsSignals, public CCTypes
int width, width_old; int width, width_old;
///property: color of body ///property: color of body
fb_pixel_t col_body, col_body_old; fb_pixel_t col_body, col_body_old, col_body_std, col_body_sel, col_body_sec;
///property: color of shadow ///property: color of shadow
fb_pixel_t col_shadow, col_shadow_old; fb_pixel_t col_shadow, col_shadow_old;
///property: color of frame ///property: color of frame
@@ -79,7 +79,7 @@ class CCDraw : public COSDFader, public CComponentsSignals, public CCTypes
///internal property: color for shadow clean up ///internal property: color for shadow clean up
fb_pixel_t col_shadow_clean; fb_pixel_t col_shadow_clean;
///property: background image, see also setBodyBGImage() ///property: background image, see also setBodyBGImage()
std::string cc_body_image, cc_body_image_old; std::string cc_bg_image, cc_bg_image_old, cc_bg_std_image, cc_bg_sel_image, cc_bg_sec_image;
///property: frame thickness, see also setFrameThickness() ///property: frame thickness, see also setFrameThickness()
int fr_thickness, fr_thickness_old; int fr_thickness, fr_thickness_old;
@@ -213,25 +213,29 @@ class CCDraw : public COSDFader, public CComponentsSignals, public CCTypes
void setFrameThickness(const int& thickness); void setFrameThickness(const int& thickness);
///return of frame thickness ///return of frame thickness
int getFrameThickness() const {return fr_thickness;} int getFrameThickness() const {return fr_thickness;}
///set frame color
void setColorFrame(fb_pixel_t color){col_frame = color;}
void set2ndColor(fb_pixel_t col_2nd){cc_body_gradient_2nd_col = col_2nd;} void set2ndColor(fb_pixel_t col_2nd){cc_body_gradient_2nd_col = col_2nd;}
///get frame color ///get frame color
fb_pixel_t getColorFrame() const {return col_frame;} fb_pixel_t getColorFrame() const {return col_frame;}
///get body color ///get body color
fb_pixel_t getColorBody() const {return col_body;} fb_pixel_t getColorBody() const {return col_body_std;}
///get shadow color ///get shadow color
fb_pixel_t getColorShadow() const {return col_shadow;} fb_pixel_t getColorShadow() const {return col_shadow;}
///set body color ///set body color
void setColorBody(fb_pixel_t color){col_body = color;} void setColorBody(const fb_pixel_t &color_std, const fb_pixel_t &color_sel = COL_MENUCONTENTSELECTED_PLUS_0, const fb_pixel_t &color_sec = COL_MENUCONTENTINACTIVE_PLUS_0);
///set shadow color ///set shadow color
void setColorShadow(fb_pixel_t color){col_shadow = color;} void setColorShadow(const fb_pixel_t &color){col_shadow = color;}
///set frame color
void setColorFrame(const fb_pixel_t &color){col_frame = color;}
///set all basic framebuffer element colors at once ///set all basic framebuffer element colors at once
///Note: Possible color values are defined in "gui/color.h" and "gui/color_custom.h" ///Note: Possible color values are defined in "gui/color.h" and "gui/color_custom.h"
void setColorAll(fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow){col_frame = color_frame; col_body = color_body; col_shadow = color_shadow;}; void setColorAll( const fb_pixel_t &color_frame,
const fb_pixel_t &color_body,
const fb_pixel_t &color_shadow,
const fb_pixel_t &color_body_sel = COL_MENUCONTENTSELECTED_PLUS_0,
const fb_pixel_t &color_body_sec = COL_MENUCONTENTINACTIVE_PLUS_0);
///set corner types ///set corner types
///Possible corner types are defined in CFrameBuffer (see: driver/framebuffer.h) ///Possible corner types are defined in CFrameBuffer (see: driver/framebuffer.h)
@@ -411,24 +415,44 @@ class CCDraw : public COSDFader, public CComponentsSignals, public CCTypes
* @return bool * @return bool
* *
* @param[in] image_path Path to image. * @param[in] image_path Path to image.
* @param[in] sel_image_path Path to select image.
* *
* @see * @see
* cc_body_image * cc_body_image
* setBodyBGImageName() * setBodyBGImageName()
*/ */
bool setBodyBGImage(const std::string& image_path); bool setBodyBGImage(const std::string& image_path, const std::string& sel_image_path = "", const std::string& sec_image_path = "");
/**Sets an image name for body background, returns true if new image was applied. /**Sets an image name for body background, returns true if new image was applied.
* *
* @return bool * @return bool
* *
* @param[in] image_name Basename of image. * @param[in] image_name Basename of image.
* @param[in] sel_image_name Path to select image.
* *
* @see * @see
* cc_body_image * cc_body_image
* setBodyBGImage() * setBodyBGImage()
*/ */
bool setBodyBGImageName(const std::string& image_name); bool setBodyBGImageName(const std::string& image_name, const std::string& sel_image_name = "", const std::string& sec_image_name = "");
/**Gets current Path of select background image
*
* @return std::string
*/
std::string getBodyBGImage() {return cc_bg_std_image;}
/**Gets current Path of default background image
*
* @return std::string
*/
std::string getBodyBGSelectedImage() {return cc_bg_sel_image;}
/**Gets current Path of secondary background image
*
* @return std::string
*/
std::string getBodyBGSecondaryImage() {return cc_bg_sec_image;}
}; };
#endif #endif

View File

@@ -107,7 +107,7 @@ void CComponentsButton::initVarButton( const int& x_pos, const int& y_pos, const
cc_body_gradient_enable = CC_COLGRAD_OFF/*g_settings.gradiant*/; //TODO: gradient is prepared for use but disabled at the moment till some other parts of gui parts are provide gradient cc_body_gradient_enable = CC_COLGRAD_OFF/*g_settings.gradiant*/; //TODO: gradient is prepared for use but disabled at the moment till some other parts of gui parts are provide gradient
setColBodyGradient(cc_body_gradient_enable/*CColorGradient::gradientLight2Dark*/, CFrameBuffer::gradientVertical, CColorGradient::light); setColBodyGradient(cc_body_gradient_enable/*CColorGradient::gradientLight2Dark*/, CFrameBuffer::gradientVertical, CColorGradient::light);
col_frame = color_frame; col_frame = color_frame;
col_body = col_body_old = cc_body_gradient_enable? COL_DARK_GRAY : color_body; col_body_std = cc_body_gradient_enable? COL_DARK_GRAY : color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
cc_item_enabled = enabled; cc_item_enabled = enabled;

View File

@@ -84,7 +84,7 @@ void CComponentsFrmChain::initVarChain( const int& x_pos, const int& y_pos, cons
shadow = shadow_mode; shadow = shadow_mode;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
chn_direction = direction; chn_direction = direction;

View File

@@ -66,7 +66,7 @@ CComponentsFrmClock::CComponentsFrmClock( const int& x_pos,
shadow = shadow_mode; shadow = shadow_mode;
shadow_w = OFFSET_SHADOW; shadow_w = OFFSET_SHADOW;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
corner_rad = RADIUS_SMALL; corner_rad = RADIUS_SMALL;
@@ -262,7 +262,7 @@ void CComponentsFrmClock::initCCLockItems()
//set size, text, color of current item //set size, text, color of current item
lbl->setDimensionsAll(x_tmp, y_tmp, w_tmp, h_tmp); lbl->setDimensionsAll(x_tmp, y_tmp, w_tmp, h_tmp);
lbl->setFrameThickness(0); lbl->setFrameThickness(0);
lbl->setColorAll(col_frame, col_body, col_shadow); lbl->setColorAll(col_frame, col_body_std, col_shadow);
lbl->forceTextPaint(force_repaint); lbl->forceTextPaint(force_repaint);
lbl->setText(stmp, CTextBox::CENTER, cl_font, cl_col_text, cl_font_style); lbl->setText(stmp, CTextBox::CENTER, cl_font, cl_col_text, cl_font_style);

View File

@@ -101,7 +101,7 @@ void CComponentsExtTextForm::initVarExtTextForm(const int& x_pos, const int& y_p
ccx_label_color = label_color; ccx_label_color = label_color;
ccx_text_color = text_color; ccx_text_color = text_color;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
ccx_label_obj = NULL; ccx_label_obj = NULL;
ccx_text_obj = NULL; ccx_text_obj = NULL;
@@ -125,7 +125,7 @@ void CComponentsExtTextForm::initLabel()
if (ccx_label_obj){ if (ccx_label_obj){
//assign general properties //assign general properties
ccx_label_obj->setDimensionsAll(0, y_text, ccx_label_width-2*fr_thickness, height-2*fr_thickness); ccx_label_obj->setDimensionsAll(0, y_text, ccx_label_width-2*fr_thickness, height-2*fr_thickness);
ccx_label_obj->setColorBody(col_body); ccx_label_obj->setColorBody(col_body_std);
if (cc_body_gradient_enable != cc_body_gradient_enable_old) if (cc_body_gradient_enable != cc_body_gradient_enable_old)
ccx_label_obj->getCTextBoxObject()->clearScreenBuffer(); ccx_label_obj->getCTextBoxObject()->clearScreenBuffer();
ccx_label_obj->setTextColor(ccx_label_color); ccx_label_obj->setTextColor(ccx_label_color);
@@ -149,7 +149,7 @@ void CComponentsExtTextForm::initText()
if (ccx_text_obj){ if (ccx_text_obj){
//assign general properties //assign general properties
ccx_text_obj->setDimensionsAll(ccx_label_obj->getWidth(), y_text, ccx_text_width-2*fr_thickness, height-2*fr_thickness); ccx_text_obj->setDimensionsAll(ccx_label_obj->getWidth(), y_text, ccx_text_width-2*fr_thickness, height-2*fr_thickness);
ccx_text_obj->setColorBody(col_body); ccx_text_obj->setColorBody(col_body_std);
if (cc_body_gradient_enable != cc_body_gradient_enable_old) if (cc_body_gradient_enable != cc_body_gradient_enable_old)
ccx_text_obj->getCTextBoxObject()->clearScreenBuffer(); ccx_text_obj->getCTextBoxObject()->clearScreenBuffer();
ccx_text_obj->setTextColor(ccx_text_color); ccx_text_obj->setTextColor(ccx_text_color);

View File

@@ -88,9 +88,9 @@ void CComponentsFooter::initVarFooter( const int& x_pos, const int& y_pos, const
ccf_button_shadow_width = shadow ? OFFSET_SHADOW/2 : 0; ccf_button_shadow_width = shadow ? OFFSET_SHADOW/2 : 0;
ccf_button_shadow_force_paint = false; ccf_button_shadow_force_paint = false;
ccf_button_container_y = -1; //centered as default ccf_button_container_y = -1; //centered as default
col_frame = col_frame_old = color_frame; col_frame = color_frame;
col_body = col_body_old = color_body; col_body_std = color_body;
col_shadow = col_shadow_old = color_shadow; col_shadow = color_shadow;
cc_body_gradient_enable = cc_body_gradient_enable_old = CC_COLGRAD_OFF/*g_settings.theme.menu_ButtonBar_gradient*/; //TODO: not complete implemented at the moment cc_body_gradient_enable = cc_body_gradient_enable_old = CC_COLGRAD_OFF/*g_settings.theme.menu_ButtonBar_gradient*/; //TODO: not complete implemented at the moment
cc_body_gradient_direction = CFrameBuffer::gradientVertical; cc_body_gradient_direction = CFrameBuffer::gradientVertical;
cc_body_gradient_mode = CColorGradient::gradientDark2Light; cc_body_gradient_mode = CColorGradient::gradientDark2Light;
@@ -182,7 +182,7 @@ void CComponentsFooter::setButtonLabels(const struct button_label_cc * const con
if (cch_icon_obj) if (cch_icon_obj)
x_container = cch_offset+cch_icon_obj->getWidth()+cch_offset; x_container = cch_offset+cch_icon_obj->getWidth()+cch_offset;
if (btn_container == NULL){ if (btn_container == NULL){
btn_container = new CComponentsFrmChain(x_container, y_container, w_container, h_container, 0, CC_DIR_X, this, CC_SHADOW_OFF, COL_MENUCONTENT_PLUS_6, col_body); btn_container = new CComponentsFrmChain(x_container, y_container, w_container, h_container, 0, CC_DIR_X, this, CC_SHADOW_OFF, COL_MENUCONTENT_PLUS_6, col_body_std);
btn_container->setItemName(cc_parent ? cc_parent->getItemName() + ":" + getItemName() + ":btn_container" : ""); btn_container->setItemName(cc_parent ? cc_parent->getItemName() + ":" + getItemName() + ":btn_container" : "");
btn_container->setAppendOffset(0, 0); btn_container->setAppendOffset(0, 0);
//btn_container->setCorner(this->corner_rad, this->corner_type); //btn_container->setCorner(this->corner_rad, this->corner_type);

View File

@@ -133,8 +133,8 @@ void CComponentsHeader::initVarHeader( const int& x_pos, const int& y_pos, const
CNeutrinoApp::getInstance()->OnAfterSetupFonts.connect(sigc::mem_fun(this, &CComponentsHeader::resetFont)); CNeutrinoApp::getInstance()->OnAfterSetupFonts.connect(sigc::mem_fun(this, &CComponentsHeader::resetFont));
shadow = shadow_mode; shadow = shadow_mode;
col_frame = col_frame_old = color_frame; col_frame = color_frame;
col_body = col_body_old = color_body; col_body_std = color_body;
col_shadow = col_shadow_old = color_shadow; col_shadow = col_shadow_old = color_shadow;
cc_body_gradient_enable = cc_body_gradient_enable_old = (cch_size_mode == CC_HEADER_SIZE_SMALL ? g_settings.theme.menu_SubHead_gradient : g_settings.theme.menu_Head_gradient); cc_body_gradient_enable = cc_body_gradient_enable_old = (cch_size_mode == CC_HEADER_SIZE_SMALL ? g_settings.theme.menu_SubHead_gradient : g_settings.theme.menu_Head_gradient);
@@ -180,7 +180,7 @@ void CComponentsHeader::initVarHeader( const int& x_pos, const int& y_pos, const
} }
void CComponentsHeader::initRepaintSlot(){ void CComponentsHeader::initRepaintSlot(){
sl_form_repaint = sigc::bind(sigc::mem_fun(*this, &CComponentsHeader::kill), cc_parent ? col_body : 0, -1, CC_FBDATA_TYPES, false); sl_form_repaint = sigc::bind(sigc::mem_fun(*this, &CComponentsHeader::kill), cc_parent ? col_body_std : 0, -1, CC_FBDATA_TYPES, false);
OnBeforeRePaint.connect(sl_form_repaint); OnBeforeRePaint.connect(sl_form_repaint);
} }
@@ -667,7 +667,7 @@ void CComponentsHeader::initCaption()
//assign general properties //assign general properties
cch_text_obj->setDimensionsAll(cch_text_x, cch_items_y, cc_text_w, height); cch_text_obj->setDimensionsAll(cch_text_x, cch_items_y, cc_text_w, height);
cch_text_obj->setColorBody(col_body); cch_text_obj->setColorBody(col_body_std);
if (cc_body_gradient_enable != cc_body_gradient_enable_old) if (cc_body_gradient_enable != cc_body_gradient_enable_old)
cch_text_obj->getCTextBoxObject()->clearScreenBuffer(); cch_text_obj->getCTextBoxObject()->clearScreenBuffer();
cch_text_obj->setText(cch_text, cch_caption_align, cch_font, cch_col_text); cch_text_obj->setText(cch_text, cch_caption_align, cch_font, cch_col_text);
@@ -694,7 +694,7 @@ void CComponentsHeader::initCCItems()
initCaptionFont(); initCaptionFont();
//set basic properties //set basic properties
Init(x, y, width, height, col_frame, col_body, col_shadow); Init(x, y, width, height, col_frame, col_body_std, col_shadow);
//init icon //init icon
initIcon(); initIcon();

View File

@@ -64,7 +64,7 @@ void CComponentsIconForm::initVarIconForm( const int &x_pos, const int &y_pos, c
v_icons = v_icon_names; v_icons = v_icon_names;
shadow = shadow_mode; shadow = shadow_mode;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
chn_direction = CC_DIR_X; chn_direction = CC_DIR_X;

View File

@@ -40,7 +40,7 @@ using namespace std;
| | sb_up_obj (icon)| |/color_frame | | sb_up_obj (icon)| |/color_frame
| | /\ | | | | /\ | |
| +-----------------+ | |/color_shadow | +-----------------+ | |/color_shadow
| col_body | | | col_body_std | |
| | | |
| +-sb_segments_obj+ | | +-sb_segments_obj+ |
| | | | | | | |
@@ -162,7 +162,7 @@ void CComponentsScrollBar::initSegments()
sb_segments_obj->setDimensionsAll(CC_CENTERED, CC_APPEND, w_seg, h_seg_obj); sb_segments_obj->setDimensionsAll(CC_CENTERED, CC_APPEND, w_seg, h_seg_obj);
//set current color for segment container //set current color for segment container
sb_segments_obj->setColorBody(col_body); sb_segments_obj->setColorBody(col_body_std);
//clean up segment container before add new segments //clean up segment container before add new segments
sb_segments_obj->clear(); sb_segments_obj->clear();
@@ -182,7 +182,7 @@ void CComponentsScrollBar::initSegments()
tmp_quot = uint32_t((float)sb_segments_count/(float)tmp_segments + 0.5); tmp_quot = uint32_t((float)sb_segments_count/(float)tmp_segments + 0.5);
} }
fb_pixel_t passive_col = sb_visual_enable ? sb_segment_col : col_body; fb_pixel_t passive_col = sb_visual_enable ? sb_segment_col : col_body_std;
//create and add segments to segment container //create and add segments to segment container
for(uint32_t i=0; i<tmp_segments; i++){ for(uint32_t i=0; i<tmp_segments; i++){
@@ -209,7 +209,7 @@ void CComponentsScrollBar::initSegments()
} }
//set different corner types for segments with possible conditions //set different corner types for segments with possible conditions
if (passive_col == col_body){ if (passive_col == col_body_std){
item->setCorner(RADIUS_MIN, CORNER_ALL); item->setCorner(RADIUS_MIN, CORNER_ALL);
continue; continue;
}else if (tmp_segments == 1){ }else if (tmp_segments == 1){

View File

@@ -109,7 +109,7 @@ void CSignalBar::initSBItems()
{ {
if (cc_parent){ if (cc_parent){
//use backround color of parent form if signalbar is embedded //use backround color of parent form if signalbar is embedded
col_body = cc_parent->getColorBody(); col_body_std = cc_parent->getColorBody();
//and set required color for text to name label //and set required color for text to name label
CSignalBox *sbx = static_cast<CSignalBox*>(cc_parent); CSignalBox *sbx = static_cast<CSignalBox*>(cc_parent);
@@ -133,7 +133,7 @@ void CSignalBar::initSBarScale()
//move and set dimensions //move and set dimensions
int scale_y = (sb_item_height/2 - sb_scale_height/2); int scale_y = (sb_item_height/2 - sb_scale_height/2);
sb_scale->setDimensionsAll(fr_thickness, scale_y, sb_scale_width, sb_scale_height); sb_scale->setDimensionsAll(fr_thickness, scale_y, sb_scale_width, sb_scale_height);
sb_scale->setColorBody(col_body); sb_scale->setColorBody(col_body_std);
sb_scale->setActiveColor(sb_active_color); sb_scale->setActiveColor(sb_active_color);
sb_scale->setPassiveColor(sb_passive_color); sb_scale->setPassiveColor(sb_passive_color);
//add scale object to container //add scale object to container
@@ -160,7 +160,7 @@ void CSignalBar::initSBarValue()
//set current text and body color color //set current text and body color color
sb_vlbl->setTextColor(sb_caption_color); sb_vlbl->setTextColor(sb_caption_color);
sb_vlbl->setColorBody(col_body); sb_vlbl->setColorBody(col_body_std);
//add value label object to container //add value label object to container
if (!sb_vlbl->isAdded()) if (!sb_vlbl->isAdded())
@@ -187,7 +187,7 @@ void CSignalBar::initSBarName()
//set current text and body color //set current text and body color
sb_lbl->setTextColor(sb_caption_color); sb_lbl->setTextColor(sb_caption_color);
sb_lbl->setColorBody(col_body); sb_lbl->setColorBody(col_body_std);
//add name label object to container //add name label object to container
if (!sb_lbl->isAdded()) if (!sb_lbl->isAdded())

View File

@@ -152,7 +152,7 @@ void CComponentsWindow::init( const int& x_pos, const int& y_pos, const int& w,
paint_bg = true; paint_bg = true;
shadow = shadow_mode; shadow = shadow_mode;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
ccw_head = NULL; ccw_head = NULL;
@@ -317,7 +317,7 @@ void CComponentsWindow::initBody()
ccw_body->setDimensionsAll(x_body, h_header, w_body, h_body); ccw_body->setDimensionsAll(x_body, h_header, w_body, h_body);
ccw_body->doPaintBg(paint_bg); ccw_body->doPaintBg(paint_bg);
ccw_body->setColorBody(col_body); ccw_body->setColorBody(col_body_std);
//handle corner behavior //handle corner behavior
if (!ccw_show_header) if (!ccw_show_header)

View File

@@ -67,6 +67,21 @@ void CComponentsItem::initParent(CComponentsForm* parent)
// If backround is not required, it's possible to override this with variable paint_bg=false, use doPaintBg(true/false) to set this! // If backround is not required, it's possible to override this with variable paint_bg=false, use doPaintBg(true/false) to set this!
void CComponentsItem::paintInit(const bool &do_save_bg) void CComponentsItem::paintInit(const bool &do_save_bg)
{ {
if (cc_parent)
{ //use defined background color and background images in dependency of focus mode
if (cc_parent->hasFocus()){
col_body = cc_item_selected ? col_body_sel : col_body_std;
cc_bg_image = cc_item_selected ? cc_bg_sel_image : cc_bg_std_image;
}
else{
col_body = cc_item_selected ? col_body_sec : col_body_std;
cc_bg_image = cc_item_selected ? cc_bg_sec_image : cc_bg_std_image;
}
}
else
col_body = cc_item_selected ? col_body_sel : col_body_std;
// check possible changed properties and force reinit if required
if (hasChanges()){ if (hasChanges()){
clearFbData(); clearFbData();
is_painted = false; //force repaint if required is_painted = false; //force repaint if required
@@ -292,12 +307,18 @@ void CComponentsItem::setFocus(bool focus)
cc_has_focus = focus; cc_has_focus = focus;
} }
void CComponentsItem::setSelected(bool selected, const fb_pixel_t& sel_frame_col, const fb_pixel_t& frame_col, const fb_pixel_t& sel_body_col, const fb_pixel_t& body_col, const int& frame_w, const int& sel_frame_w) void CComponentsItem::setSelected( bool selected,
const fb_pixel_t& sel_frame_col,
const fb_pixel_t& frame_col,
const fb_pixel_t& sel_body_col,
const fb_pixel_t& body_col,
const int& frame_w,
const int& sel_frame_w)
{ {
cc_item_selected = selected; cc_item_selected = selected;
fr_thickness = cc_item_selected ? sel_frame_w : frame_w; fr_thickness = cc_item_selected ? sel_frame_w : frame_w;
col_body = cc_item_selected ? sel_body_col : body_col;
col_frame = cc_item_selected ? sel_frame_col : frame_col; col_frame = cc_item_selected ? sel_frame_col : frame_col;
setColorAll(col_frame, body_col, col_shadow, sel_body_col, COL_MENUCONTENT_PLUS_1);
} }
uint8_t CComponentsItem::getPageNumber() const uint8_t CComponentsItem::getPageNumber() const

View File

@@ -59,7 +59,7 @@ CComponentsInfoBox::CComponentsInfoBox( const int& x_pos,
shadow = shadow_mode; shadow = shadow_mode;
col_frame = color_frame; col_frame = color_frame;
cc_enable_frame = true; cc_enable_frame = true;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
ct_text = info_text; ct_text = info_text;
@@ -124,7 +124,7 @@ void CComponentsInfoBox::paintPicture()
string image = frameBuffer->getIconPath(pic_name); string image = frameBuffer->getIconPath(pic_name);
pic = new CComponentsPicture(x_pic+x_offset, y_pic, pic_width, min(pic_height, height-2*fr_thickness), image); //NOTE: icons do not scale! pic = new CComponentsPicture(x_pic+x_offset, y_pic, pic_width, min(pic_height, height-2*fr_thickness), image); //NOTE: icons do not scale!
pic->setColorBody(col_body); pic->setColorBody(col_body_std);
//set gradient behavior of pic object //set gradient behavior of pic object
if (cc_body_gradient_enable) if (cc_body_gradient_enable)

View File

@@ -82,9 +82,9 @@ void CComponentsPicture::init( const int &x_pos, const int &y_pos, const int &w,
shadow = shadow_mode; shadow = shadow_mode;
shadow_w = OFFSET_SHADOW; shadow_w = OFFSET_SHADOW;
col_frame = color_frame; col_frame = color_frame;
col_body = color_background; col_body_std = color_background;
col_shadow = color_shadow; col_shadow = color_shadow;
col_shadow_clean= col_body; col_shadow_clean= col_body_std;
do_scale = allow_scale; do_scale = allow_scale;
image_cache = NULL; //image image_cache = NULL; //image
enable_cache = false; enable_cache = false;
@@ -323,7 +323,7 @@ void CComponentsPicture::paintPicture()
if (do_scale) if (do_scale)
is_image_painted = g_PicViewer->DisplayImage(pic_name, x_pic, y_pic, width-2*fr_thickness, height-2*fr_thickness); is_image_painted = g_PicViewer->DisplayImage(pic_name, x_pic, y_pic, width-2*fr_thickness, height-2*fr_thickness);
else else
is_image_painted = frameBuffer->paintIcon(pic_name, x_pic, y_pic, height, 1, do_paint, paint_bg, col_body); is_image_painted = frameBuffer->paintIcon(pic_name, x_pic, y_pic, height, 1, do_paint, paint_bg, col_body_std);
if (is_image_painted){ if (is_image_painted){
frameBuffer->SetTransparentDefault(); frameBuffer->SetTransparentDefault();

View File

@@ -64,7 +64,7 @@ CProgressBar::CProgressBar( const int x_pos,
height = height_old = h; height = height_old = h;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
pb_red = R; pb_red = R;
@@ -396,7 +396,7 @@ void CProgressBar::paintProgress(const bool &do_save_bg)
initDimensions(); initDimensions();
//body //body
if (pb_last_width == -1 && col_body != 0) /* first paint */ if (pb_last_width == -1 && col_body_std != 0) /* first paint */
paintInit(do_save_bg); paintInit(do_save_bg);
//progress //progress

View File

@@ -51,7 +51,7 @@ CComponentsShapeSquare::CComponentsShapeSquare( const int x_pos, const int y_pos
shadow = shadow_mode; shadow = shadow_mode;
shadow_w = OFFSET_SHADOW; shadow_w = OFFSET_SHADOW;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
initParent(parent); initParent(parent);
} }
@@ -83,7 +83,7 @@ CComponentsShapeCircle::CComponentsShapeCircle( int x_pos, int y_pos, int diam,
shadow = shadow_mode; shadow = shadow_mode;
shadow_w = OFFSET_SHADOW; shadow_w = OFFSET_SHADOW;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
//CComponentsShapeCircle //CComponentsShapeCircle

View File

@@ -103,7 +103,7 @@ void CComponentsText::initVarText( const int x_pos, const int y_pos, const int w
ct_col_text = color_text; ct_col_text = color_text;
ct_old_col_text = ct_col_text; ct_old_col_text = ct_col_text;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
ct_text_sent = false; ct_text_sent = false;
@@ -170,7 +170,7 @@ void CComponentsText::initCCText()
ct_textbox->setWindowMinDimensions(ct_box.iWidth, ct_box.iHeight); ct_textbox->setWindowMinDimensions(ct_box.iWidth, ct_box.iHeight);
ct_textbox->setTextBorderWidth(ct_text_Hborder, ct_text_Vborder); ct_textbox->setTextBorderWidth(ct_text_Hborder, ct_text_Vborder);
ct_textbox->enableBackgroundPaint(enable_bg_paint); ct_textbox->enableBackgroundPaint(enable_bg_paint);
ct_textbox->setBackGroundColor(col_body); ct_textbox->setBackGroundColor(col_body_std);
ct_textbox->setBackGroundRadius(0/*(corner_type ? corner_rad-fr_thickness : 0), corner_type*/); ct_textbox->setBackGroundRadius(0/*(corner_type ? corner_rad-fr_thickness : 0), corner_type*/);
ct_textbox->enableSaveScreen(enable_save_screen); ct_textbox->enableSaveScreen(enable_save_screen);

View File

@@ -147,9 +147,14 @@ class CComponentsText : public CCTextScreen, public CComponentsItem
void setTextColor(const fb_pixel_t& color_text); void setTextColor(const fb_pixel_t& color_text);
///set all basic framebuffer element colors at once ///set all basic framebuffer element colors at once
///Note: Possible color values are defined in "gui/color.h" and "gui/color_custom.h" ///Note: Possible color values are defined in "gui/color.h" and "gui/color_custom.h"
void setColorAll(fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow = COL_SHADOW_PLUS_0, fb_pixel_t color_text = COL_MENUCONTENT_TEXT) void setColorAll( const fb_pixel_t& color_frame,
const fb_pixel_t& color_body,
const fb_pixel_t& color_shadow = COL_SHADOW_PLUS_0,
const fb_pixel_t& color_text = COL_MENUCONTENT_TEXT,
const fb_pixel_t& color_body_sel = COL_MENUCONTENTSELECTED_PLUS_0,
const fb_pixel_t& color_body_sec = COL_MENUCONTENTINACTIVE_PLUS_0)
{ {
CCDraw::setColorAll(color_frame, color_body, color_shadow); CCDraw::setColorAll(color_frame, color_body, color_shadow, color_body_sel, color_body_sec);
setTextColor(color_text); setTextColor(color_text);
}; };
///get text color ///get text color

View File

@@ -62,7 +62,7 @@ CComponentsPIP::CComponentsPIP( const int x_pos, const int y_pos, const int perc
shadow = shadow_mode; shadow = shadow_mode;
shadow_w = OFFSET_SHADOW; shadow_w = OFFSET_SHADOW;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
fr_thickness = 2; fr_thickness = 2;
corner_rad = RADIUS_SMALL; corner_rad = RADIUS_SMALL;

View File

@@ -50,7 +50,7 @@ CVolumeBar::CVolumeBar()
void CVolumeBar::initVarVolumeBar() void CVolumeBar::initVarVolumeBar()
{ {
col_body = COL_MENUCONTENT_PLUS_0; col_body_std = COL_MENUCONTENT_PLUS_0;
corner_rad = CORNER_RADIUS_MID; corner_rad = CORNER_RADIUS_MID;
vb_item_offset = OFFSET_INNER_SMALL; vb_item_offset = OFFSET_INNER_SMALL;
height = CFrameBuffer::getInstance()->scale2Res(g_settings.volume_size); height = CFrameBuffer::getInstance()->scale2Res(g_settings.volume_size);
@@ -183,7 +183,7 @@ void CVolumeBar::initVolumeBarIcon()
} }
vb_icon->setDimensionsAll(vb_icon_x, CC_CENTERED, vb_icon_w, height); vb_icon->setDimensionsAll(vb_icon_x, CC_CENTERED, vb_icon_w, height);
vb_icon->setColorBody(col_body); vb_icon->setColorBody(col_body_std);
vb_icon->setCorner(corner_rad, CORNER_LEFT); vb_icon->setCorner(corner_rad, CORNER_LEFT);
} }
@@ -205,7 +205,7 @@ void CVolumeBar::initVolumeBarScale()
//set digit text with current volume value //set digit text with current volume value
void CVolumeBar::initVolumeBarDigitValue() void CVolumeBar::initVolumeBarDigitValue()
{ {
vb_digit->kill(col_body); vb_digit->kill(col_body_std);
vb_digit->setText(*vb_vol ,vb_digit_mode, *(CVolumeHelper::getInstance()->vb_font)); vb_digit->setText(*vb_vol ,vb_digit_mode, *(CVolumeHelper::getInstance()->vb_font));
} }

View File

@@ -163,7 +163,7 @@ void CHintBox::init( const std::string& Text,
w_indentation = indent; w_indentation = indent;
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
fr_thickness = g_settings.theme.message_frame_enable ? frame_width : 0; fr_thickness = g_settings.theme.message_frame_enable ? frame_width : 0;

View File

@@ -103,7 +103,7 @@ void CMsgBox::init( const int& Height,
initTimeOut(); initTimeOut();
col_frame = color_frame; col_frame = color_frame;
col_body = color_body; col_body_std = color_body;
col_shadow = color_shadow; col_shadow = color_shadow;
fr_thickness = g_settings.theme.message_frame_enable || col_frame != HINTBOX_DEFAULT_FRAME_COLOR ? frame_width : 0; fr_thickness = g_settings.theme.message_frame_enable || col_frame != HINTBOX_DEFAULT_FRAME_COLOR ? frame_width : 0;

View File

@@ -93,7 +93,7 @@ void CProgressWindow::Init( signal<void, size_t, size_t, string> *statusSignal,
//create status text object //create status text object
status_txt = new CComponentsLabel(); status_txt = new CComponentsLabel();
status_txt->setDimensionsAll(OFFSET_INNER_MID, OFFSET_INNER_MID, width-2*OFFSET_INNER_MID, g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight()); status_txt->setDimensionsAll(OFFSET_INNER_MID, OFFSET_INNER_MID, width-2*OFFSET_INNER_MID, g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight());
status_txt->setColorBody(col_body); status_txt->setColorBody(col_body_std);
status_txt->doPaintTextBoxBg(true); status_txt->doPaintTextBoxBg(true);
status_txt->doPaintBg(false); status_txt->doPaintBg(false);
addWindowItem(status_txt); addWindowItem(status_txt);
@@ -125,7 +125,7 @@ CProgressBar* CProgressWindow::getProgressItem()
y_tmp += OFFSET_INNER_MID; y_tmp += OFFSET_INNER_MID;
} }
pBar->setDimensionsAll(OFFSET_INNER_MID, y_tmp, width-2*OFFSET_INNER_MID, g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight()); pBar->setDimensionsAll(OFFSET_INNER_MID, y_tmp, width-2*OFFSET_INNER_MID, g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight());
pBar->setColorBody(col_body); pBar->setColorBody(col_body_std);
pBar->setActiveColor(COL_PROGRESSBAR_ACTIVE_PLUS_0); pBar->setActiveColor(COL_PROGRESSBAR_ACTIVE_PLUS_0);
pBar->setFrameThickness(FRAME_WIDTH_MIN); pBar->setFrameThickness(FRAME_WIDTH_MIN);
pBar->setColorFrame(COL_PROGRESSBAR_ACTIVE_PLUS_0); pBar->setColorFrame(COL_PROGRESSBAR_ACTIVE_PLUS_0);