- infoviewer: add color-to-color gradient feature; THX to TangoCash ...

... for basic inspiration and dbt for some optimizations
This commit is contained in:
svenhoefer
2015-05-04 08:56:01 +02:00
parent c05e650a02
commit 62daf1dc4c
11 changed files with 86 additions and 13 deletions

View File

@@ -1432,6 +1432,8 @@ miscsettings.infobar_disp_4 Logo+Kanalname/Kanalnummer
miscsettings.infobar_disp_5 Logo/Signalbalken
miscsettings.infobar_disp_6 Logo+Kanalnummer/Signalbalken
miscsettings.infobar_disp_log Logo
miscsettings.infobar_gradient_bottom Farbverlauf unten
miscsettings.infobar_gradient_top Farbverlauf oben
miscsettings.infobar_logo_hdd_dir Logo-Verz.
miscsettings.infobar_sat_display Kabel-/Satellitenanbieter
miscsettings.infobar_show Info bei EPG Änderungen

View File

@@ -1432,6 +1432,8 @@ miscsettings.infobar_disp_4 Logo+channel name/number
miscsettings.infobar_disp_5 Logo+signal
miscsettings.infobar_disp_6 Logo+channel number+signal
miscsettings.infobar_disp_log Logo
miscsettings.infobar_gradient_bottom Gradient bottom
miscsettings.infobar_gradient_top Gradient top
miscsettings.infobar_logo_hdd_dir Logo dir
miscsettings.infobar_sat_display Satellite display on infobar
miscsettings.infobar_show show Info on EPG change

View File

