diff options
Diffstat (limited to 'engines/sci/gui/gui_helpers.h')
-rw-r--r-- | engines/sci/gui/gui_helpers.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/engines/sci/gui/gui_helpers.h b/engines/sci/gui/gui_helpers.h new file mode 100644 index 0000000000..3f80d0cd75 --- /dev/null +++ b/engines/sci/gui/gui_helpers.h @@ -0,0 +1,150 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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$ + * + */ + +#include "common/rect.h" +#include "sci/engine/vm_types.h" + +namespace Sci { + +typedef int sciResourceId; // is a resource-number and -1 means no parameter given +typedef reg_t sciMemoryHandle; +typedef uint16 SCIHANDLE; + +struct sciNode { + SCIHANDLE next; // heap handle to next node + SCIHANDLE prev; // heap handle to data + uint16 key; // maybe also a heap handle +}; +struct sciNode1 : sciNode { + uint16 value; +}; + +// sciPort and sciWnd need to be binary identical, so if you change anything in one, you have to change it in the other one +// as well! +struct sciPort { + sciNode node; // node struct for list operations + int16 top, left; + Common::Rect rect; + int16 curTop, curLeft; + int16 fontH; + sciResourceId fontId; + int16 textFace, penClr, backClr; + int16 penMode; +}; + +struct sciWnd { + // begins like sciPort (needs to be binary identical!!) + sciNode node; // node struct for list operations + int16 top, left; + Common::Rect rect; + int16 curTop, curLeft; + int16 fontH; + sciResourceId fontId; + int16 textFace, penClr, backClr; + int16 penMode; + // window specific members + Common::Rect rect0; // client area of window + Common::Rect rect1; // total area of window including borders + uint16 wndStyle; + uint16 uSaveFlag; + reg_t hSaved1; + reg_t hSaved2; + SCIHANDLE hTitle; + bool bDrawed; +}; + +struct sciCast { + sciNode node; + uint16 view; + uint16 loop; + uint16 cel; + uint16 z; + uint16 pal; + SCIHANDLE hSaved; + Common::Rect rect; +}; + +struct sciColor { + byte used; + byte r, g, b; +}; + +struct sciPalette { + byte mapping[256]; + uint32 timestamp; + sciColor colors[256]; + byte intencity[256]; +}; + +struct sciPalSched { + byte from; + uint32 schedule; +}; + +#define STUB(str) debug("STUB: '%s' at file %s line %d",str,__FILE__,__LINE__) + + +// FIXME: The following feature enums and macros should be reconsidered. +// The way they are done right now is highly error prone. + +enum { + FTR_WINDOWMGR_SCI0 = (0<<0), // SCI0 based window manager + FTR_WINDOWMGR_SCI1 = (1<<0), // SCI1 based window manager + FTR_CAN_BEHERE = (0<<1), // Kernel77 is kCanBeHere (SCI0) + FTR_CANT_BEHERE = (1<<1), // Kernel77 is kCantBeHere(SCI1) + FTR_SOUND_SCI0 = (0<<2), // SCI0 Sound functions + FTR_SOUND_SCI01 = (1<<2), // SCI0+ Sound functions + FTR_SOUND_SCI1 = (2<<2), // SCI1 Sound functions + FTR_SHOWPIC_SCI0 = (0<<4), // SCI0 ShowPic (44 effect codes) + FTR_SHOWPIC_SCI1 = (1<<4), // SCI1 ShowPic (15 effect codes) + FTR_GL_ANIMATE = (1<<5) // Animate can be paused by global flag +}; + +#define GETFTR_WINDOWMGR(x) (x & 0x00000001) +#define GETFTR_CANBEHERE(x) (x & 0x00000002) +#define GETFTR_SOUND(x) (x & 0x0000000C) +#define GETFTR_SHOWPIC(x) (x & 0x00000010) + +enum { + GFX_STOPUPDATE = 0x01, + GFX_VIEWUPDATED = 0x02, + GFX_NOUPDATE = 0x04, + GFX_HIDDEN = 0x08, + GFX_FIXEDPRIO=0x10, + GFX_ALWAYSUPDATE = 0x20, + GFX_FORCEUPDATE = 0x40, + GFX_REMOVEVIEW = 0x80 +}; + +enum SCILanguage{ + kLangNone = 0, + kLangEnglish = 1, + kLangFrench = 33, + kLangSpanish = 34, + kLangItalian = 39, + kLangGerman = 49 +}; + +} |