tahoma2d/toonz/sources/toonzfarm/tfarmclient/thumbnail.h

161 lines
3.5 KiB
C
Raw Normal View History

2016-05-17 03:04:11 +12:00
#pragma once
2016-03-19 06:57:51 +13:00
#ifndef T_THUMBNAIL_INCLUDED
#define T_THUMBNAIL_INCLUDED
#include "tfilepath.h"
#include "traster.h"
class TXshLevel;
class TXsheet;
class TPalette;
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
class Thumbnail {
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
class Frame {
public:
Frame(const TFrameId &fid) : m_fid(fid) {}
const TFrameId m_fid;
TRaster32P m_raster;
};
enum Type { LEVEL, SCENE };
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
vector<Frame *> m_frames;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
int m_currentFrameIndex;
bool m_iconLoaded;
bool m_playing;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
TDimension m_size;
TRaster32P m_raster;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
Thumbnail(const TDimension &size);
virtual ~Thumbnail();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void addFrame(const TFrameId &fid);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
bool isIconLoaded() const { return m_iconLoaded; }
bool isPlaying() const { return m_playing; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
// post: assert(m_iconLoaded); assert(m_raster);
virtual void loadIcon() = 0;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
// pre: 0<=index && index<m_frames.size()
// post: assert(m_frames[index]);
virtual void loadFrame(int index) = 0;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
virtual void setPlaying(bool on) = 0;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
virtual string getName() const { return ""; }
virtual TFilePath getPath() const { return "__none__"; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
virtual Type getType() const = 0;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
// pre: assert(!m_playing);
virtual void setName(string name) {}
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
const TRaster32P &getRaster() const { return m_raster; }
TDimension getSize() const { return m_size; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
bool nextFrame() { return gotoFrame(m_currentFrameIndex + 1); }
int getCurrentFrameIndex() { return m_currentFrameIndex; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
// pre: assert(m_playing)
bool gotoFrame(int index);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
TAffine getAffine(const TDimension &cameraSize) const;
virtual bool startDragDrop() { return false; }
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
// not implemented
Thumbnail(const Thumbnail &);
Thumbnail &operator=(const Thumbnail &);
2016-03-19 06:57:51 +13:00
};
//============================================================
2016-06-15 18:43:10 +12:00
class LevelThumbnail : public Thumbnail {
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
TXshLevel *m_level;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
LevelThumbnail(const TDimension &size, TXshLevel *level);
~LevelThumbnail();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void loadIcon();
void loadFrame(int index);
void setPlaying(bool on);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
string getName() const;
TFilePath getPath() const;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setName(string name);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
Type getType() const { return LEVEL; };
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
// not implemented
LevelThumbnail(const LevelThumbnail &);
LevelThumbnail &operator=(const LevelThumbnail &);
2016-03-19 06:57:51 +13:00
};
//============================================================
2016-06-15 18:43:10 +12:00
class SceneThumbnail : public Thumbnail {
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
string m_name;
TXsheet *m_xsheet;
TPalette *m_palette;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
SceneThumbnail(const TDimension &size, TXsheet *xsheet, TPalette *palette);
~SceneThumbnail();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void loadIcon();
void loadFrame(int index);
void setPlaying(bool on);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
string getName() const;
TFilePath getPath() const;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
Type getType() const { return SCENE; };
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setName(string name);
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
// not implemented
SceneThumbnail(const LevelThumbnail &);
SceneThumbnail &operator=(const LevelThumbnail &);
2016-03-19 06:57:51 +13:00
};
//============================================================
2016-06-15 18:43:10 +12:00
class FileThumbnail : public Thumbnail {
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
TFilePath m_filepath;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
FileThumbnail(const TDimension &size, const TFilePath &path);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
string getName() const { return m_filepath.getName(); }
TFilePath getPath() const { return m_filepath; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setName(string name);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
static FileThumbnail *create(const TDimension &size, const TFilePath &path);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
bool startDragDrop();
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
// not implemented
FileThumbnail(const FileThumbnail &);
FileThumbnail &operator=(const FileThumbnail &);
2016-03-19 06:57:51 +13:00
};
#endif