@@ -246,9 +246,24 @@ void CInfoViewer::changePB()
void CInfoViewer::initClock()
{
static int gradient_top = g_settings.theme.infobar_gradient_top;
if (gradient_top != g_settings.theme.infobar_gradient_top && clock != NULL) {
gradient_top = g_settings.theme.infobar_gradient_top;
clock->clearSavedScreen();
delete clock;
clock = NULL;
}
if (clock == NULL){
clock = new CComponentsFrmClock();
clock->doPaintBg(true);
clock->setClockBlink("%H.%M");
clock->setClockIntervall(1);
clock->doPaintBg(!gradient_top);
clock->enableTboxSaveScreen(gradient_top);
if (time_width)
clock->setWidth(time_width);
}
clock->setColorBody(COL_INFOBAR_PLUS_0);
@@ -385,10 +400,12 @@ void CInfoViewer::paintBackground(int col_NumBox)
BoxEndX - c_shadow_width, BoxEndInfoY + SHADOW_OFFSET,
COL_INFOBAR_SHADOW_PLUS_0, c_rad_large, CORNER_BOTTOM_LEFT);
// background for channel name, epg data
frameBuffer->paintBox(ChanInfoX, ChanNameY, BoxEndX, BoxEndY,
COL_INFOBAR_PLUS_0, c_rad_large,
CORNER_TOP_RIGHT | (showButtonBar ? 0 : CORNER_BOTTOM));
// background for channel name/logo and clock
paintHead();
// background for epg data
frameBuffer->paintBox(ChanInfoX, ChanNameY + time_height, BoxEndX, BoxEndY,
COL_INFOBAR_PLUS_0, c_rad_large, (showButtonBar ? CORNER_NONE : CORNER_BOTTOM));
// number box
frameBuffer->paintBoxRel(BoxStartX + SHADOW_OFFSET, BoxStartY + SHADOW_OFFSET,
@@ -399,6 +416,19 @@ void CInfoViewer::paintBackground(int col_NumBox)
col_NumBox, c_rad_mid);
}
void CInfoViewer::paintHead()
{
CComponentsShapeSquare header(ChanInfoX, ChanNameY, BoxEndX-ChanInfoX, time_height);
header.setColorBody(g_settings.theme.infobar_gradient_top ? COL_MENUHEAD_PLUS_0 : COL_INFOBAR_PLUS_0);
header.enableColBodyGradient(g_settings.theme.infobar_gradient_top);
header.set2ndColor(COL_INFOBAR_PLUS_0);
header.setCorner(RADIUS_LARGE, CORNER_TOP_RIGHT);
clock->setColorBody(header.getColorBody());
header.paint(CC_SAVE_SCREEN_NO);
}
void CInfoViewer::show_current_next(bool new_chan, int epgpos)
{
CEitManager::getInstance()->getCurrentNextServiceKey(channel_id, info_CurrentNext);
@@ -481,7 +511,6 @@ void CInfoViewer::showMovieTitle(const int playState, const t_channel_id &Channe
last_curr_id = last_next_id = 0;
showButtonBar = true;
fileplay = true;
reset_allScala();
if (!gotTime)

View File

@@ -62,8 +62,6 @@ class CInfoViewer
int InfoHeightY;
bool fileplay;
int BoxStartX;
int BoxStartY;
int ButtonWidth;
// dimensions of radiotext window
@@ -108,6 +106,7 @@ class CInfoViewer
uint32_t lcdUpdateTimer;
void paintBackground(int col_Numbox);
void paintHead();
void show_Data( bool calledFromEvent = false );
void display_Info(const char *current, const char *next, bool UTF8 = true,
bool starttimes = true, const int pb_pos = -1,
@@ -145,6 +144,8 @@ class CInfoViewer
char aspectRatio;
uint32_t sec_timer_id;
int BoxStartX;
int BoxStartY;
int BoxEndX;
int BoxEndY;
int ChanInfoX;

View File

@@ -88,8 +88,6 @@ CInfoViewerBB::CInfoViewerBB()
bbIconInfo[0].h = 0;
BBarY = 0;
BBarFontY = 0;
hddscale = NULL;
sysscale = NULL;
Init();
}
@@ -374,8 +372,8 @@ void CInfoViewerBB::showBBButtons(const int modus)
}
if (paint) {
paintFoot(minX - g_InfoViewer->ChanInfoX);
int last_x = minX;
frameBuffer->paintBoxRel(g_InfoViewer->ChanInfoX, BBarY, minX - g_InfoViewer->ChanInfoX, InfoHeightY_Info, COL_INFOBAR_BUTTONS_BACKGROUND, RADIUS_LARGE, CORNER_BOTTOM); //round
for (i = BUTTON_MAX; i > 0;) {
--i;
if ((bbButtonInfo[i].x <= g_InfoViewer->ChanInfoX) || (bbButtonInfo[i].x >= g_InfoViewer->BoxEndX) || (!bbButtonInfo[i].paint))
@@ -415,7 +413,7 @@ void CInfoViewerBB::showBBIcons(const int modus, const std::string & icon)
return;
if ((modus >= CInfoViewerBB::ICON_SUBT) && (modus < CInfoViewerBB::ICON_MAX) && (bbIconInfo[modus].x != -1) && (is_visible)) {
frameBuffer->paintIcon(icon, bbIconInfo[modus].x, BBarY,
InfoHeightY_Info, 1, true, true, COL_INFOBAR_BUTTONS_BACKGROUND);
InfoHeightY_Info, 1, true, !g_settings.theme.infobar_gradient_bottom, COL_INFOBAR_BUTTONS_BACKGROUND);
}
}
@@ -432,7 +430,7 @@ void CInfoViewerBB::paintshowButtonBar()
if (g_settings.casystem_display < 2)
paintCA_bar(0,0);
frameBuffer->paintBoxRel(g_InfoViewer->ChanInfoX, BBarY, g_InfoViewer->BoxEndX - g_InfoViewer->ChanInfoX, InfoHeightY_Info, COL_INFOBAR_BUTTONS_BACKGROUND, RADIUS_LARGE, CORNER_BOTTOM); //round
paintFoot();
g_InfoViewer->showSNR();
@@ -453,6 +451,21 @@ void CInfoViewerBB::paintshowButtonBar()
showSysfsHdd();
}
void CInfoViewerBB::paintFoot(int w)
{
int width = (w == 0) ? g_InfoViewer->BoxEndX - g_InfoViewer->ChanInfoX : w;
CComponentsShapeSquare foot(g_InfoViewer->ChanInfoX, BBarY, width, InfoHeightY_Info);
foot.setColorBody(COL_INFOBAR_BUTTONS_BACKGROUND);
foot.enableColBodyGradient(g_settings.theme.infobar_gradient_bottom);
foot.setColBodyGradient(CColorGradient::gradientDark2Light, CFrameBuffer::gradientVertical);
foot.setCorner(RADIUS_LARGE, CORNER_BOTTOM);
foot.set2ndColor(COL_INFOBAR_PLUS_0);
foot.paint(CC_SAVE_SCREEN_NO);
}
void CInfoViewerBB::showIcon_SubT()
{
if (!is_visible)

View File

@@ -109,6 +109,7 @@ class CInfoViewerBB
CProgressBar *hddscale, *sysscale;
void paintFoot(int w = 0);
void showBBIcons(const int modus, const std::string & icon);
void getBBIconInfo(void);
bool checkBBIcon(const char * const icon, int *w, int *h);

View File

@@ -723,6 +723,7 @@ void COsdSetup::showOsdMenueColorSetup(CMenuWidget *menu_colors)
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// infoviewer color
CColorChooser* chInfobarcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &t.infobar_red,
&t.infobar_green, &t.infobar_blue, &t.infobar_alpha, colorSetupNotifier);
CColorChooser* chInfobarTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.infobar_Text_red,
@@ -737,6 +738,17 @@ void COsdSetup::showOsdMenueColorSetup(CMenuWidget *menu_colors)
mf->setHint("", LOCALE_MENU_HINT_INFOBAR_TEXTCOLOR);
menu_colors->addItem(mf);
// infoviewer gradient top
oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_TOP, &t.infobar_gradient_top, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// infoviewer gradient bottom
oj = new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_BOTTOM, &t.infobar_gradient_bottom, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true);
oj->setHint("", LOCALE_MENU_HINT_COLOR_GRADIENT);
menu_colors->addItem(oj);
// colored events
CColorChooser* chColored_Events = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &t.colored_events_red,
&t.colored_events_green, &t.colored_events_blue, NULL, colorSetupNotifier);

