aboutsummaryrefslogtreecommitdiff
path: root/engines/sky/text.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sky/text.h')
-rw-r--r--engines/sky/text.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/engines/sky/text.h b/engines/sky/text.h
new file mode 100644
index 0000000000..33aa6f8df7
--- /dev/null
+++ b/engines/sky/text.h
@@ -0,0 +1,124 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-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 SKYTEXT_H
+#define SKYTEXT_H
+
+#include "common/stdafx.h"
+#include "common/scummsys.h"
+
+namespace Sky {
+
+struct Compact;
+class Disk;
+class SkyCompact;
+
+struct HuffTree {
+ unsigned char lChild;
+ unsigned char rChild;
+ unsigned char value;
+};
+
+#define NUM_PATCH_MSG 8
+
+struct PatchMessage {
+ uint32 textNr;
+ char text[100];
+};
+
+class Text {
+public:
+ Text(Disk *skyDisk, SkyCompact *skyCompact);
+ ~Text(void);
+ struct displayText_t displayText(uint32 textNum, uint8 *dest, bool centre, uint16 pixelWidth, uint8 color);
+ struct displayText_t displayText(char *textPtr, uint8 *dest, bool centre, uint16 pixelWidth, uint8 color);
+ struct lowTextManager_t lowTextManager(uint32 textNum, uint16 width, uint16 logicNum, uint8 color, bool centre);
+ void fnSetFont(uint32 fontNr);
+ void fnTextModule(uint32 textInfoId, uint32 textNo);
+ void fnPointerText(uint32 pointedId, uint16 mouseX, uint16 mouseY);
+ void logicCursor(Compact *textCompact, uint16 mouseX, uint16 mouseY);
+ void changeTextSpriteColour(uint8 *sprData, uint8 newCol);
+ uint32 giveCurrentCharSet(void);
+
+ uint32 _numLetters; //no of chars in message
+
+private:
+ void initHuffTree();
+ void getText(uint32 textNr);
+ char getTextChar(uint8 **data, uint32 *bitPos);
+ bool getTextBit(uint8 **data, uint32 *bitPos);
+ void makeGameCharacter(uint8 textChar, uint8 *charSetPtr, uint8 *&data, uint8 color, uint16 bufPitch);
+
+ void patchChar(byte *charSetPtr, int width, int height, int c, const uint16 *data);
+ void patchLINCCharset();
+ bool patchMessage(uint32 textNum);
+
+ Disk *_skyDisk;
+ SkyCompact *_skyCompact;
+
+ const HuffTree *_huffTree;
+
+ struct charSet {
+ uint8 *addr;
+ uint32 charHeight;
+ uint32 charSpacing;
+ } _mainCharacterSet, _linkCharacterSet, _controlCharacterSet;
+
+ uint32 _curCharSet;
+ uint8 *_characterSet;
+ uint8 _charHeight;
+
+ char _textBuffer[1024];
+
+ uint32 _dtCharSpacing; //character separation adjustment
+ uint32 _mouseOfsX, _mouseOfsY;
+ static const PatchMessage _patchedMessages[NUM_PATCH_MSG];
+ static const uint16 _patchLangIdx[8];
+ static const uint16 _patchLangNum[8];
+
+#ifndef PALMOS_68K
+ static const HuffTree _huffTree_00109[]; // trees moved to hufftext.cpp
+ static const HuffTree _huffTree_00267[];
+ static const HuffTree _huffTree_00288[];
+ static const HuffTree _huffTree_00303[];
+ static const HuffTree _huffTree_00331[];
+ static const HuffTree _huffTree_00348[];
+ static const HuffTree _huffTree_00365[];
+ static const HuffTree _huffTree_00368[];
+ static const HuffTree _huffTree_00372[];
+#else
+public:
+ static const HuffTree *_huffTree_00109; // trees moved to hufftext.cpp
+ static const HuffTree *_huffTree_00267;
+ static const HuffTree *_huffTree_00288;
+ static const HuffTree *_huffTree_00303;
+ static const HuffTree *_huffTree_00331;
+ static const HuffTree *_huffTree_00348;
+ static const HuffTree *_huffTree_00365;
+ static const HuffTree *_huffTree_00368;
+ static const HuffTree *_huffTree_00372;
+#endif
+};
+
+} // End of namespace Sky
+
+#endif