1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
/* ResidualVM - A 3D game interpreter
*
* ResidualVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the AUTHORS
* 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 STARK_RESOURCES_IMAGE_H
#define STARK_RESOURCES_IMAGE_H
#include "common/rect.h"
#include "common/str.h"
#include "engines/stark/resources/object.h"
namespace Stark {
class Visual;
namespace Formats {
class XRCReadStream;
}
namespace Resources {
/**
* A still image resource
*/
class Image : public Object {
public:
static const Type::ResourceType TYPE = Type::kImage;
enum SubType {
kImageSub2 = 2,
kImageSub3 = 3,
kImageSub4 = 4
};
/** Image factory */
static Object *construct(Object *parent, byte subType, uint16 index, const Common::String &name);
typedef Common::Array<Common::Point> Polygon;
Image(Object *parent, byte subType, uint16 index, const Common::String &name);
virtual ~Image();
// Resource API
void readData(Formats::XRCReadStream *stream) override;
/** Initialize the renderable for the image */
virtual Visual *getVisual();
/** Get the pat-table index for a given point */
int indexForPoint(const Common::Point &point) const;
protected:
void printData() override;
bool isPointInPolygon(const Polygon &polygon, const Common::Point &point) const;
virtual void initVisual() = 0;
Common::String _filename;
Common::String _archiveName;
Visual *_visual;
bool _transparent;
uint32 _transparentColor;
uint32 _field_44_ADF;
uint32 _field_48_ADF;
Common::Point _hotspot;
Common::Array<Polygon> _polygons;
};
/**
* A still image resource loading its data from an XMG file
*/
class ImageStill : public Image {
public:
ImageStill(Object *parent, byte subType, uint16 index, const Common::String &name);
virtual ~ImageStill();
// Resource API
void readData(Formats::XRCReadStream *stream) override;
void onPostRead() override;
protected:
// Resource API
void printData() override;
// Image API
void initVisual() override;
bool _noName;
};
/**
* Text image rendered from a TTF font
*/
class ImageText : public Image {
public:
ImageText(Object *parent, byte subType, uint16 index, const Common::String &name);
virtual ~ImageText();
// Resource API
void readData(Formats::XRCReadStream *stream) override;
protected:
// Resource API
void printData() override;
// Image API
void initVisual();
Common::Point _size;
Common::String _text;
uint32 _color;
uint32 _font;
};
} // End of namespace Resources
} // End of namespace Stark
#endif // STARK_RESOURCES_IMAGE_H
|