From 9a2eac7eee8fbe6a903e842cb257d96bd57f8702 Mon Sep 17 00:00:00 2001 From: Yotam Barnoy Date: Mon, 12 Apr 2010 06:49:05 +0000 Subject: PSP: refactoring/redesign of the backend svn-id: r48632 --- backends/platform/psp/cursor.h | 81 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 backends/platform/psp/cursor.h (limited to 'backends/platform/psp/cursor.h') diff --git a/backends/platform/psp/cursor.h b/backends/platform/psp/cursor.h new file mode 100644 index 0000000000..49f58cd3f9 --- /dev/null +++ b/backends/platform/psp/cursor.h @@ -0,0 +1,81 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk/backends/platform/psp/osys_psp.h $ + * $Id: osys_psp.h 46120 2009-11-24 10:33:30Z Bluddy $ + * + */ + +#ifndef MOUSE_H +#define MOUSE_H + +class Cursor : public DefaultDisplayClient { +private: + int _hotspotX, _hotspotY; + uint32 _keyColor; + int _cursorTargetScale; + bool _useCursorPalette; + bool _hasCursorPalette; + uint32 _mouseLimitWidth; + uint32 _mouseLimitHeight; + int32 _x, _y; + Palette _screenPalette; // separate palette for screen. default 'palette' is cursor palette. + + void updateRendererOffset(); + +public: + Cursor() : _hotspotX(0), _hotspotY(0), _keyColor(0), _cursorTargetScale(0), + _useCursorPalette(false), _hasCursorPalette(false), _mouseLimitWidth(0), + _mouseLimitHeight(0), _x(0), _y(0) { } + virtual ~Cursor() { deallocate(); } + + void setKeyColor(uint32 color); + void setCursorTargetScale(int scale) { _cursorTargetScale = scale; } + void setScreenPalette(const byte *colors, uint start, uint num); + void copyFromArray(const byte *array); + Palette &palette() { return _palette; } + Buffer &buffer() { return _buffer; } + void setCursorPalette(const byte *colors, uint start, uint num); + void enableCursorPalette(bool enable); + void setLimits(uint32 width, uint32 height); + void setXY(int x, int y); + int32 getX() { return _x; } + int32 getY() { return _y; } + bool increaseXY(int32 incX, int32 incY); // returns true if there's a change in x or y + void adjustXYForScreenSize(int32 &x, int32 &y); + void init(); + void setHotspot(int32 x, int32 y); + void setScreenPaletteScummvmPixelFormat(const Graphics::PixelFormat *format); + void setSizeAndScummvmPixelFormat(uint32 widht, uint32 height, const Graphics::PixelFormat *format); + void clearKeyColor(); + void useGlobalScaler(bool val) { _renderer.setUseGlobalScaler(val); } + bool allocate(); + void deallocate(); + +private: + void setSize(uint32 width, uint32 height); + void getPixelFormatsFromScummvmPixelFormat(const Graphics::PixelFormat *format, + PSPPixelFormat::Type &bufferFormat, + PSPPixelFormat::Type &paletteFormat, + uint32 &numOfEntries); + void setRendererModePalettized(bool palettized); +}; + +#endif /* MOUSE_H */ -- cgit v1.2.3