Added OSystem::getDefaultGraphicsMode(); renamed OSystem::get_height() and get_width() to getHeight and getWidth(); augmented some doxygen comments in common/system.h

svn-id: r13284
This commit is contained in:
Max Horn 2004-03-15 00:45:45 +00:00
parent b585b9ac4b
commit e46ba2f29f
12 changed files with 145 additions and 67 deletions

View File

@ -649,10 +649,10 @@ void OSystem_PALMOS::updateScreen() {
if (oldCol != gVars->indicator.on) {
// redraw if needed
if (_lastKeyModifier)
draw1BitGfx((kDrawKeyState + _lastKeyModifier - 1), 2, get_height() + 2, true);
draw1BitGfx((kDrawKeyState + _lastKeyModifier - 1), 2, getHeight() + 2, true);
if(_useNumPad)
draw1BitGfx(kDrawNumPad, (get_width() >> 1) - 32, get_height() + 2, true);
draw1BitGfx(kDrawNumPad, (getWidth() >> 1) - 32, getHeight() + 2, true);
}
}
@ -1058,9 +1058,9 @@ bool OSystem_PALMOS::poll_event(Event *event) {
_lastKeyModifier %= 4;
if (_lastKeyModifier)
draw1BitGfx((kDrawKeyState + _lastKeyModifier - 1), 2, get_height() + 2, true);
draw1BitGfx((kDrawKeyState + _lastKeyModifier - 1), 2, getHeight() + 2, true);
else
draw1BitGfx(kDrawKeyState, 2, get_height() + 2, false);
draw1BitGfx(kDrawKeyState, 2, getHeight() + 2, false);
} else {
byte b = 0;
@ -1075,7 +1075,7 @@ bool OSystem_PALMOS::poll_event(Event *event) {
} else if (ev.data.keyDown.chr == 'n' && b == KBD_CTRL) {
UInt8 *scr = _screenP + _screenWidth * (_screenHeight + 2);
_useNumPad = !_useNumPad;
draw1BitGfx(kDrawNumPad, (get_width() >> 1) - 32, get_height() + 2, _useNumPad);
draw1BitGfx(kDrawNumPad, (getWidth() >> 1) - 32, getHeight() + 2, _useNumPad);
} else if (ev.data.keyDown.chr == 'a' && b == (KBD_CTRL|KBD_ALT)) {
property(PROP_TOGGLE_ASPECT_RATIO, NULL);
@ -1089,7 +1089,7 @@ bool OSystem_PALMOS::poll_event(Event *event) {
if (_lastKeyModifier) {
_lastKeyModifier = MD_NONE;
draw1BitGfx(kDrawKeyState, 2, get_height() + 2, false);
draw1BitGfx(kDrawKeyState, 2, getHeight() + 2, false);
}
}
return true;
@ -1773,11 +1773,11 @@ void OSystem_PALMOS::copy_rect_overlay(const byte *buf, int pitch, int x, int y,
}
int16 OSystem_PALMOS::get_height() {
int16 OSystem_PALMOS::getHeight() {
return _screenHeight;
}
int16 OSystem_PALMOS::get_width() {
int16 OSystem_PALMOS::getWidth() {
return _screenWidth;
}

View File

@ -146,8 +146,8 @@ public:
void grab_overlay(byte *buf, int pitch);
void copy_rect_overlay(const byte *buf, int pitch, int x, int y, int w, int h);
int16 get_width();
int16 get_height();
int16 getWidth();
int16 getHeight();
byte RGBToColor(uint8 r, uint8 g, uint8 b);
void ColorToRGB(byte color, uint8 &r, uint8 &g, uint8 &b);
// Set a parameter

View File

@ -64,8 +64,8 @@ class OSystem_Dreamcast : public OSystem {
// Set the size of the video bitmap.
// Typically, 320x200
void initSize(uint w, uint h);
int16 get_height() { return _screen_h; }
int16 get_width() { return _screen_w; }
int16 getHeight() { return _screen_h; }
int16 getWidth() { return _screen_w; }
// Draw a bitmap to screen.
// The screen will not be updated to reflect the new bitmap

View File

@ -40,8 +40,8 @@ public:
// Set the size of the video bitmap.
// Typically, 320x200
void initSize(uint w, uint h);
int16 get_height() { return _screenHeight; }
int16 get_width() { return _screenWidth; }
int16 getHeight() { return _screenHeight; }
int16 getWidth() { return _screenWidth; }
// Draw a bitmap to screen.
// The screen will not be updated to reflect the new bitmap

View File

@ -1567,12 +1567,12 @@ void OSystem_MorphOS::initSize(uint w, uint h)
CreateScreen(CSDSPTYPE_KEEP);
}
int16 OSystem_MorphOS::get_width()
int16 OSystem_MorphOS::getWidth()
{
return ScummScrWidth;
}
int16 OSystem_MorphOS::get_height()
int16 OSystem_MorphOS::getHeight()
{
return ScummScrHeight;
}

View File

@ -75,8 +75,8 @@ class OSystem_MorphOS : public OSystem
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 get_height();
virtual int16 get_width();
virtual int16 getHeight();
virtual int16 getWidth();
// Get the number of milliseconds since the program was started.
virtual uint32 get_msecs();

View File

@ -192,7 +192,7 @@ bool OSystem_SDL::poll_event(Event *event) {
// Alt-Return toggles full screen mode
if (b == KBD_ALT && ev.key.keysym.sym == SDLK_RETURN) {
setFeatureState(kFeatureFullscreenMode, !_full_screen);
setFullscreenMode(!_full_screen);
break;
}

View File

@ -45,6 +45,10 @@ const OSystem::GraphicsMode *OSystem_SDL::getSupportedGraphicsModes() const {
return s_supportedGraphicsModes;
}
int OSystem_SDL::getDefaultGraphicsMode() const {
return GFX_DOUBLESIZE;
}
bool OSystem_SDL::setGraphicsMode(int mode) {
Common::StackLock lock(_graphicsMutex, this);
@ -715,11 +719,11 @@ void OSystem_SDL::add_dirty_rgn_auto(const byte *buf) {
}
}
int16 OSystem_SDL::get_height() {
int16 OSystem_SDL::getHeight() {
return _screenHeight;
}
int16 OSystem_SDL::get_width() {
int16 OSystem_SDL::getWidth() {
return _screenWidth;
}

View File

@ -116,8 +116,8 @@ public:
virtual void clear_overlay();
virtual void grab_overlay(OverlayColor *buf, int pitch);
virtual void copy_rect_overlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h);
virtual int16 get_height();
virtual int16 get_width();
virtual int16 getHeight();
virtual int16 getWidth();
// Methods that convert RGB to/from colors suitable for the overlay.
virtual OverlayColor RGBToColor(uint8 r, uint8 g, uint8 b);
@ -125,6 +125,7 @@ public:
virtual const GraphicsMode *getSupportedGraphicsModes() const;
virtual int getDefaultGraphicsMode() const;
virtual bool setGraphicsMode(int mode);
virtual int getGraphicsMode() const;

View File

@ -137,8 +137,8 @@ public:
void clear_overlay();
void grab_overlay(int16 *, int);
void copy_rect_overlay(const int16 *, int, int, int, int, int);
virtual int16 get_height();
virtual int16 get_width();
virtual int16 getHeight();
virtual int16 getWidth();
static OSystem *create(int gfx_mode, bool full_screen);
@ -1106,11 +1106,11 @@ void OSystem_X11::copy_rect_overlay(const int16 *src, int pitch, int x, int y, i
}
}
int16 OSystem_X11::get_height() {
int16 OSystem_X11::getHeight() {
return fb_height;
}
int16 OSystem_X11::get_width() {
int16 OSystem_X11::getWidth() {
return fb_width;
}

View File

@ -67,17 +67,13 @@ bool OSystem::setGraphicsMode(const char *name) {
if (!name)
return false;
const GraphicsMode *gm = getSupportedGraphicsModes();
// Sepcial case for the 'default' filter
if (!scumm_stricmp(name, "normal") || !scumm_stricmp(name, "default")) {
#ifdef _WIN32_WCE
name = "1x";
#else
name = "2x";
#endif
return setGraphicsMode(getDefaultGraphicsMode());
}
const GraphicsMode *gm = getSupportedGraphicsModes();
while (gm->name) {
if (!scumm_stricmp(gm->name, name)) {
return setGraphicsMode(gm->id);

View File

@ -40,19 +40,20 @@
class OSystem {
public:
/**
* Return a pointer to the (singleton) OSystem instance, i.e. the backend.
* Returns a pointer to the (singleton) OSystem instance, i.e. the backend.
* This is not a proper singleton, since OSystem is an interface, not
* a real class.
* @return the pointer to the singleton) OSystem instance
*/
static OSystem *instance();
public:
/** Virtual destructor */
/** Empty virtual destructor. DO NOT REMOVE! */
virtual ~OSystem() {}
/** @name Graphics */
/** @name Feature flags */
//@{
/**
@ -127,9 +128,26 @@ public:
/** @name Graphics */
//@{
/**
* Description of a graphics mode.
*/
struct GraphicsMode {
/**
* The 'name' of the graphics mode. This name is matched when selecting
* a mode via the command line, or via the config file.
* Examples: "1x", "advmame2x", "hq3x"
*/
const char *name;
/**
* Human readable description of the scaler.
* Examples: "Normal (no scaling)", "AdvMAME2x", "HQ3x"
*/
const char *description;
/**
* ID of the graphics mode. How to use this is completely up to the
* backend. This value will be passed to the setGraphicsMode(int)
* method by client code.
*/
int id;
};
@ -143,6 +161,15 @@ public:
*/
virtual const GraphicsMode *getSupportedGraphicsModes() const = 0;
/**
* Return the ID of the 'default' graphics mode. What exactly this means
* is up to the backend. This mode is set by the client code when no user
* overrides are present (i.e. if no custom graphics mode is selected via
* the command line or a config file).
* @return the ID of the 'default' graphics mode
*/
virtual int getDefaultGraphicsMode() const = 0;
/**
* Switch to the specified graphics mode. If switching to the new mode
* failed, this method returns false.
@ -156,8 +183,11 @@ public:
* or if switching to the new mode failed, this method returns false.
* @param mode the name of the new graphics mode
* @return true if the switch was successful, false otherwise
* @note This is implemented via the setGraphicsMode(int) method, as well
* as getSupportedGraphicsModes() and getDefaultGraphicsMode().
* In particular, backends do not have to overload this!
*/
virtual bool setGraphicsMode(const char *name);
bool setGraphicsMode(const char *name);
/**
* Determine which graphics mode is currently active.
@ -166,34 +196,59 @@ public:
virtual int getGraphicsMode() const = 0;
/**
* Set the size of the video bitmap. Typical sizes include:
* Set the size of the virtual screen. Typical sizes include:
* - 320x200 (e.g. for most SCUMM games, and Simon)
* - 320x240 (e.g. for FM-TOWN SCUMM games)
* - 640x480 (e.g. for Curse of Monkey Island)
* This is the resolution for which the client code generates data;
* this is not necessarily equal to the actual display size. For example,
* a backend my magnify the graphics to fit on screen (see also the
* GraphicsMode); stretch the data to perform aspect ratio correction;
* or shrink it to fit on small screens (in cell phones).
* @param width the new virtual screen width
* @param height the new virtual screen height
*/
virtual void initSize(uint w, uint h) = 0;
virtual void initSize(uint width, uint height) = 0;
/**
* Returns the currently set screen height.
* Returns the currently set virtual screen height.
* @see initSize
* @return the currently set screen height
* @return the currently set virtual screen height
*/
virtual int16 get_height() = 0;
virtual int16 getHeight() = 0;
/**
* Returns the currently set screen width.
* Returns the currently set virtual screen width.
* @see initSize
* @return the currently set screen width
* @return the currently set virtual screen width
*/
virtual int16 get_width() = 0;
virtual int16 getWidth() = 0;
/** Set colors of the palette. */
/**
* Replace the specified range of the palette with new colors.
* The palette entries from 'start' till (start+num-1) will be replaced - so
* a full palette update is acomplished via start=0, num=256.
* The palette data is specified in interleaved RGB format. That is, the
* first byte of the memory block 'colors' points at is the red component
* of the first new color; the second byte the blue component of the first
* new color; the third byte the green compont. Then the second color
* starts, and so on. So memory looks like this: R1-G1-B1-R2-G2-B2-R3-...
*
* @param colors the new colors, in interleaved RGB format
* @param start the first palette entry to be updated
* @param num the number of palette entries to be updated
*
* @note It is an error if start+num exceeds 256, behaviour is undefined
* in that case (the backend may ignore it silently or assert).
*/
virtual void setPalette(const byte *colors, uint start, uint num) = 0;
/**
* Draw a bitmap to screen.
* The screen will not be updated to reflect the new bitmap, you have
* to call updateScreen to do that.
* Blit a bitmap to the virtual screen.
* The real screen will not immediately be updated to reflect the changes.
* Client code has to to call updateScreen to ensure any changes are
* visible to the user. This can be used to optimize drawing and reduce
* flicker.
* @see updateScreen
*/
virtual void copy_rect(const byte *buf, int pitch, int x, int y, int w, int h) = 0;
@ -240,7 +295,7 @@ public:
virtual bool show_mouse(bool visible) = 0;
/**
* Move ("warp) the mouse cursor to the specified position.
* Move ("warp") the mouse cursor to the specified position.
*/
virtual void warp_mouse(int x, int y) = 0;
@ -255,7 +310,7 @@ public:
typedef int (*TimerProc)(int interval);
/**
* The types of events backends can generate.
* The types of events backends may generate.
* @see Event
*/
enum EventCode {
@ -285,26 +340,36 @@ public:
*/
struct Event {
EventCode event_code;
/**
* Keyboard data; only valid for keyboard events (i.e. EVENT_KEYDOWN
* and EVENT_KEYUP). For all other event types, content is undefined.
*/
struct {
/**
* Abstract key code (will be the same for any given key regardless
* of modifiers being held at the same time.
* @todo Document which values are to be used for non-ASCII keys
* like F1-F10.
* For example, this is the same for both 'A' and Shift-'A'.
*/
int keycode;
/**
* ASCII-value of the pressed key (if any).
* This depends on modifiers, i.e. pressing the 'A' key results in
* different values here depending on the status of shift, alt and
* caps lock.
*/
uint16 ascii;
/**
* Status of the modifier keys. Bits are set in this for each
* pressed modifier
* @see KBD_CTRL, KBD_ALT, KBD_SHIFT
*/
byte flags;
} kbd;
struct {
int x;
int y;
} mouse;
Common::Point mouse;
};
/** Get the number of milliseconds since the program was started. */
virtual uint32 get_msecs() = 0;
/** Delay/sleep for the specified amount of milliseconds. */
virtual void delay_msecs(uint msecs) = 0;
/** Set the timer callback. */
virtual void set_timer(TimerProc callback, int interval) = 0;
/**
* Get the next event in the event queue.
* @param event point to an Event struct, which will be filled with the event data.
@ -312,6 +377,18 @@ public:
*/
virtual bool poll_event(Event *event) = 0;
/** Get the number of milliseconds since the program was started. */
virtual uint32 get_msecs() = 0;
/** Delay/sleep for the specified amount of milliseconds. */
virtual void delay_msecs(uint msecs) = 0;
/**
* Set the timer callback.
* @see Common::Timer
*/
virtual void set_timer(TimerProc callback, int interval) = 0;
//@}
@ -427,8 +504,8 @@ public:
virtual void clear_overlay() = 0;
virtual void grab_overlay(OverlayColor *buf, int pitch) = 0;
virtual void copy_rect_overlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h) = 0;
virtual int16 get_overlay_height() { return get_height(); }
virtual int16 get_overlay_width() { return get_width(); }
virtual int16 get_overlay_height() { return getHeight(); }
virtual int16 get_overlay_width() { return getWidth(); }
/** Convert the given RGB triplet into a OverlayColor. A OverlayColor can be
* 8bit, 16bit or 32bit, depending on the target system. The default