aboutsummaryrefslogtreecommitdiff
path: root/kyra/screen.h
diff options
context:
space:
mode:
authorJohannes Schickel2005-10-22 00:24:07 +0000
committerJohannes Schickel2005-10-22 00:24:07 +0000
commit4079dd03b14c393932699db988062d0c1e5548c5 (patch)
tree7995323a8ada6311dd90a88730acb3387a254134 /kyra/screen.h
parentb18435125f7b69c1c23518edacb763f927bd55c8 (diff)
downloadscummvm-rg350-4079dd03b14c393932699db988062d0c1e5548c5.tar.gz
scummvm-rg350-4079dd03b14c393932699db988062d0c1e5548c5.tar.bz2
scummvm-rg350-4079dd03b14c393932699db988062d0c1e5548c5.zip
Implemented correct cursor handling.
svn-id: r19230
Diffstat (limited to 'kyra/screen.h')
-rw-r--r--kyra/screen.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/kyra/screen.h b/kyra/screen.h
index 0b6936cfda..692cc659dc 100644
--- a/kyra/screen.h
+++ b/kyra/screen.h
@@ -110,12 +110,19 @@ public:
void drawChar(uint8 c, int x, int y);
void setScreenDim(int dim);
void drawShapePlotPixelCallback1(uint8 *dst, uint8 color);
- void drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int sd, int flags, int *flagsTable);
+ void drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int sd, int flags, int *flagsTable, bool itemShape=false);
static void decodeFrame3(const uint8 *src, uint8 *dst, uint32 size);
static void decodeFrame4(const uint8 *src, uint8 *dst, uint32 dstSize);
static void decodeFrameDelta(uint8 *dst, const uint8 *src);
static void decodeFrameDeltaPage(uint8 *dst, const uint8 *src, int pitch);
+ uint8 *decodeShape(int x, int y, int w, int h, int flags);
void copyRegionToBuffer(int pageNum, int x, int y, int w, int h, uint8 *dest);
+
+ int getRectSize(int x, int y);
+ void hideMouse();
+ void showMouse();
+ void setShapePages(int page1, int page2);
+ byte *setMouseCursor(int x, int y, byte *shape);
int _charWidth;
int _charOffset;
@@ -125,8 +132,14 @@ public:
typedef void (Screen::*DrawShapePlotPixelCallback)(uint8 *dst, uint8 c);
private:
+ int16 decodeShapeHelper(uint8 *from, uint8 *to, int size);
+ void hideMouseHelper();
+ void showMouseHelper();
+ void copyScreenFromRect(int x, int y, int w, int h, uint8 *ptr);
+ void copyScreenToRect(int x, int y, int w, int h, uint8 *ptr);
uint8 *_pagePtrs[16];
+ uint8 *_shapePages[2];
uint8 *_screenPalette;
const ScreenDim *_curDim;
FontId _currentFont;
@@ -136,6 +149,15 @@ private:
int _decodeShapeBufferSize;
uint8 *_animBlockPtr;
int _animBlockSize;
+
+ uint8 *_mouseShape;
+ uint8 *_mouseRect;
+ int _mouseShapeSize;
+ int _mouseRectSize;
+ int _mouseDrawX, _mouseDrawY;
+ int _mouseDrawWidth, _mouseDrawHeight;
+ int _mouseWidth, _mouseHeight;
+ int _mouseXOffset, _mouseYOffset;
OSystem *_system;
KyraEngine *_vm;