View File

@@ -275,6 +275,8 @@ void CThemes::setTheme(CConfigFile &configfile)
configfile.setInt32( "infobar_red", t.infobar_red );
configfile.setInt32( "infobar_green", t.infobar_green );
configfile.setInt32( "infobar_blue", t.infobar_blue );
configfile.setInt32( "infobar_gradient_top", t.infobar_gradient_top );
configfile.setInt32( "infobar_gradient_bottom", t.infobar_gradient_bottom );
configfile.setInt32( "infobar_Text_alpha", t.infobar_Text_alpha );
configfile.setInt32( "infobar_Text_red", t.infobar_Text_red );
configfile.setInt32( "infobar_Text_green", t.infobar_Text_green );
@@ -330,6 +332,8 @@ void CThemes::getTheme(CConfigFile &configfile)
t.infobar_red = configfile.getInt32( "infobar_red", 0x00 );
t.infobar_green = configfile.getInt32( "infobar_green", 0x0e );
t.infobar_blue = configfile.getInt32( "infobar_blue", 0x23 );
t.infobar_gradient_top = configfile.getInt32( "infobar_gradient_top", 0 );
t.infobar_gradient_bottom = configfile.getInt32( "infobar_gradient_bottom", 0 );
t.infobar_Text_alpha = configfile.getInt32( "infobar_Text_alpha", 0x00 );
t.infobar_Text_red = configfile.getInt32( "infobar_Text_red", 0x64 );
t.infobar_Text_green = configfile.getInt32( "infobar_Text_green", 0x64 );

View File

@@ -1459,6 +1459,8 @@ typedef enum
LOCALE_MISCSETTINGS_INFOBAR_DISP_5,
LOCALE_MISCSETTINGS_INFOBAR_DISP_6,
LOCALE_MISCSETTINGS_INFOBAR_DISP_LOG,
LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_BOTTOM,
LOCALE_MISCSETTINGS_INFOBAR_GRADIENT_TOP,
LOCALE_MISCSETTINGS_INFOBAR_LOGO_HDD_DIR,
LOCALE_MISCSETTINGS_INFOBAR_SAT_DISPLAY,
LOCALE_MISCSETTINGS_INFOBAR_SHOW,

View File

@@ -1459,6 +1459,8 @@ const char * locale_real_names[] =
"miscsettings.infobar_disp_5",
"miscsettings.infobar_disp_6",
"miscsettings.infobar_disp_log",
"miscsettings.infobar_gradient_bottom",
"miscsettings.infobar_gradient_top",
"miscsettings.infobar_logo_hdd_dir",
"miscsettings.infobar_sat_display",
"miscsettings.infobar_show",

View File

@@ -104,6 +104,9 @@ struct SNeutrinoTheme
unsigned char infobar_Text_green;
unsigned char infobar_Text_blue;
int infobar_gradient_top;
int infobar_gradient_bottom;
unsigned char colored_events_alpha;
unsigned char colored_events_red;
unsigned char colored_events_green;
@@ -370,6 +373,8 @@ struct SNeutrinoSettings
int colored_events_channellist;
int colored_events_infobar;
int contrast_fonts;
int infobar_gradient_top;
int infobar_gradient_bottom;
//network
#define NETWORK_NFS_NR_OF_ENTRIES 8