mirror of
https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
synced 2023-10-05 15:01:48 +02:00
Added config option style nOpacity for backgrounds and theme nOpacity
This commit is contained in:
parent
c9bc7e0735
commit
e895a02d97
2
HISTORY
2
HISTORY
@ -8,3 +8,5 @@ VDR Plugin 'tvguide' Revision History
|
||||
2013-01-17: Version 0.0.2
|
||||
|
||||
- Changed color buttons to nOpacity style
|
||||
- Changed channelheader to display transparent logos properly
|
||||
- Added "style nOpacity" for backgrounds and theme nOpacity
|
||||
|
@ -16,6 +16,7 @@ cDetailView::cDetailView(cEpgGrid *grid) {
|
||||
|
||||
cDetailView::~cDetailView(void){
|
||||
delete header;
|
||||
osdManager.releasePixmap(headerLogo);
|
||||
osdManager.releasePixmap(content);
|
||||
osdManager.releasePixmap(scrollBar);
|
||||
osdManager.releasePixmap(footer);
|
||||
@ -36,6 +37,9 @@ void cDetailView::createPixmaps() {
|
||||
|
||||
header = new cStyledPixmap(osdManager.requestPixmap(5, cRect(borderWidth, borderWidth, tvguideConfig.osdWidth - 2*borderWidth, headerHeight), cRect::Null, "detailViewHeader"), "detailViewHeader");
|
||||
header->SetAlpha(0);
|
||||
headerLogo = osdManager.requestPixmap(6, cRect(borderWidth, borderWidth, tvguideConfig.osdWidth - 2*borderWidth, headerHeight), cRect::Null, "detailViewHeaderLogo");
|
||||
headerLogo->Fill(clrTransparent);
|
||||
headerLogo->SetAlpha(0);
|
||||
header->setColor(theme.Color(clrHeader), theme.Color(clrHeaderBlending));
|
||||
content = osdManager.requestPixmap(5, cRect(borderWidth, borderWidth + headerHeight, tvguideConfig.osdWidth - 2*borderWidth - scrollBarWidth, tvguideConfig.osdHeight-2*borderWidth-headerHeight),
|
||||
cRect(0,0, tvguideConfig.osdWidth - 2*borderWidth - scrollBarWidth, max(heightContent, tvguideConfig.osdHeight-2*borderWidth-headerHeight)));
|
||||
@ -51,7 +55,7 @@ void cDetailView::createPixmaps() {
|
||||
}
|
||||
|
||||
void cDetailView::drawHeader() {
|
||||
header->drawBackground();
|
||||
header->drawBackground();
|
||||
header->drawBoldBorder();
|
||||
|
||||
int lineHeight = tvguideConfig.FontDetailHeader->Height();
|
||||
@ -63,7 +67,7 @@ void cDetailView::drawHeader() {
|
||||
} else {
|
||||
if (imgLoader.LoadLogo(grid->column->getChannel()->Name())) {
|
||||
cImage logo = imgLoader.GetImage();
|
||||
header->DrawImage(cPoint(20, 20), logo);
|
||||
headerLogo->DrawImage(cPoint(20, 20), logo);
|
||||
}
|
||||
offset += tvguideConfig.logoHeight;
|
||||
}
|
||||
@ -172,6 +176,7 @@ void cDetailView::Action(void) {
|
||||
double t = min(double(Now - Start) / FadeTime, 1.0);
|
||||
int Alpha = t * ALPHA_OPAQUE;
|
||||
header->SetAlpha(Alpha);
|
||||
headerLogo->SetAlpha(Alpha);
|
||||
content->SetAlpha(Alpha);
|
||||
scrollBar->SetAlpha(Alpha);
|
||||
footer->SetAlpha(Alpha);
|
||||
|
@ -9,6 +9,7 @@ class cDetailView : public cThread {
|
||||
private:
|
||||
cEpgGrid *grid;
|
||||
cStyledPixmap *header;
|
||||
cPixmap *headerLogo;
|
||||
cPixmap *content;
|
||||
cPixmap *scrollBar;
|
||||
cPixmap *footer;
|
||||
|
@ -44,7 +44,9 @@ bool cImageLoader::LoadEPGImage(int eventID) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void cImageLoader::DrawBackground(tColor back, tColor blend, int width, int height) {
|
||||
bool cImageLoader::DrawBackground(tColor back, tColor blend, int width, int height) {
|
||||
if ((width == 0) || (height == 0))
|
||||
return false;
|
||||
Color Back = Argb2Color(back);
|
||||
Color Blend = Argb2Color(blend);
|
||||
Image tmp(Geometry(width, height), Blend);
|
||||
@ -53,17 +55,7 @@ void cImageLoader::DrawBackground(tColor back, tColor blend, int width, int heig
|
||||
Image tmp2(Geometry(width, height), Back);
|
||||
tmp.composite(tmp2, 0, 0, OverlayCompositeOp);
|
||||
buffer = tmp;
|
||||
}
|
||||
|
||||
void cImageLoader::DrawBackground2(tColor back, tColor blend, int width, int height) {
|
||||
Color Back = Argb2Color(back);
|
||||
Color Blend = Argb2Color(blend);
|
||||
Image tmp(Geometry(width, height), Blend);
|
||||
double arguments[9] = {0.0,(double)height,0.0,-0.5*(double)width,0.0,0.0,0.75*(double)width,0.0,1.0};
|
||||
tmp.sparseColor(MatteChannel, BarycentricColorInterpolate, 9, arguments);
|
||||
Image tmp2(Geometry(width, height), Back);
|
||||
tmp.composite(tmp2, 0, 0, OverlayCompositeOp);
|
||||
buffer = tmp;
|
||||
return true;
|
||||
}
|
||||
|
||||
cImage cImageLoader::GetImage() {
|
||||
|
@ -16,8 +16,7 @@ public:
|
||||
cImage GetImage();
|
||||
bool LoadLogo(const char *logo, int width, int height);
|
||||
bool LoadEPGImage(int eventID);
|
||||
void DrawBackground(tColor back, tColor blend, int width, int height);
|
||||
void DrawBackground2(tColor back, tColor blend, int width, int height);
|
||||
bool DrawBackground(tColor back, tColor blend, int width, int height);
|
||||
private:
|
||||
Image buffer;
|
||||
Color Argb2Color(tColor col);
|
||||
|
5
setup.c
5
setup.c
@ -135,6 +135,9 @@ cMenuSetupScreenLayout::cMenuSetupScreenLayout(cTvguideConfig* data) : cMenuSet
|
||||
hideChannelLogosItems[1] = trVDR("no");
|
||||
logoExtensionItems[0] = "png";
|
||||
logoExtensionItems[1] = "jpg";
|
||||
blendingMethods[0] = "none";
|
||||
blendingMethods[1] = "classic";
|
||||
blendingMethods[2] = "nOpacity style";
|
||||
Set();
|
||||
}
|
||||
|
||||
@ -143,7 +146,7 @@ void cMenuSetupScreenLayout::Set(void) {
|
||||
Clear();
|
||||
if (themes.NumThemes())
|
||||
Add(new cMenuEditStraItem(tr("Theme"), &tmpTvguideConfig->themeIndex, themes.NumThemes(), themes.Descriptions()));
|
||||
Add(new cMenuEditBoolItem(tr("Use color gradients"), &tmpTvguideConfig->useBlending));
|
||||
Add(new cMenuEditStraItem(tr("Use color gradients"), &tmpTvguideConfig->useBlending, 3, blendingMethods));
|
||||
Add(new cMenuEditBoolItem(tr("Rounded Corners"), &tmpTvguideConfig->roundedCorners));
|
||||
Add(new cMenuEditIntItem(tr("Width of Timeline"), &tmpTvguideConfig->timeColWidth, 50, 300));
|
||||
Add(new cMenuEditIntItem(tr("Height of Header"), &tmpTvguideConfig->headerHeight, 50, 300));
|
||||
|
1
setup.h
1
setup.h
@ -38,6 +38,7 @@ class cMenuSetupScreenLayout : public cMenuSetupSubMenu {
|
||||
cThemes themes;
|
||||
const char * hideChannelLogosItems[2];
|
||||
const char * logoExtensionItems[2];
|
||||
const char * blendingMethods[3];
|
||||
void Set(void);
|
||||
public:
|
||||
cMenuSetupScreenLayout(cTvguideConfig *data);
|
||||
|
@ -22,11 +22,13 @@ void cStyledPixmap::setPixmap(cPixmap *pixmap) {
|
||||
}
|
||||
|
||||
void cStyledPixmap::drawBackground() {
|
||||
if (!tvguideConfig.useBlending) {
|
||||
pixmap->Fill(color);
|
||||
} else {
|
||||
if (tvguideConfig.useBlending == 1){
|
||||
drawBlendedBackground();
|
||||
}
|
||||
} else if (tvguideConfig.useBlending == 2){
|
||||
drawSparsedBackground();
|
||||
} else {
|
||||
pixmap->Fill(color);
|
||||
}
|
||||
}
|
||||
|
||||
void cStyledPixmap::drawBlendedBackground() {
|
||||
@ -52,6 +54,15 @@ void cStyledPixmap::drawBlendedBackground() {
|
||||
}
|
||||
}
|
||||
|
||||
void cStyledPixmap::drawSparsedBackground() {
|
||||
int width = pixmap->ViewPort().Width();
|
||||
int height = pixmap->ViewPort().Height();
|
||||
cImageLoader imgLoader;
|
||||
if (imgLoader.DrawBackground(colorBlending, color, width, height))
|
||||
pixmap->DrawImage(cPoint(0,0), imgLoader.GetImage());
|
||||
|
||||
}
|
||||
|
||||
void cStyledPixmap::drawBorder() {
|
||||
int width = pixmap->ViewPort().Width();
|
||||
int height = pixmap->ViewPort().Height();
|
||||
|
@ -19,6 +19,7 @@ public:
|
||||
virtual ~cStyledPixmap(void);
|
||||
void drawBackground();
|
||||
void drawBlendedBackground();
|
||||
void drawSparsedBackground();
|
||||
void drawBorder();
|
||||
void drawBoldBorder();
|
||||
void drawDefaultBorder(int width, int height);
|
||||
|
28
themes/tvguide-nOpacity.theme
Normal file
28
themes/tvguide-nOpacity.theme
Normal file
@ -0,0 +1,28 @@
|
||||
Description = nOpacity
|
||||
clrBackground = FF000000
|
||||
clrBackgroundOSD = FF000000
|
||||
clrGrid1 = EE444444
|
||||
clrGrid1Blending = 90000000
|
||||
clrGrid2 = EE888888
|
||||
clrGrid2Blending = 90000000
|
||||
clrHighlight = EE0033FF
|
||||
clrHighlightBlending = DD000000
|
||||
clrFont = FFFFFFFF
|
||||
clrFontHeader = FFFFFFFF
|
||||
clrFontButtons = FFFFFFFF
|
||||
clrHeader = EE444444
|
||||
clrHeaderBlending = 90000000
|
||||
clrBorder = DD003DF5
|
||||
clrTimeline1 = BBFFFFFF
|
||||
clrTimeline1Blending = 90828282
|
||||
clrTimeline2 = BB000000
|
||||
clrTimeline2Blending = 903F3F3F
|
||||
clrButtonRed = 99BB0000
|
||||
clrButtonRedBorder = FFBB0000
|
||||
clrButtonGreen = 9900BB00
|
||||
clrButtonGreenBorder = FF00BB00
|
||||
clrButtonYellow = 99BBBB00
|
||||
clrButtonYellowBorder = FFBBBB00
|
||||
clrButtonBlue = 990000BB
|
||||
clrButtonBlueBorder = FF0000BB
|
||||
clrButtonBlend = DD000000
|
17
timeline.c
17
timeline.c
@ -80,9 +80,10 @@ void cTimeLine::drawTimeline() {
|
||||
}
|
||||
|
||||
cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, tColor clrBlend) {
|
||||
cImage *image = new cImage(cSize(width, height));
|
||||
image->Fill(clrBgr);
|
||||
if (tvguideConfig.useBlending) {
|
||||
cImage *image = NULL;
|
||||
if (tvguideConfig.useBlending == 1) {
|
||||
image = new cImage(cSize(width, height));
|
||||
image->Fill(clrBgr);
|
||||
int stepY = 0.5*height / 64;
|
||||
int alpha = 0x00;
|
||||
tColor clr;
|
||||
@ -95,7 +96,15 @@ cImage *cTimeLine::createBackgroundImage(int width, int height, tColor clrBgr, t
|
||||
}
|
||||
alpha += 0x04;
|
||||
}
|
||||
}
|
||||
} else if (tvguideConfig.useBlending == 2) {
|
||||
cImageLoader imgLoader;
|
||||
if (imgLoader.DrawBackground(clrBgr, clrBlend, width, height)) {
|
||||
image = new cImage(imgLoader.GetImage());
|
||||
}
|
||||
} else {
|
||||
image = new cImage(cSize(width, height));
|
||||
image->Fill(clrBgr);
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user