diff --git a/src/driver/fontrenderer.cpp b/src/driver/fontrenderer.cpp index f6a8d4d63..7cffe2e22 100644 --- a/src/driver/fontrenderer.cpp +++ b/src/driver/fontrenderer.cpp @@ -246,6 +246,7 @@ Font::Font(FBFontRenderClass *render, FTC_FaceID faceid, const int isize, const xmult = frameBuffer->scaleX(SCALE_MULT, false); ymult = frameBuffer->scaleY(SCALE_MULT, false); + last_xmult = xmult; setSize(isize); } @@ -258,6 +259,7 @@ FT_Error Font::getGlyphBitmap(FT_ULong glyph_index, FTC_SBit *sbit) int Font::setSize(int isize) { int temp = font.width; + last_size = isize; font.width = isize * xmult / SCALE_MULT; font.height = isize * ymult / SCALE_MULT; scaler.width = font.width * 64; @@ -379,6 +381,13 @@ void Font::RenderString(int _x, int _y, const int _width, const char *text, cons if (!frameBuffer->getActive()) return; + if ((xmult = frameBuffer->scaleX(SCALE_MULT, false)) != last_xmult) + { + last_xmult = xmult; + ymult = frameBuffer->scaleY(SCALE_MULT, false); + setSize(last_size); + } + int x = _x * xmult / SCALE_MULT; int y = _y * ymult / SCALE_MULT; int boxheight = _boxheight * ymult / SCALE_MULT; diff --git a/src/driver/fontrenderer.h b/src/driver/fontrenderer.h index 508339459..01f730dbf 100644 --- a/src/driver/fontrenderer.h +++ b/src/driver/fontrenderer.h @@ -54,6 +54,7 @@ class Font int height,DigitHeight,DigitOffset,ascender,descender,upper,lower; int fontwidth; int xmult, ymult; + int last_xmult, last_size; public: enum fontmodifier diff --git a/src/driver/framebuffer_spark.cpp b/src/driver/framebuffer_spark.cpp index f968d8798..e654c9afd 100644 --- a/src/driver/framebuffer_spark.cpp +++ b/src/driver/framebuffer_spark.cpp @@ -693,7 +693,7 @@ void CFrameBuffer::paintHLineRel(int x, int dx, int y, const fb_pixel_t col) return; int _x = scaleX(x); int _y = scaleY(y); - int _dx = scaleY(dx); + int _dx = scaleX(dx); blitRect(_x, _y, _dx, 1, col); } @@ -1483,6 +1483,7 @@ void CFrameBuffer::resize(int format) yRes = xyres[format][1]; bpp = 32; stride = xRes * bpp / 8; + fprintf(stderr, "CFrameBuffer::resize(%d): %d x %d\n", format, xRes, yRes); } void CFrameBuffer::blitRect(int x, int y, int width, int height, unsigned long color) diff --git a/src/gui/videosettings.cpp b/src/gui/videosettings.cpp index 7a98d8634..ceea9b537 100644 --- a/src/gui/videosettings.cpp +++ b/src/gui/videosettings.cpp @@ -318,6 +318,7 @@ void CVideoSettings::setupVideoSystem(bool do_ask) { printf("[neutrino VideoSettings] %s setup videosystem...\n", __FUNCTION__); videoDecoder->SetVideoSystem(g_settings.video_Mode); //FIXME + frameBuffer->resize(g_settings.video_Mode); if (do_ask) { @@ -328,6 +329,7 @@ void CVideoSettings::setupVideoSystem(bool do_ask) { g_settings.video_Mode = prev_video_mode; videoDecoder->SetVideoSystem(g_settings.video_Mode); + frameBuffer->resize(g_settings.video_Mode); } } else @@ -491,6 +493,7 @@ void CVideoSettings::nextMode(void) g_settings.video_Mode = VIDEOMENU_VIDEOMODE_OPTIONS[curmode].key; //CVFD::getInstance()->ShowText(text); videoDecoder->SetVideoSystem(g_settings.video_Mode); + frameBuffer->resize(g_settings.video_Mode); //return; disp_cur = 1; }