Fix NewGui for higher resolutions (eg, CMI)

svn-id: r6216
This commit is contained in:
James Brown 2002-12-28 04:51:34 +00:00
parent ae5b30df3d
commit 92c8e4ef1e
6 changed files with 19 additions and 8 deletions

View File

@ -1008,6 +1008,14 @@ void OSystem_SDL_Common::clear_overlay()
_forceFull = true;
}
int16 OSystem_SDL_Common::get_height() {
return _screenHeight;
}
int16 OSystem_SDL_Common::get_width() {
return _screenWidth;
}
void OSystem_SDL_Common::grab_overlay(int16 *buf, int pitch)
{
if (!_overlayVisible)

View File

@ -109,6 +109,8 @@ public:
virtual void clear_overlay();
virtual void grab_overlay(int16 *buf, int pitch);
virtual void copy_rect_overlay(const int16 *buf, int pitch, int x, int y, int w, int h);
virtual int16 OSystem_SDL_Common::get_height();
virtual int16 OSystem_SDL_Common::get_width();
// Methods that convert RBG to/from colors suitable for the overlay.
virtual int16 RBGToColor(uint8 r, uint8 g, uint8 b);

View File

@ -47,8 +47,8 @@ This code is not finished, so please don't complain :-)
* - add a scrollbar widget to allow scrolling in the history
* - a *lot* of others things, this code is in no way complete and heavily under progress
*/
ConsoleDialog::ConsoleDialog(NewGui *gui)
: Dialog(gui, 0, 0, 320, 12*kLineHeight+2)
ConsoleDialog::ConsoleDialog(NewGui *gui, int _realWidth)
: Dialog(gui, 0, 0, _realWidth, 12*kLineHeight+2)
{
_lineWidth = (_w - kScrollBarWidth - 2) / kCharWidth;
_linesPerPage = (_h - 2) / kLineHeight;

View File

@ -69,7 +69,7 @@ protected:
int _historyLine;
public:
ConsoleDialog(NewGui *gui);
ConsoleDialog(NewGui *gui, int _realWidth);
void open();
void drawDialog();

View File

@ -213,15 +213,16 @@ void NewGui::runLoop()
void NewGui::saveState()
{
int sys_height = _system->get_height();
int sys_width = _system->get_width();
// Backup old cursor
_oldCursorMode = _system->show_mouse(true);
_system->show_overlay();
// TODO - add getHeight & getWidth methods to OSystem.
_screen = new int16[320 * 240];
_screenPitch = 320;
// _screen = new int16[_system->get_width() * _system->get_height()];
// _screenPitch = _system->get_width();
_screen = new int16[sys_width * sys_height];
_screenPitch = sys_width;
_system->grab_overlay(_screen, _screenPitch);
_currentKeyDown.keycode = 0;

View File

@ -128,7 +128,7 @@ void ScummDebugger::enter()
{
#ifdef USE_CONSOLE
if (!_s->_debuggerDialog) {
_s->_debuggerDialog = new ConsoleDialog(_s->_newgui);
_s->_debuggerDialog = new ConsoleDialog(_s->_newgui, _s->_realWidth);
Debug_Printf("Debugger started, type 'exit' to return to the game\n");
}