diff options
author | louis <louis.braun@gmx.de> | 2015-03-31 06:57:02 +0200 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-03-31 06:57:02 +0200 |
commit | 3d43200af00372dd54abe2b86b00ca15a4fc6d82 (patch) | |
tree | 0acd63aa794fabae179d90c74e7ad38ad9d872c0 /libcore | |
parent | 1ba2ae905ad33f8e311100fd4e9e48653ca4b63d (diff) | |
download | vdr-plugin-skindesigner-3d43200af00372dd54abe2b86b00ca15a4fc6d82.tar.gz vdr-plugin-skindesigner-3d43200af00372dd54abe2b86b00ca15a4fc6d82.tar.bz2 |
added possibility to draw vertical text bottomum and topdown
Diffstat (limited to 'libcore')
-rw-r--r-- | libcore/cairoimage.c | 15 | ||||
-rw-r--r-- | libcore/cairoimage.h | 2 | ||||
-rw-r--r-- | libcore/imagecache.c | 6 | ||||
-rw-r--r-- | libcore/imagecache.h | 2 |
4 files changed, 17 insertions, 8 deletions
diff --git a/libcore/cairoimage.c b/libcore/cairoimage.c index 476b5f2..4b2bcab 100644 --- a/libcore/cairoimage.c +++ b/libcore/cairoimage.c @@ -1,4 +1,5 @@ #include "cairoimage.h" +#include "../libtemplate/templatefunction.h" cCairoImage::cCairoImage(void) { surface = NULL; @@ -21,18 +22,26 @@ void cCairoImage::InitCairoImage(int width, int height) { cairo_set_antialias(cr, CAIRO_ANTIALIAS_SUBPIXEL); } -void cCairoImage::DrawTextVertical(string text, tColor color, string font, int size) { +void cCairoImage::DrawTextVertical(string text, tColor color, string font, int size, int direction) { int imgHeight = GetTextWidth(text, font, size); InitCairoImage(size * 1.2, imgHeight); SetColor(color); - cairo_move_to (cr, size, imgHeight); cairo_font_weight_t fontWeight = CAIRO_FONT_WEIGHT_NORMAL; cairo_font_slant_t fontSlant = CAIRO_FONT_SLANT_NORMAL; cairo_select_font_face (cr, font.c_str(), fontSlant, fontWeight); cairo_set_font_size (cr, size); - cairo_rotate(cr, 3*M_PI/2); + int x = size; + int y = imgHeight; + double rotate = 3*M_PI/2; + if (direction == diTopDown) { + rotate = M_PI/2; + x = size*0.3; + y = 0; + } + cairo_move_to (cr, x, y); + cairo_rotate(cr, rotate); cairo_show_text (cr, text.c_str()); } diff --git a/libcore/cairoimage.h b/libcore/cairoimage.h index 02e9c89..27fb6f3 100644 --- a/libcore/cairoimage.h +++ b/libcore/cairoimage.h @@ -20,7 +20,7 @@ public: cCairoImage(void); virtual ~cCairoImage(); void InitCairoImage(int width, int height); - void DrawTextVertical(string text, tColor color, string font, int size); + void DrawTextVertical(string text, tColor color, string font, int size, int direction); cImage *GetImage(void); }; #endif //__CAIROIMAGE_H
\ No newline at end of file diff --git a/libcore/imagecache.c b/libcore/imagecache.c index e6188d2..ad063f6 100644 --- a/libcore/imagecache.c +++ b/libcore/imagecache.c @@ -332,17 +332,17 @@ cImage *cImageCache::GetSkinpart(string name, int width, int height) { return NULL; } -cImage *cImageCache::GetVerticalText(string text, tColor color, string font, int size) { +cImage *cImageCache::GetVerticalText(string text, tColor color, string font, int size, int direction) { cMutexLock MutexLock(&mutex); stringstream buf; - buf << text << "_" << size; + buf << text << "_" << size << "_" << direction; string imgName = buf.str(); map<string, cImage*>::iterator hit = cairoImageCache.find(imgName); if (hit != cairoImageCache.end()) { return (cImage*)hit->second; } else { cCairoImage c; - c.DrawTextVertical(text, color, font, size); + c.DrawTextVertical(text, color, font, size, direction); cImage *image = c.GetImage(); cairoImageCache.insert(pair<string, cImage*>(imgName, image)); hit = cairoImageCache.find(imgName); diff --git a/libcore/imagecache.h b/libcore/imagecache.h index f2c04f3..207dbb0 100644 --- a/libcore/imagecache.h +++ b/libcore/imagecache.h @@ -31,7 +31,7 @@ public: void CacheSkinpart(string path, int width, int height); cImage *GetSkinpart(string name, int width, int height); //cairo special images - cImage *GetVerticalText(string text, tColor color, string font, int size); + cImage *GetVerticalText(string text, tColor color, string font, int size, int direction); //helpers void Clear(void); void Debug(bool full); |