2017-09-14 13:54:52 +10:00

189 lines
3.6 KiB
C++

/* 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.
*
*/
#ifndef DIRECTOR_CAST_H
#define DIRECTOR_CAST_H
#include "common/rect.h"
#include "common/substream.h"
#include "director/archive.h"
#include "graphics/surface.h"
namespace Director {
class Stxt;
class CachedMacText;
enum CastType {
kCastTypeNull = 0,
kCastBitmap = 1,
kCastFilmLoop = 2,
kCastText = 3,
kCastPalette = 4,
kCastPicture = 5,
kCastSound = 6,
kCastButton = 7,
kCastShape = 8,
kCastMovie = 9,
kCastDigitalVideo = 10,
kCastLingoScript = 11,
kCastRTE = 12
};
class Cast {
public:
CastType type;
Common::Rect initialRect;
Common::Rect boundingRect;
Common::Array<Resource> children;
const Graphics::Surface *surface;
byte modified;
};
class BitmapCast : public Cast {
public:
BitmapCast(Common::ReadStreamEndian &stream, uint32 castTag, uint16 version = 2);
uint16 regX;
uint16 regY;
uint8 flags;
uint16 someFlaggyThing;
uint16 unk1, unk2;
uint16 bitsPerPixel;
uint32 tag;
};
enum ShapeType {
kShapeRectangle,
kShapeRoundRect,
kShapeOval,
kShapeLine
};
class ShapeCast : public Cast {
public:
ShapeCast(Common::ReadStreamEndian &stream, uint16 version = 2);
ShapeType shapeType;
uint16 pattern;
byte fgCol;
byte bgCol;
byte fillType;
byte lineThickness;
byte lineDirection;
};
enum TextType {
kTextTypeAdjustToFit,
kTextTypeScrolling,
kTextTypeFixed
};
enum TextAlignType {
kTextAlignRight = -1,
kTextAlignLeft,
kTextAlignCenter
};
enum TextFlag {
kTextFlagEditable,
kTextFlagAutoTab,
kTextFlagDoNotWrap
};
enum SizeType {
kSizeNone,
kSizeSmallest,
kSizeSmall,
kSizeMedium,
kSizeLarge,
kSizeLargest
};
class TextCast : public Cast {
public:
TextCast(Common::ReadStreamEndian &stream, uint16 version = 2);
SizeType borderSize;
SizeType gutterSize;
SizeType boxShadow;
byte flags1;
uint32 fontId;
uint16 fontSize;
TextType textType;
TextAlignType textAlign;
SizeType textShadow;
byte textSlant;
Common::Array<TextFlag> textFlags;
uint16 palinfo1, palinfo2, palinfo3;
Common::String _ftext;
void importStxt(const Stxt *stxt);
void importRTE(byte* text);
CachedMacText *cachedMacText;
};
enum ButtonType {
kTypeButton,
kTypeCheckBox,
kTypeRadio
};
class ButtonCast : public TextCast {
public:
ButtonCast(Common::ReadStreamEndian &stream, uint16 version = 2);
ButtonType buttonType;
};
class ScriptCast : public Cast {
public:
ScriptCast(Common::ReadStreamEndian &stream, uint16 version = 2);
uint32 id;
};
struct CastInfo {
Common::String script;
Common::String name;
Common::String directory;
Common::String fileName;
Common::String type;
};
struct Label {
Common::String name;
uint16 number;
Label(Common::String name1, uint16 number1) { name = name1; number = number1; }
};
} // End of namespace Director
#endif