|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef T_PINNED_RANGE_SET_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
#define T_PINNED_RANGE_SET_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tstageobject.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TOONZLIB_EXPORTS
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_EXPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_EXPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_IMPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_IMPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TPinnedRangeSet
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
struct Range {
|
|
Toshihiro Shimizu |
890ddd |
int first, second;
|
|
Toshihiro Shimizu |
890ddd |
Range(int _first, int _second)
|
|
Toshihiro Shimizu |
890ddd |
: first(_first), second(_second)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TPinnedRangeSet();
|
|
Toshihiro Shimizu |
890ddd |
~TPinnedRangeSet() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void resetRanges() { m_ranges.clear(); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setPlacement(const TAffine &placement);
|
|
Toshihiro Shimizu |
890ddd |
const TAffine &getPlacement() const { return m_placement; }
|
|
Toshihiro Shimizu |
890ddd |
void setRange(int first, int second);
|
|
Toshihiro Shimizu |
890ddd |
void removeRange(int first, int second);
|
|
Toshihiro Shimizu |
890ddd |
void removeAllRanges();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int isPinned(int frame) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
return getRangeIndex(frame) >= 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const Range *getRange(int frame) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
int rangeIndex = getRangeIndex(frame);
|
|
Toshihiro Shimizu |
890ddd |
return rangeIndex >= 0 ? &m_ranges[rangeIndex] : 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const Range *getNextRange(int frame) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
for (int i = 0; i < (int)m_ranges.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
if (m_ranges[i].first > frame)
|
|
Toshihiro Shimizu |
890ddd |
return &m_ranges[i];
|
|
Toshihiro Shimizu |
890ddd |
return 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const Range *getRangeByIndex(int index) const { return &m_ranges[index]; }
|
|
Toshihiro Shimizu |
890ddd |
int getRangeCount() const { return (int)m_ranges.size(); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TPinnedRangeSet *clone();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void loadData(TIStream &is);
|
|
Toshihiro Shimizu |
890ddd |
void saveData(TOStream &os);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
TStageObject *m_stageObject;
|
|
Shinya Kitaoka |
3bfa54 |
std::vector<range> m_ranges;</range>
|
|
Toshihiro Shimizu |
890ddd |
TAffine m_placement;
|
|
Toshihiro Shimizu |
890ddd |
int getRangeIndex(int frame) const;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|