aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/graphics.h
diff options
context:
space:
mode:
authorEugene Sandulenko2007-01-14 21:29:12 +0000
committerEugene Sandulenko2007-01-14 21:29:12 +0000
commite5c7ce83b8c7bb5f7d64c53fa8dcc378f667e902 (patch)
treeb9fa4e43e98a703bb60ef9a375c39d3579f610fd /engines/parallaction/graphics.h
parent549f818e3195136ee3fbd7cd7e474f5932deb529 (diff)
downloadscummvm-rg350-e5c7ce83b8c7bb5f7d64c53fa8dcc378f667e902.tar.gz
scummvm-rg350-e5c7ce83b8c7bb5f7d64c53fa8dcc378f667e902.tar.bz2
scummvm-rg350-e5c7ce83b8c7bb5f7d64c53fa8dcc378f667e902.zip
Initial import of Parallaction engine
svn-id: r25083
Diffstat (limited to 'engines/parallaction/graphics.h')
-rw-r--r--engines/parallaction/graphics.h185
1 files changed, 185 insertions, 0 deletions
diff --git a/engines/parallaction/graphics.h b/engines/parallaction/graphics.h
new file mode 100644
index 0000000000..8363b93629
--- /dev/null
+++ b/engines/parallaction/graphics.h
@@ -0,0 +1,185 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef PARALLACTION_GRAPHICS_H
+#define PARALLACTION_GRAPHICS_H
+
+#include "parallaction/defs.h"
+
+namespace Parallaction {
+
+
+
+#define SCREEN_WIDTH 320
+#define SCREEN_HEIGHT 200
+#define SCREEN_SIZE SCREEN_WIDTH*SCREEN_HEIGHT
+
+#define SCREENMASK_WIDTH SCREEN_WIDTH/4
+#define SCREENPATH_WIDTH SCREEN_WIDTH/8
+
+#define PALETTE_COLORS 32
+#define PALETTE_SIZE PALETTE_COLORS*3
+
+#pragma pack(push, 1)
+
+struct PaletteFxRange {
+
+ uint16 _timer;
+ uint16 _step;
+ uint16 _flags;
+ byte _first;
+ byte _last;
+
+};
+
+#pragma pack(pop)
+
+extern byte _palette[];
+
+#define NUM_BUFFERS 6
+
+class Parallaction;
+
+class Graphics {
+
+public:
+ enum Buffers {
+ // bit buffers
+ kBitFront,
+ kBitBack,
+ kBit2,
+ kBit3,
+ // mask buffers
+ kMask0,
+ // path buffers
+ kPath0
+ };
+
+public:
+
+ // dialogue and text
+ void drawBalloon(int16 left, int16 top, uint16 width, uint16 height, uint16 arg_8);
+ void displayBalloonString(uint16 x, uint16 y, const char *text, byte color);
+ void displayString(uint16 x, uint16 y, const char *text);
+ bool displayWrappedString(char *text, uint16 x, uint16 y, uint16 maxwidth, byte color);
+ uint16 getStringWidth(const char *text);
+ void getStringExtent(char *text, uint16 maxwidth, int16* width, int16* height);
+
+ // cnv management
+ void makeCnvFromString(StaticCnv *cnv, char *text);
+ void loadExternalCnv(const char *filename, Cnv *cnv);
+ void loadExternalStaticCnv(const char *filename, StaticCnv *cnv);
+ void loadCnv(const char *filename, Cnv *cnv);
+ void loadStaticCnv(const char *filename, StaticCnv *cnv);
+ void freeCnv(Cnv *cnv);
+ void freeStaticCnv(StaticCnv *cnv);
+ void backupCnvBackground(StaticCnv *cnv, int16 x, int16 y);
+ void backupCnvBackgroundTransparent(StaticCnv *cnv, int16 x, int16 y);
+ void restoreCnvBackground(StaticCnv *cnv, int16 x, int16 y);
+
+ // location
+ void loadBackground(const char *filename, Graphics::Buffers buffer);
+ void loadMaskAndPath(const char *filename);
+ uint16 queryPath(uint16 x, uint16 y);
+ int16 queryMask(int16 v);
+ void intGrottaHackMask();
+ void restoreBackground(int16 left, int16 top, uint16 width, uint16 height);
+ void backupBackgroundMask(Graphics::Buffers mask);
+ void restoreBackgroundMask(Graphics::Buffers mask);
+ void backupBackgroundPath(Graphics::Buffers path);
+ void restoreBackgroundPath(Graphics::Buffers path);
+
+ // intro
+ void maskClearRectangle(uint16 left, uint16 top, uint16 right, uint16 bottom, Graphics::Buffers mask);
+ void maskOpNot(uint16 x, uint16 y, uint16 unused, Graphics::Buffers mask);
+
+ // low level
+ void swapBuffers();
+ void updateScreen();
+ void clearScreen(Graphics::Buffers buffer);
+ void copyScreen(Graphics::Buffers srcbuffer, Graphics::Buffers dstbuffer);
+ void copyRect(Graphics::Buffers srcbuffer, uint16 sx, uint16 sy, Graphics::Buffers dstbuffer, uint16 dx, uint16 dy, uint16 w, uint16 h);
+ void copyRect(Graphics::Buffers dstbuffer, uint16 x, uint16 y, uint16 w, uint16 h, byte *src, uint16 pitch);
+ void grabRect(Graphics::Buffers srcbuffer, byte *dst, uint16 x, uint16 y, uint16 w, uint16 h, uint16 pitch);
+ void drawBorder(Graphics::Buffers buffer, uint16 x, uint16 y, uint16 w, uint16 h, byte color);
+ void floodFill(byte color, uint16 left, uint16 top, uint16 right, uint16 bottom, Graphics::Buffers buffer);
+ void flatBlitCnv(StaticCnv *cnv, int16 x, int16 y, Graphics::Buffers buffer, byte *unused);
+ void blitCnv(StaticCnv *cnv, int16 x, int16 y, uint16 z, Graphics::Buffers buffer, Graphics::Buffers mask);
+
+ // palette
+ void animatePalette(byte *palette);
+ void setPalette(byte *palette);
+ void getBlackPalette(byte *palette);
+ void palUnk0(byte *palette);
+ void buildBWPalette(byte *palette);
+ void quickFadePalette(byte *palette);
+ void fadePalette(byte *palette);
+
+ // init
+ Graphics(Parallaction* vm);
+ virtual ~Graphics();
+
+ void setMousePointer(int16 index);
+
+
+public:
+ static Point _labelPosition[2];
+ static bool _proportionalFont;
+ static Cnv _font;
+
+protected:
+ Parallaction* _vm;
+
+ static byte * _buffers[NUM_BUFFERS];
+
+ static byte _mouseArrow[256];
+ static StaticCnv _mouseComposedArrow;
+
+protected:
+ //
+ // decompress a graphics block (size is *target* size)
+ //
+ // returns amount of byte read
+ //
+ uint16 decompressChunk(byte *src, byte *dst, uint16 size);
+
+ //
+ // maps a character for representation
+ //
+ char mapChar(char c);
+
+ void flatBlit(uint16 w, uint16 h, int16 x, int16 y, byte *data, Graphics::Buffers buffer);
+ void blit(uint16 w, uint16 h, int16 x, int16 y, uint16 z, byte *data, Graphics::Buffers buffer, Graphics::Buffers mask);
+
+
+ void initBuffers();
+ void initMouse(uint16 arg_0);
+
+
+};
+
+
+} // Parallaction
+
+
+#endif
+