CFBWindow: Add saveScreen() & restoreScreen() for using...

...in external plugins
This commit is contained in:
M. Liebmann
2015-11-27 12:11:54 +01:00
parent a307e806eb
commit 895b781629
2 changed files with 21 additions and 6 deletions

View File

@@ -38,17 +38,29 @@ CFBWindow::CFBWindow(const int _x, const int _y, const int _dx, const int _dy)
dy = _dy; dy = _dy;
frameBuffer = CFrameBuffer::getInstance(); frameBuffer = CFrameBuffer::getInstance();
Background = new fb_pixel_t [_dx * _dy]; Background = saveScreen(_x, _y, _dx, _dy);
if (Background != NULL)
frameBuffer->SaveScreen(_x, _y, _dx, _dy, Background);
} }
CFBWindow::~CFBWindow(void) CFBWindow::~CFBWindow(void)
{ {
if (Background != NULL) if (Background != NULL)
frameBuffer->RestoreScreen(x, y, dx, dy, Background); restoreScreen(x, y, dx, dy, Background, true);
delete[] Background; }
fb_pixel_t* CFBWindow::saveScreen(const int _x, const int _y, const int _dx, const int _dy)
{
fb_pixel_t* buf = new fb_pixel_t [_dx * _dy];
if (buf != NULL)
frameBuffer->SaveScreen(_x, _y, _dx, _dy, buf);
return buf;
}
void CFBWindow::restoreScreen(const int _x, const int _y, const int _dx, const int _dy, fb_pixel_t* buf, bool delBuf)
{
if (buf != NULL)
frameBuffer->RestoreScreen(_x, _y, _dx, _dy, buf);
if (delBuf)
delete[] buf;
} }
void CFBWindow::paintBoxRel(const int _x, const int _y, const int _dx, const int _dy, const color_t _col, int radius, int type) void CFBWindow::paintBoxRel(const int _x, const int _y, const int _dx, const int _dy, const color_t _col, int radius, int type)

View File

@@ -45,6 +45,9 @@ class CFBWindow
void paintBoxRel(const int _x, const int _y, const int _dx, const int _dy, const color_t _col, int radius = 0, int type = 0xF); void paintBoxRel(const int _x, const int _y, const int _dx, const int _dy, const color_t _col, int radius = 0, int type = 0xF);
bool paintIcon(const char * const _filename, const int _x, const int _y, const int _h = 0, const color_t _offset = 1); bool paintIcon(const char * const _filename, const int _x, const int _y, const int _h = 0, const color_t _offset = 1);
void RenderString(const font_t _font, const int _x, const int _y, const int _width, const char * const _text, const color_t _color, const int _boxheight = 0, const unsigned int _flags = Font::IS_UTF8); void RenderString(const font_t _font, const int _x, const int _y, const int _width, const char * const _text, const color_t _color, const int _boxheight = 0, const unsigned int _flags = Font::IS_UTF8);
fb_pixel_t* saveScreen(const int _x, const int _y, const int _dx, const int _dy);
void restoreScreen(const int _x, const int _y, const int _dx, const int _dy, fb_pixel_t* buf, bool delBuf);
}; };
#endif /* __fb_window_h__ */ #endif /* __fb_window_h__ */