00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SHAPEARCHIVE_H
00020 #define SHAPEARCHIVE_H
00021
00022 #include "Archive.h"
00023
00024 class Shape;
00025 struct ConvertShapeFormat;
00026 namespace Pentagram { struct Palette; }
00027
00028 class ShapeArchive : public Pentagram::Archive
00029 {
00030 public:
00031 ENABLE_RUNTIME_CLASSTYPE();
00032
00033 ShapeArchive(uint16 id_, Pentagram::Palette* pal_ = 0,
00034 const ConvertShapeFormat *format_ = 0)
00035 : Archive(), id(id_), format(format_), palette(pal_) { }
00036 ShapeArchive(ArchiveFile* af, uint16 id_, Pentagram::Palette* pal_ = 0,
00037 const ConvertShapeFormat *format_ = 0)
00038 : Archive(af), id(id_), format(format_), palette(pal_) { }
00039 ShapeArchive(IDataSource* ds, uint16 id_, Pentagram::Palette* pal_ = 0,
00040 const ConvertShapeFormat *format_ = 0)
00041 : Archive(ds), id(id_), format(format_), palette(pal_) { }
00042 ShapeArchive(const std::string& path, uint16 id_,
00043 Pentagram::Palette* pal_ = 0,
00044 const ConvertShapeFormat *format_ = 0)
00045 : Archive(path), id(id_), format(format_), palette(pal_) { }
00046
00047 virtual ~ShapeArchive();
00048
00049 Shape* getShape(uint32 shapenum);
00050
00051 virtual void cache(uint32 shapenum);
00052 virtual void uncache(uint32 shapenum);
00053 virtual bool isCached(uint32 shapenum);
00054
00055 protected:
00056 uint16 id;
00057 const ConvertShapeFormat *format;
00058 Pentagram::Palette* palette;
00059 std::vector<Shape*> shapes;
00060 };
00061
00062
00063 #endif