1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 The ScummVM project
*
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header$
*
*/
#ifndef WINCE_SDL_H
#define WINCE_SDL_H
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "common/scaler.h"
#include "backends/intern.h"
#include "backends/sdl/sdl-common.h"
#include "CEgui.h"
#include "CEkeys.h"
#include "CEDevice.h"
#include "CEScaler.h"
#include <SDL.h>
class OSystem_WINCE3 : public OSystem_SDL {
public:
OSystem_WINCE3();
// Update the dirty areas of the screen
void internUpdateScreen();
void initSize(uint w, uint h);
// Overloaded from SDL_Common (toolbar handling)
bool pollEvent(Event &event);
// Overloaded from SDL_Common (toolbar handling)
void drawMouse();
// Overloaded from SDL_Common (mouse and new scaler handling)
void fillMouseEvent(Event &event, int x, int y);
// Overloaded from SDL_Common (new scaler handling)
void addDirtyRect(int x, int y, int w, int h);
// Overloaded from SDL_Common (new scaler handling)
void warpMouse(int x, int y);
// Overloaded from SDL_Commmon
void quit();
// Overloaded from SDL_Commmon (master volume and sample rate subtleties)
bool setSoundCallback(SoundProc proc, void *param);
// GUI and action stuff
void swap_panel_visibility();
void swap_panel();
void swap_sound_master();
void add_right_click();
void swap_mouse_visibility();
void swap_freeLook();
void swap_zoom_up();
void swap_zoom_down();
#ifdef WIN32_PLATFORM_WFSP
// Smartphone actions
void add_left_click();
void move_cursor_up();
void move_cursor_down();
void move_cursor_left();
void move_cursor_right();
void switch_zone();
#endif
static int getScreenWidth();
static int getScreenHeight();
static void initScreenInfos();
static bool isOzone();
protected:
void loadGFXMode();
void unloadGFXMode();
void hotswapGFXMode();
bool saveScreenshot(const char *filename);
const GraphicsMode *getSupportedGraphicsModes() const;
bool setGraphicsMode(int mode);
//int getGraphicsMode() const;
int getDefaultGraphicsMode() const;
void setWindowCaption(const char *caption);
bool openCD(int drive);
int getOutputSampleRate() const;
bool hasFeature(Feature f);
void setFeatureState(Feature f, bool enable);
bool getFeatureState(Feature f);
private:
#ifdef USE_VORBIS
bool checkOggHighSampleRate();
#endif
static void private_sound_proc(void *param, byte *buf, int len);
static SoundProc _originalSoundProc;
bool update_scalers();
void create_toolbar();
void update_game_settings();
void check_mappings();
void update_keyboard();
void get_sample_rate();
void retrieve_mouse_location(int &x, int &y);
CEGUI::ToolbarHandler _toolbarHandler;
SDL_Surface *_toolbarLow; // toolbar 320x40
SDL_Surface *_toolbarHigh; // toolbar 640x80
bool _toolbarHighDrawn; // cache toolbar 640x80
uint16 _sampleRate; // current audio sample rate
bool _freeLook; // freeLook mode (do not send mouse button events)
bool _forceHideMouse; // force invisible mouse cursor
bool _forcePanelInvisible; // force panel visibility for some cases
bool _panelVisible; // panel visibility
bool _panelStateForced; // panel visibility forced by external call
bool _panelInitialized; // only initialize the toolbar once
bool _monkeyKeyboard; // forced keyboard for Monkey Island copy protection
static bool _soundMaster; // turn off sound after all calculations
// static since needed by the SDL callback
bool _orientationLandscape; // current orientation
bool _newOrientation; // new orientation
bool _saveToolbarState; // save visibility when forced
String _saveActiveToolbar; // save active toolbar when forced
bool _saveToolbarZoom; // save visibility when zooming
bool _zoomUp; // zooming up mode
bool _zoomDown; // zooming down mode
int _scaleFactorXm;
int _scaleFactorXd;
int _scaleFactorYm;
int _scaleFactorYd;
bool _scalersChanged;
static int _platformScreenWidth;
static int _platformScreenHeight;
static bool _isOzone;
};
#endif
|