diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/director/score.cpp | 23 | ||||
-rw-r--r-- | engines/director/score.h | 61 |
2 files changed, 65 insertions, 19 deletions
diff --git a/engines/director/score.cpp b/engines/director/score.cpp index 7b56e55f61..14965d4a7e 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -506,23 +506,30 @@ BitmapCast::BitmapCast(Common::SeekableReadStream &stream) { TextCast::TextCast(Common::SeekableReadStream &stream) { /*byte flags =*/ stream.readByte(); - borderSize = stream.readByte(); - gutterSize = stream.readByte(); - boxShadow = stream.readByte(); - textType = stream.readByte(); - textAlign = stream.readUint16BE(); + borderSize = static_cast<SizeType>(stream.readByte()); + gutterSize = static_cast<SizeType>(stream.readByte()); + boxShadow = static_cast<SizeType>(stream.readByte()); + textType = static_cast<TextType>(stream.readByte()); + textAlign = static_cast<TextAlignType>(stream.readUint16BE()); stream.skip(6); //palinfo /*uint32 unk1 = */ stream.readUint32BE(); initialRect = Score::readRect(stream); - textShadow = stream.readByte(); - textFlags = stream.readByte(); + textShadow = static_cast<SizeType>(stream.readByte()); + byte flags = stream.readByte(); + if (flags & 0x1) + textFlags.push_back(kTextFlagEditable); + if (flags & 0x2) + textFlags.push_back(kTextFlagAutoTab); + if (flags & 0x4) + textFlags.push_back(kTextFlagDoNotWrap); + /*uint16 unk2 =*/ stream.readUint16BE(); } ShapeCast::ShapeCast(Common::SeekableReadStream &stream) { /*byte flags = */ stream.readByte(); /*unk1 = */ stream.readByte(); - shapeType = stream.readByte(); + shapeType = static_cast<ShapeType>(stream.readByte()); initialRect = Score::readRect(stream); pattern = stream.readUint16BE(); fgCol = stream.readByte(); diff --git a/engines/director/score.h b/engines/director/score.h index 4546b42e16..79eeae0961 100644 --- a/engines/director/score.h +++ b/engines/director/score.h @@ -179,10 +179,17 @@ struct BitmapCast : Cast { uint8 flags; }; +enum ShapeType { + kShapeRectangle, + kShapeRoundRect, + kShapeOval, + kShapeLine +}; + struct ShapeCast : Cast { ShapeCast(Common::SeekableReadStream &stream); - byte shapeType; + ShapeType shapeType; uint16 pattern; byte fgCol; byte bgCol; @@ -191,26 +198,58 @@ struct ShapeCast : Cast { 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 +}; + struct TextCast : Cast { TextCast(Common::SeekableReadStream &stream); - byte borderSize; - byte gutterSize; - byte boxShadow; + SizeType borderSize; + SizeType gutterSize; + SizeType boxShadow; + + TextType textType; + TextAlignType textAlign; + SizeType textShadow; + Common::Array<TextFlag> textFlags; +}; - byte textType; - byte textAlign; - byte textShadow; - byte textFlags; +enum ButtonType { + kTypeButton, + kTypeCheckBox, + kTypeRadio }; struct ButtonCast : TextCast { ButtonCast(Common::SeekableReadStream &stream) : TextCast(stream) { - buttonType = stream.readUint16BE(); + buttonType = static_cast<ButtonType>(stream.readUint16BE()); } - //TODO types? - uint16 buttonType; + ButtonType buttonType; }; struct CastInfo { |