mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-15 16:58:01 +00:00
189 lines
3.6 KiB
C++
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
|