tahoma2d/toonz/sources/include/toonz/txshlevel.h

159 lines
4.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 TXSHLEVEL_INCLUDED
#define TXSHLEVEL_INCLUDED
#include "tfilepath.h"
#include "tpersist.h"
#include "tsmartpointer.h"
#include <QObject>
#undef DVAPI
#undef DVVAR
#ifdef TOONZLIB_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
//=============================================================================
// forward declarations
class TXshSimpleLevel;
class TXshChildLevel;
class TXshZeraryFxLevel;
class TXshPaletteLevel;
class HookSet;
class TrackerObjectsSet;
class ToonzScene;
class TXshSoundLevel;
class TXshSoundTextLevel;
//=============================================================================
2016-06-15 18:43:10 +12:00
//! The TXshLevel class is the base class of level managers in xsheet.
2016-03-19 06:57:51 +13:00
/*!Inherits \b TSmartObject and \b TPersist.
\n This is an abstract base class inherited by the concrete classes
2016-06-15 18:43:10 +12:00
\b TXshChildLevel, \b TXshSimpleLevel and \b TXshZeraryFxLevel.
2016-03-19 06:57:51 +13:00
The class contains all features about a generic level and gives all methods
to access to these information.
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
It's possible ot know level name, getName(), or identify level types
getType(),
2016-03-19 06:57:51 +13:00
defined in \b txshleveltypes.h, and change it, setType().
The class provides function to know scene to which level belongs, getScene(),
and function to change scene setScene().
*/
//=============================================================================
2016-06-15 18:43:10 +12:00
class DVAPI TXshLevel : public QObject, public TSmartObject, public TPersist {
Q_OBJECT
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
std::wstring m_name;
std::wstring m_shortName;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
/*!
Identify level types defined in \b txshleveltypes.h
*/
int m_type;
HookSet *m_hookSet;
ToonzScene *m_scene;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! create shortname from the level name
void updateShortName();
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
/*!
Constructs a TXshLevel with \b TXshLevel name \b name
*/
TXshLevel(ClassCode classCode, std::wstring name);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
/*!
Destroys the TXshLevel object.
*/
virtual ~TXshLevel();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setName(std::wstring name);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! return the level type (types are defined in \b txshleveltypes.h); \sa
//! setType()
int getType() const { return m_type; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! change the level type; \sa getType()
void setType(int type) { m_type = type; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Return the \b ToonzScene the level belongs to; \sa setScene()
ToonzScene *getScene() const { return m_scene; }
/*!
Set scene to which level belongs to \b scene.
\sa getScene()
*/
virtual void setScene(ToonzScene *scene);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Method (to be overridden in subclasses) to downcast to \b TXshSimpleLevel
virtual TXshSimpleLevel *getSimpleLevel() { return 0; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Method (to be overridden in subclasses) to downcast to \b TXshChildLevel
virtual TXshChildLevel *getChildLevel() { return 0; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Method (to be overridden in subclasses) to downcast to \b
//! TXshZeraryFxLevel
virtual TXshZeraryFxLevel *getZeraryFxLevel() { return 0; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Method (to be overridden in subclasses) to downcast to \b TXshPaletteLevel
virtual TXshPaletteLevel *getPaletteLevel() { return 0; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Method (to be overridden in subclasses) to downcast to \b TXshSoundLevel
virtual TXshSoundLevel *getSoundLevel() { return 0; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Method (to be overridden in subclasses) to downcast to \b
//! TXshSoundTextLevel
virtual TXshSoundTextLevel *getSoundTextLevel() { return 0; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Return level name. \sa getShortName()
std::wstring getName() const { return m_name; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Return level short name. \sa getName()
std::wstring getShortName() const { return m_shortName; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Return the file path associated with the level
virtual TFilePath getPath() const { return TFilePath(); }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
virtual bool isEmpty() const { return true; }
virtual int getFrameCount() const { return 0; }
virtual void getFids(std::vector<TFrameId> &fids) const {}
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Load the level data (i.e. name, path, etc. e.g. from the .tnz file)
2016-06-19 20:06:29 +12:00
void loadData(TIStream &is) override = 0;
2016-06-15 18:43:10 +12:00
//! Save the level data (i.e. name, path, etc. e.g. to the .tnz file)
2016-06-19 20:06:29 +12:00
void saveData(TOStream &os) override = 0;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Load the level content from the associated path
virtual void load() = 0;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Save the level content to the associated path
virtual void save() = 0;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
/*!
Return \b HookSet.
*/
HookSet *getHookSet() const { return m_hookSet; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
//! Mark the level as "modified"
virtual void setDirtyFlag(bool on) {}
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
// not implemented
TXshLevel(const TXshLevel &);
TXshLevel &operator=(const TXshLevel &);
2016-03-19 06:57:51 +13:00
};
2016-04-15 17:11:23 +12:00
#ifdef _WIN32
2016-03-19 06:57:51 +13:00
template class DV_EXPORT_API TSmartPointerT<TXshLevel>;
#endif
typedef TSmartPointerT<TXshLevel> TXshLevelP;
#endif