mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-28 16:01:20 +02:00
neutrino: resize framebuffer on videomode change
this is needed on spark because the framebuffer has the same resolution as the video plane...
This commit is contained in:
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user