| #pragma once |
| |
| #ifndef T_THUMBNAIL_INCLUDED |
| #define T_THUMBNAIL_INCLUDED |
| |
| #include "tfilepath.h" |
| #include "traster.h" |
| |
| class TXshLevel; |
| class TXsheet; |
| class TPalette; |
| |
| |
| |
| class Thumbnail |
| { |
| public: |
| class Frame |
| { |
| public: |
| Frame(const TFrameId &fid) : m_fid(fid) {} |
| const TFrameId m_fid; |
| TRaster32P m_raster; |
| }; |
| |
| enum Type { |
| LEVEL, |
| SCENE |
| }; |
| |
| protected: |
| vector<Frame *> m_frames; |
| |
| int m_currentFrameIndex; |
| bool m_iconLoaded; |
| bool m_playing; |
| |
| TDimension m_size; |
| TRaster32P m_raster; |
| |
| public: |
| Thumbnail(const TDimension &size); |
| virtual ~Thumbnail(); |
| |
| void addFrame(const TFrameId &fid); |
| |
| bool isIconLoaded() const { return m_iconLoaded; } |
| bool isPlaying() const { return m_playing; } |
| |
| |
| virtual void loadIcon() = 0; |
| |
| |
| |
| virtual void loadFrame(int index) = 0; |
| |
| virtual void setPlaying(bool on) = 0; |
| |
| virtual string getName() const { return ""; } |
| virtual TFilePath getPath() const { return "__none__"; } |
| |
| virtual Type getType() const = 0; |
| |
| |
| virtual void setName(string name) {} |
| |
| const TRaster32P &getRaster() const { return m_raster; } |
| TDimension getSize() const { return m_size; } |
| |
| bool nextFrame() { return gotoFrame(m_currentFrameIndex + 1); } |
| int getCurrentFrameIndex() { return m_currentFrameIndex; } |
| |
| |
| bool gotoFrame(int index); |
| |
| TAffine getAffine(const TDimension &cameraSize) const; |
| virtual bool startDragDrop() { return false; } |
| |
| private: |
| |
| Thumbnail(const Thumbnail &); |
| Thumbnail &operator=(const Thumbnail &); |
| }; |
| |
| |
| |
| class LevelThumbnail : public Thumbnail |
| { |
| protected: |
| TXshLevel *m_level; |
| |
| public: |
| LevelThumbnail(const TDimension &size, TXshLevel *level); |
| ~LevelThumbnail(); |
| |
| void loadIcon(); |
| void loadFrame(int index); |
| void setPlaying(bool on); |
| |
| string getName() const; |
| TFilePath getPath() const; |
| |
| void setName(string name); |
| |
| Type getType() const { return LEVEL; }; |
| |
| private: |
| |
| LevelThumbnail(const LevelThumbnail &); |
| LevelThumbnail &operator=(const LevelThumbnail &); |
| }; |
| |
| |
| |
| class SceneThumbnail : public Thumbnail |
| { |
| protected: |
| string m_name; |
| TXsheet *m_xsheet; |
| TPalette *m_palette; |
| |
| public: |
| SceneThumbnail(const TDimension &size, TXsheet *xsheet, TPalette *palette); |
| ~SceneThumbnail(); |
| |
| void loadIcon(); |
| void loadFrame(int index); |
| void setPlaying(bool on); |
| |
| string getName() const; |
| TFilePath getPath() const; |
| |
| Type getType() const { return SCENE; }; |
| |
| void setName(string name); |
| |
| private: |
| |
| SceneThumbnail(const LevelThumbnail &); |
| SceneThumbnail &operator=(const LevelThumbnail &); |
| }; |
| |
| |
| |
| class FileThumbnail : public Thumbnail |
| { |
| protected: |
| TFilePath m_filepath; |
| |
| public: |
| FileThumbnail(const TDimension &size, const TFilePath &path); |
| |
| string getName() const { return m_filepath.getName(); } |
| TFilePath getPath() const { return m_filepath; } |
| |
| void setName(string name); |
| |
| static FileThumbnail *create(const TDimension &size, const TFilePath &path); |
| |
| bool startDragDrop(); |
| |
| private: |
| |
| FileThumbnail(const FileThumbnail &); |
| FileThumbnail &operator=(const FileThumbnail &); |
| }; |
| |
| #endif |