From 59524329efde6c3e618f2ddc80c353b949a5a9e7 Mon Sep 17 00:00:00 2001 From: stephena Date: Thu, 14 Jul 2005 15:13:14 +0000 Subject: [PATCH] Some more changes for the 'height' command, cleaning up some crufty code. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@644 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba --- stella/src/debugger/Debugger.cxx | 80 +++++++++++++------------------- stella/src/debugger/Debugger.hxx | 15 +++++- 2 files changed, 44 insertions(+), 51 deletions(-) diff --git a/stella/src/debugger/Debugger.cxx b/stella/src/debugger/Debugger.cxx index 588465fea..85cea9236 100644 --- a/stella/src/debugger/Debugger.cxx +++ b/stella/src/debugger/Debugger.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Debugger.cxx,v 1.62 2005-07-14 11:28:37 stephena Exp $ +// $Id: Debugger.cxx,v 1.63 2005-07-14 15:13:14 stephena Exp $ //============================================================================ #include "bspf.hxx" @@ -85,28 +85,8 @@ Debugger::~Debugger() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Debugger::initialize() { -cerr << "Debugger::initialize()\n"; - // Calculate the actual pixels required for the # of lines - // This is currently a bit of a hack, since it uses pixel - // values that it shouldn't know about (font and tab height, etc) - int userHeight = myOSystem->settings().getInt("debugheight"); - if(userHeight < kDebuggerLines) - { - userHeight = kDebuggerLines; - myOSystem->settings().setInt("debugheight", userHeight); - } - userHeight = (userHeight + 3) * kDebuggerLineHeight - 8; - - int x = 0, - y = myConsole->mediaSource().height(), - w = kDebuggerWidth, - h = userHeight; - -cerr << "x = " << x << endl - << "y = " << y << endl - << "w = " << w << endl - << "h = " << h << endl - << endl; + int x, y, w, h; + getDialogBounds(&x, &y, &w, &h); delete myBaseDialog; DebuggerDialog *dd = new DebuggerDialog(myOSystem, this, x, y, w, h); @@ -123,23 +103,11 @@ cerr << "x = " << x << endl // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Debugger::initializeVideo() { -cerr << "Debugger::initializeVideo()\n"; - - // Calculate the actual pixels required for entire screen - // This is currently a bit of a hack, since it uses pixel - // values that it shouldn't know about (font and tab height, etc) - int userHeight = myOSystem->settings().getInt("debugheight"); - if(userHeight < kDebuggerLines) - userHeight = kDebuggerLines; - userHeight = (userHeight + 3) * kDebuggerLineHeight - 8 + - myConsole->mediaSource().height(); - -cerr << "w = " << kDebuggerWidth << endl - << "h = " << userHeight << endl - << endl; + int x, y, w, h; + getDialogBounds(&x, &y, &w, &h); string title = string("Stella ") + STELLA_VERSION + ": Debugger mode"; - myOSystem->frameBuffer().initialize(title, kDebuggerWidth, userHeight, false); + myOSystem->frameBuffer().initialize(title, w, y+h, false); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -701,23 +669,14 @@ int Debugger::dpeek(int addr) { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - int Debugger::setHeight(int height) { - // FIXME - this doesn't seem to work ... - -cerr << "debugheight: " << - myOSystem->settings().getInt("debugheight") -<< endl; - if(height < kDebuggerLines) height = kDebuggerLines; myOSystem->settings().setInt("debugheight", height); -cerr << "height: " << height << endl; - + // Inform the debugger dialog about the new size quit(); - - // FIXME - implement ScummVM resize code - + resizeDialog(); start(); return height; @@ -799,3 +758,26 @@ void Debugger::setQuitState() if(breakPoints->isSet(myCpuDebug->pc())) mySystem->m6502().execute(1); } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Debugger::getDialogBounds(int* x, int* y, int* w, int* h) +{ + int userHeight = myOSystem->settings().getInt("debugheight"); + if(userHeight < kDebuggerLines) + { + userHeight = kDebuggerLines; + myOSystem->settings().setInt("debugheight", userHeight); + } + userHeight = (userHeight + 3) * kDebuggerLineHeight - 8; + + *x = 0; + *y = myConsole->mediaSource().height(); + *w = kDebuggerWidth; + *h = userHeight; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Debugger::resizeDialog() +{ +cerr << "Debugger::resizeDialog()\n"; +} diff --git a/stella/src/debugger/Debugger.hxx b/stella/src/debugger/Debugger.hxx index 901c3e29d..e4cf485ce 100644 --- a/stella/src/debugger/Debugger.hxx +++ b/stella/src/debugger/Debugger.hxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Debugger.hxx,v 1.50 2005-07-14 11:28:37 stephena Exp $ +// $Id: Debugger.hxx,v 1.51 2005-07-14 15:13:14 stephena Exp $ //============================================================================ #ifndef DEBUGGER_HXX @@ -52,7 +52,7 @@ enum { for all debugging operations in Stella (parser, 6502 debugger, etc). @author Stephen Anthony - @version $Id: Debugger.hxx,v 1.50 2005-07-14 11:28:37 stephena Exp $ + @version $Id: Debugger.hxx,v 1.51 2005-07-14 15:13:14 stephena Exp $ */ class Debugger : public DialogContainer { @@ -232,6 +232,17 @@ class Debugger : public DialogContainer */ void setQuitState(); + /** + Get the dimensions of the debugger dialog (takes mediasource into account) + */ + void getDialogBounds(int* x, int* y, int* w, int* h); + + /** + Resize the debugger dialog based on the current dimensions from + getDialogBounds. + */ + void resizeDialog(); + void toggleBreakPoint(int bp); bool breakPoint(int bp);