31#include "common/stack.h"
44#define RENDERFLAG_NOINVALIDATE 0x0001
45#define RENDERFLAG_CAPTUREPUSH 0x0002
46#define RENDERFLAG_COLLISIONS 0x0004
47#define RENDERFLAG_CAPTUREPOP 0x0008
48#define RENDERFLAG_USEDELTAS 0x0010
49#define RENDERFLAG_BORDERHOTSPOTS 0x0040
50#define RENDERFLAG_HASWINDOWS 0x0080
51#define RENDERFLAG_NOBLITINVALIDATED 0x0200
52#define RENDERFLAG_NOSUBTITLES 0x0400
53#define RENDERFLAG_FROMSPLIT 0x0800
54#define RENDERFLAG_DOUBLECOORDS 0x1000
55#define RENDERFLAG_DOUBLEVIDEO 0x2000
59 static const int kSpriteCount = 100;
60 static const int kFontCount = 16;
61 static const int kFrontSurface = 20;
62 static const int kBackSurface = 21;
63 static const int kAnimSurface = 22;
64 static const int kCursorSurface = 23;
65 static const int kCaptureSurface = 30;
72 FontToSprite() : sprite(0), base(0), width(0), height(0) {}
102 const char *_textToPrint;
109 int16 _subtitleColor;
112 Font *_fonts[kFontCount];
116 int16 _invalidatedCount;
117 int16 _invalidatedLefts[30];
118 int16 _invalidatedTops[30];
119 int16 _invalidatedRights[30];
120 int16 _invalidatedBottoms[30];
124 bool _noInvalidated57;
125 bool _paletteCleared;
131 int16 _unusedPalette1[18];
132 int16 _unusedPalette2[16];
143 int16 _transparentCursor;
144 uint32 _cursorTimeKey;
151 int32 _cursorHotspotXVar;
152 int32 _cursorHotspotYVar;
154 int32 _cursorHotspotX;
155 int32 _cursorHotspotY;
162 int8 _cursorAnimLow[40];
163 int8 _cursorAnimHigh[40];
164 int8 _cursorAnimDelays[40];
167 bool _cursorDrawnFromScripts;
171 int16 _palLoadData1[4];
172 int16 _palLoadData2[4];
180 int16 _scrollOffsetY;
181 int16 _scrollOffsetX;
189 int16 _winVarArrayLeft;
190 int16 _winVarArrayTop;
191 int16 _winVarArrayWidth;
192 int16 _winVarArrayHeight;
193 int16 _winVarArrayStatus;
194 int16 _winVarArrayLimitsX;
195 int16 _winVarArrayLimitsY;
198 void invalidateRect(int16 left, int16 top, int16 right, int16 bottom);
199 void blitInvalidated();
203 void dirtiedRect(int16 surface, int16 left, int16 top, int16 right, int16 bottom);
204 void dirtiedRect(
SurfacePtr surface, int16 left, int16 top, int16 right, int16 bottom);
206 void initSpriteSurf(int16 index, int16 width, int16 height, int16 flags,
byte bpp = 0);
207 void freeSprite(int16 index);
208 void adjustCoords(
char adjust, int16 *coord1, int16 *coord2);
209 void adjustCoords(
char adjust, uint16 *coord1, uint16 *coord2) {
210 adjustCoords(adjust, (int16 *)coord1, (int16 *)coord2);
212 void resizeCursors(int16 width, int16 height, int16 count,
bool transparency);
213 int stringLength(
const char *str, uint16 fontIndex);
214 void printTextCentered(int16
id, int16 left, int16 top, int16 right,
215 int16 bottom,
const char *str, int16 fontIndex, int16 color);
216 void drawButton( uint16
id, int16 left, int16 top, int16 right, int16 bottom,
char *paramStr, int16 var3, int16 var4, int16 shortId);
218 int32 getSpriteRectSize(int16 index);
219 void forceBlit(
bool backwards =
false);
221 static const int16 _wobbleTable[360];
222 void wobble(
Surface &surfDesc);
224 Font *loadFont(
const char *path)
const;
225 bool loadFont(uint16 fontIndex,
const char *path);
227 virtual void initScreen() = 0;
228 virtual void closeScreen() = 0;
229 virtual void blitCursor() = 0;
231 virtual void animateCursor(int16 cursor) = 0;
232 virtual void updateAnimatedCursor() {}
233 virtual void printTotText(int16
id) = 0;
234 virtual void spriteOperation(int16 operation,
bool ttsAddHotspotText =
true) = 0;
236 virtual int16 openWin(int16
id) {
return 0; }
237 virtual void closeWin(int16
id) {}
238 virtual int16 handleCurWin() {
return 0; }
239 virtual int16 getWinFromCoord(int16 &dx, int16 &dy) {
return -1; }
240 virtual void moveWin(int16
id) {}
241 virtual bool overlapWin(int16 idWin1, int16 idWin2) {
return false; }
242 virtual void closeAllWin() {}
243 virtual void activeWin(int16
id) {}
257 void initScreen()
override;
258 void closeScreen()
override;
259 void blitCursor()
override;
260 void animateCursor(int16 cursor)
override;
261 void printTotText(int16
id)
override;
262 void spriteOperation(int16 operation,
bool ttsAddHotspotText =
true)
override;
270 void initScreen()
override;
271 void closeScreen()
override;
272 void blitCursor()
override;
273 void animateCursor(int16 cursor)
override;
274 void printTotText(int16
id)
override;
275 void spriteOperation(int16 operation,
bool ttsAddHotspotText =
true)
override;
281 uint8 _mayorWorkaroundStatus;
283 void fixLittleRedStrings();
288 void initScreen()
override;
298 void spriteOperation(int16 operation,
bool ttsAddHotspotText =
true)
override;
300 void decompWin(int16 x, int16 y,
SurfacePtr destPtr);
301 void drawWin(int16 fct);
302 void saveWin(int16
id);
303 void restoreWin(int16
id);
304 void handleWinBorder(int16
id);
305 void drawWinTrace(int16 left, int16 top, int16 width, int16 height);
307 int16 openWin(int16
id)
override;
308 void closeWin(int16
id)
override;
309 int16 getWinFromCoord(int16 &dx, int16 &dy)
override;
310 int16 handleCurWin()
override;
311 void activeWin(int16
id)
override;
312 void moveWin(int16
id)
override;
313 bool overlapWin(int16 idWin1, int16 idWin2)
override;
314 void closeAllWin()
override;
325 int16 rectBottom = 0;
334 void printTotText(int16
id)
override;
335 void spriteOperation(int16 operation,
bool ttsAddHotspotText =
true)
override;
344 void initScreen()
override;
345 void animateCursor(int16 cursor)
override;
346 void updateAnimatedCursor()
override;
354 uint16 _aniCurrentFrame;
355 uint32 _aniLastFrameTime;
357 void clearAniCursor();
359 bool updateAniCursorFrame();
361 bool loadCursorFile();
367#define DRAW_BLITSURF 0
368#define DRAW_PUTPIXEL 1
369#define DRAW_FILLRECT 2
370#define DRAW_DRAWLINE 3
371#define DRAW_INVALIDATE 4
372#define DRAW_LOADSPRITE 5
373#define DRAW_PRINTTEXT 6
374#define DRAW_DRAWBAR 7
375#define DRAW_CLEARRECT 8
376#define DRAW_FILLRECTABS 9
377#define DRAW_DRAWLETTER 10
Definition: surface.h:106
Definition: algorithm.h:29