diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2012-02-22 17:15:31 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2012-02-22 17:15:31 +0100 |
commit | a3d37dfc7104393a859be58181ac2ecfe1d72f75 (patch) | |
tree | 2cd04225cca5828325126b888885309e01a938d2 | |
parent | a949b9c7d2bc14d2f6322764c88f4d11261680f1 (diff) | |
download | vdr-a3d37dfc7104393a859be58181ac2ecfe1d72f75.tar.gz vdr-a3d37dfc7104393a859be58181ac2ecfe1d72f75.tar.bz2 |
Fixed upscaling cBitmaps with anti-aliasing
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | osd.c | 5 |
3 files changed, 6 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index b132516b..82a09374 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1133,6 +1133,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi> for improving handling subtitles of BBC channels for fixing handling subtitle color palettes on channels where subtitles appear "word by word" + for reporting a problem with color palettes in subtitles Ralf Klueber <ralf.klueber@vodafone.com> for reporting a bug in cutting a recording if there is only a single editing mark @@ -6906,3 +6906,5 @@ Video Disk Recorder Revision History - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Fixed handling subtitle color palettes on channels where subtitles appear "word by word" (thanks to Rolf Ahrenberg). +- Fixed upscaling cBitmaps with anti-aliasing (thanks to Rolf Ahrenberg for reporting + a problem with color palettes in subtitles). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.c 2.23 2011/08/15 09:27:39 kls Exp $ + * $Id: osd.c 2.24 2012/02/22 16:13:04 kls Exp $ */ #include "osd.h" @@ -812,11 +812,11 @@ cBitmap *cBitmap::Scaled(double FactorX, double FactorY, bool AntiAlias) // Fixed point scaling code based on www.inversereality.org/files/bitmapscaling.pdf // by deltener@mindtremors.com cBitmap *b = new cBitmap(int(round(Width() * FactorX)), int(round(Height() * FactorY)), Bpp(), X0(), Y0()); - b->Replace(*this); // copy palette int RatioX = (Width() << 16) / b->Width(); int RatioY = (Height() << 16) / b->Height(); if (!AntiAlias || FactorX <= 1.0 && FactorY <= 1.0) { // Downscaling - no anti-aliasing: + b->Replace(*this); // copy palette tIndex *DestRow = b->bitmap; int SourceY = 0; for (int y = 0; y < b->Height(); y++) { @@ -834,6 +834,7 @@ cBitmap *cBitmap::Scaled(double FactorX, double FactorY, bool AntiAlias) else { // Upscaling - anti-aliasing: b->SetBpp(8); + b->Replace(*this); // copy palette (must be done *after* SetBpp()!) int SourceY = 0; for (int y = 0; y < b->Height() - 1; y++) { int SourceX = 0; |