mirror of
https://projects.vdr-developer.org/git/vdr-plugin-tvguide.git
synced 2023-10-05 15:01:48 +02:00
implemented GraphicsMagick compatibility
This commit is contained in:
parent
5bf7c3a84e
commit
3952cad3d4
4
HISTORY
4
HISTORY
@ -80,3 +80,7 @@ Version 1.1.0
|
||||
-l logo directory
|
||||
- changed detailed epg view using full screen, some further optimisations
|
||||
- search for <event_id>_0.jpg beside <event_id>.jpg as epg image
|
||||
- implemented GraphicsMagick compatibility (thanks @Manuel Reimer
|
||||
for providing the patch)
|
||||
- changed Makefile to support both ImageMagick and GraphicsMagick
|
||||
(configurable in Makefile)
|
||||
|
15
Makefile
15
Makefile
@ -3,6 +3,9 @@
|
||||
#
|
||||
# $Id$
|
||||
|
||||
# External image lib to use: imagemagick, graphicsmagick
|
||||
IMAGELIB = imagemagick
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
# By default the main source file also carries this name.
|
||||
@ -44,13 +47,15 @@ SOFILE = libvdr-$(PLUGIN).so
|
||||
|
||||
### Includes and Defines (add further entries here):
|
||||
|
||||
INCLUDES += $(shell pkg-config --cflags-only-I Magick++)
|
||||
|
||||
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
||||
DEFINES += -DMAGICKCORE_HDRI_ENABLE=0
|
||||
DEFINES += -DMAGICKCORE_QUANTUM_DEPTH=16
|
||||
|
||||
LIBS += $(shell pkg-config --libs Magick++)
|
||||
ifeq ($(IMAGELIB), imagemagick)
|
||||
INCLUDES += $(shell pkg-config --cflags Magick++)
|
||||
LIBS += $(shell pkg-config --libs Magick++)
|
||||
else ifeq ($(IMAGELIB), graphicsmagick)
|
||||
INCLUDES += $(shell pkg-config --cflags GraphicsMagick++)
|
||||
LIBS += $(shell pkg-config --libs GraphicsMagick++)
|
||||
endif
|
||||
|
||||
### The object files (add further files here):
|
||||
|
||||
|
@ -101,14 +101,7 @@ bool cImageLoader::LoadOsdElement(cString name, int width, int height) {
|
||||
bool cImageLoader::DrawBackground(tColor back, tColor blend, int width, int height) {
|
||||
if ((width < 1) || (height < 1) || (width > 1920) || (height > 1080))
|
||||
return false;
|
||||
Color Back = Argb2Color(back);
|
||||
Color Blend = Argb2Color(blend);
|
||||
Image tmp(Geometry(width, height), Blend);
|
||||
double arguments[9] = {0.0,(double)height,0.0,-1*(double)width,0.0,0.0,1.5*(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;
|
||||
CreateGradient(back, blend, width, height, 0.8, 0.8);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -130,3 +123,28 @@ cImage cImageLoader::GetImage() {
|
||||
}
|
||||
return image;
|
||||
}
|
||||
|
||||
void cImageLoader::CreateGradient(tColor back, tColor blend, int width, int height, double wfactor, double hfactor) {
|
||||
Color Back = Argb2Color(back);
|
||||
Color Blend = Argb2Color(blend);
|
||||
int maxw = MaxRGB * wfactor;
|
||||
int maxh = MaxRGB * hfactor;
|
||||
|
||||
Image imgblend(Geometry(width, height), Blend);
|
||||
imgblend.modifyImage();
|
||||
imgblend.type(TrueColorMatteType);
|
||||
PixelPacket *pixels = imgblend.getPixels(0, 0, width, height);
|
||||
for (int x = 0; x < width; x++) {
|
||||
for (int y = 0; y < height; y++) {
|
||||
PixelPacket *pixel = pixels + y * width + x;
|
||||
int opacity = (maxw / width * x + maxh - maxh / height * y) / 2;
|
||||
pixel->opacity = (opacity <= MaxRGB) ? opacity : MaxRGB;
|
||||
}
|
||||
}
|
||||
imgblend.syncPixels();
|
||||
|
||||
Image imgback(Geometry(width, height), Back);
|
||||
imgback.composite(imgblend, 0, 0, OverCompositeOp);
|
||||
|
||||
buffer = imgback;
|
||||
}
|
@ -22,6 +22,8 @@ public:
|
||||
bool LoadIcon(const char *cIcon, int size);
|
||||
bool LoadOsdElement(cString name, int width, int height);
|
||||
bool DrawBackground(tColor back, tColor blend, int width, int height);
|
||||
private:
|
||||
void CreateGradient(tColor back, tColor blend, int width, int height, double wfactor, double hfactor);
|
||||
};
|
||||
|
||||
#endif //_TVGUIDE_IMAGELOADER_H
|
||||
|
Loading…
Reference in New Issue
Block a user