scummvm/backends/platform/psp/cursor.h
Yotam Barnoy e47e474cff PSP: rewrote input code and added an input mode
The old input code was getting too messy. A redesign made it easier to modify and add several modes and combos, including one for 1st person games which benefit from a different control scheme. A combo switches between the modes. I also added directional support while the virtual keyboard is visible, using the nub. This allows moving around in the text in some games, and moving the character while typing for others (e.g. AGI)

svn-id: r53042
2010-10-06 21:26:45 +00:00

83 lines
3.1 KiB
C++

/* 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
#include "backends/platform/psp/default_display_client.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() const { return _x; }
int32 getY() const { 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 */