CComponentsHeader: Use color gradient for paint header

Conflicts:
	src/gui/widget/menue.cpp
This commit is contained in:
M. Liebmann
2014-09-20 21:34:12 +02:00
committed by [CST] Focus
parent db6fd8480d
commit bfc1c04d83
3 changed files with 31 additions and 1 deletions

View File

@@ -116,6 +116,9 @@ void CComponentsHeader::initVarHeader( const int& x_pos, const int& y_pos, const
cch_text_x = cch_offset;
cch_buttons_space = cch_offset;
gradientBuf = NULL;
paintGradient = false;
addContextButton(buttons);
initCCItems();
initParent(parent);
@@ -125,6 +128,8 @@ CComponentsHeader::~CComponentsHeader()
{
dprintf(DEBUG_DEBUG, "[~CComponentsHeader] [%s - %d] delete...\n", __func__, __LINE__);
v_cch_btn.clear();
if (gradientBuf)
free(gradientBuf);
}
void CComponentsHeader::setCaption(const std::string& caption, const int& align_mode)
@@ -369,7 +374,7 @@ void CComponentsHeader::initCaption()
if (cch_caption_align == CTextBox::CENTER)
cch_text_x = CC_CENTERED;
cch_text_obj->setDimensionsAll(cch_text_x, cch_items_y, cc_text_w, height);
cch_text_obj->doPaintBg(true);
cch_text_obj->doPaintBg(false);
cch_text_obj->setText(cch_text, cch_caption_align, cch_font);
cch_text_obj->forceTextPaint(); //here required
cch_text_obj->setTextColor(cch_col_text);
@@ -386,6 +391,17 @@ void CComponentsHeader::initCaption()
}
}
void CComponentsHeader::initGradient()
{
if (gradientBuf == NULL) {
CColorGradient ccGradient;
gradientBuf = ccGradient.gradientOneColor(col_body, NULL, height, CColorGradient::gradientLight2Dark, CColorGradient::light);
}
cc_gradientData.gradientBuf = gradientBuf;
cc_gradientData.direction = CFrameBuffer::gradientVertical;
cc_gradientData.mode = CFrameBuffer::pbrg_noOption;
}
void CComponentsHeader::initCCItems()
{
//set size
@@ -399,6 +415,10 @@ void CComponentsHeader::initCCItems()
//init text
initCaption();
//init color gradient
if (paintGradient)
initGradient();
}
void CComponentsHeader::paint(bool do_save_bg)

View File

@@ -29,6 +29,7 @@
#include "cc_item_picture.h"
#include "cc_item_text.h"
#include "cc_frm_icons.h"
#include <driver/colorgradient.h>
//! Sub class of CComponentsForm. Shows a header with prepared items.
/*!
@@ -48,6 +49,9 @@ class CComponentsHeader : public CComponentsForm
fb_pixel_t color_body = COL_MENUHEAD_PLUS_0,
fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0);
fb_pixel_t *gradientBuf;
bool paintGradient;
protected:
///object: icon object, see also setIcon()
CComponentsPicture * cch_icon_obj;
@@ -92,6 +96,8 @@ class CComponentsHeader : public CComponentsForm
void initCaption();
///sub: init context button object
void initButtons();
///sub: init color gradient
void initGradient();
public:
enum
@@ -197,6 +203,9 @@ class CComponentsHeader : public CComponentsForm
///paint header
virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES);
//set color gradient an/off
virtual void setPaintGradient(bool g) { paintGradient = g; };
};
//! Sub class of CComponentsHeader.

View File

@@ -1099,6 +1099,7 @@ void CMenuWidget::paint()
// paint head
CComponentsHeader header(x, y, width + sb_width, hheight, getName(), iconfile);
header.setPaintGradient(true);
header.setShadowOnOff(CC_SHADOW_ON);
header.setOffset(10);
header.paint(CC_SAVE_SCREEN_NO);