|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Shinya Kitaoka |
810553 |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef TNOTANIMATABLEPARAM_H
|
|
Toshihiro Shimizu |
890ddd |
#define TNOTANIMATABLEPARAM_H
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
262a92 |
#include <memory>
|
|
Shinya Kitaoka |
262a92 |
|
|
Toshihiro Shimizu |
890ddd |
#include "tparam.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tparamchange.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tfilepath.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "texception.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tundo.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tconvert.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include <set>
|
|
shun-iwasawa |
5b2332 |
#include <QFont>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TPARAM_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 |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// TNotAnimatableParamChange
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Ivan Mahonin |
e280ae |
#ifdef _MSC_VER
|
|
Toshihiro Shimizu |
890ddd |
#pragma warning(push)
|
|
Toshihiro Shimizu |
890ddd |
#pragma warning(disable : 4251)
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
d1f6c4 |
class TNotAnimatableParamChange final : public TParamChange {
|
|
Shinya Kitaoka |
120a6e |
T m_oldValue;
|
|
Shinya Kitaoka |
120a6e |
T m_newValue;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamChange(TParam *param, const T &oldValue, const T &newValue,
|
|
Shinya Kitaoka |
120a6e |
bool undoing)
|
|
Shinya Kitaoka |
120a6e |
: TParamChange(param, TParamChange::m_minFrame, TParamChange::m_maxFrame,
|
|
Shinya Kitaoka |
120a6e |
false, false, undoing)
|
|
Shinya Kitaoka |
120a6e |
, m_oldValue(oldValue)
|
|
Shinya Kitaoka |
120a6e |
, m_newValue(newValue) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TParamChange *clone() const {
|
|
Shinya Kitaoka |
120a6e |
return new TNotAnimatableParamChange<T>(*this);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
TUndo *createUndo() const;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// TNotAnimatableParamChangeUndo
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
d1f6c4 |
class TNotAnimatableParamChangeUndo final : public TUndo {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamChangeUndo(TParam *param, const T &oldValue,
|
|
Shinya Kitaoka |
120a6e |
const T &newValue);
|
|
Shinya Kitaoka |
120a6e |
~TNotAnimatableParamChangeUndo();
|
|
Shinya Kitaoka |
473e70 |
void undo() const override;
|
|
Shinya Kitaoka |
473e70 |
void redo() const override;
|
|
Shinya Kitaoka |
473e70 |
int getSize() const override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
TParam *m_param;
|
|
Shinya Kitaoka |
120a6e |
T m_oldValue;
|
|
Shinya Kitaoka |
120a6e |
T m_newValue;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// TNotAnimatableParamObserver
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
class TNotAnimatableParamObserver : public TParamObserver {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamObserver() {}
|
|
Shinya Kitaoka |
473e70 |
|
|
Shinya Kitaoka |
473e70 |
void onChange(const TParamChange &) override = 0;
|
|
Shinya Kitaoka |
120a6e |
void onChange(const TNotAnimatableParamChange<T> &change) {
|
|
Shinya Kitaoka |
120a6e |
onChange(static_cast<const TParamChange &>(change));
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
typedef TNotAnimatableParamObserver<int> TIntParamObserver;
|
|
Toshihiro Shimizu |
890ddd |
typedef TNotAnimatableParamObserver<bool> TBoolParamObserver;
|
|
Toshihiro Shimizu |
890ddd |
typedef TNotAnimatableParamObserver<TFilePath> TFilePathParamObserver;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// TNotAnimatableParam base class
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
class DVAPI TNotAnimatableParam : public TParam {
|
|
Shinya Kitaoka |
120a6e |
T m_defaultValue, m_value;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
otakuto |
158f9f |
std::set<TNotAnimatableParamObserver<T> *> m_observers;
|
|
otakuto |
158f9f |
std::set<TParamObserver *> m_paramObservers;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParam(T def = T())
|
|
Shinya Kitaoka |
120a6e |
: TParam(), m_defaultValue(def), m_value(def){};
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParam(const TNotAnimatableParam &src)
|
|
Shinya Kitaoka |
120a6e |
: TParam(src.getName())
|
|
Shinya Kitaoka |
120a6e |
, m_defaultValue(src.getDefaultValue())
|
|
Shinya Kitaoka |
120a6e |
, m_value(src.getValue()){};
|
|
Shinya Kitaoka |
120a6e |
~TNotAnimatableParam(){};
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
T getValue() const { return m_value; }
|
|
Shinya Kitaoka |
120a6e |
T getDefaultValue() const { return m_defaultValue; }
|
|
Shinya Kitaoka |
120a6e |
void setValue(T v, bool undoing = false) {
|
|
Shinya Kitaoka |
120a6e |
if (m_value == v) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamChange<T> change(this, m_value, v, undoing);
|
|
Shinya Kitaoka |
120a6e |
m_value = v;
|
|
Shinya Kitaoka |
120a6e |
for (typename std::set<TNotAnimatableParamObserver<T> *>::iterator obsIt =
|
|
Shinya Kitaoka |
120a6e |
m_observers.begin();
|
|
Shinya Kitaoka |
120a6e |
obsIt != m_observers.end(); ++obsIt)
|
|
Shinya Kitaoka |
120a6e |
(*obsIt)->onChange(change);
|
|
Shinya Kitaoka |
120a6e |
for (std::set<TParamObserver *>::iterator parObsIt =
|
|
Shinya Kitaoka |
120a6e |
m_paramObservers.begin();
|
|
Shinya Kitaoka |
120a6e |
parObsIt != m_paramObservers.end(); ++parObsIt)
|
|
Shinya Kitaoka |
120a6e |
(*parObsIt)->onChange(change);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void setDefaultValue(T value) { m_defaultValue = value; }
|
|
Shinya Kitaoka |
473e70 |
void copy(TParam *src) override {
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParam<T> *p = dynamic_cast<TNotAnimatableParam<T> *>(src);
|
|
Shinya Kitaoka |
120a6e |
if (!p) throw TException("invalid source for copy");
|
|
Shinya Kitaoka |
120a6e |
setName(src->getName());
|
|
Shinya Kitaoka |
120a6e |
m_defaultValue = p->m_defaultValue;
|
|
Shinya Kitaoka |
120a6e |
m_value = p->m_value;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void reset(bool undoing = false) { setValue(m_defaultValue, undoing); }
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
473e70 |
void addObserver(TParamObserver *observer) override {
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamObserver<T> *obs =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<TNotAnimatableParamObserver<T> *>(observer);
|
|
Shinya Kitaoka |
120a6e |
if (obs)
|
|
Shinya Kitaoka |
120a6e |
m_observers.insert(obs);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_paramObservers.insert(observer);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
473e70 |
void removeObserver(TParamObserver *observer) override {
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamObserver<T> *obs =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<TNotAnimatableParamObserver<T> *>(observer);
|
|
Shinya Kitaoka |
120a6e |
if (obs)
|
|
Shinya Kitaoka |
120a6e |
m_observers.erase(obs);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_paramObservers.erase(observer);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
473e70 |
bool isAnimatable() const override { return false; }
|
|
Shinya Kitaoka |
473e70 |
bool isKeyframe(double) const override { return false; }
|
|
Shinya Kitaoka |
473e70 |
void deleteKeyframe(double) override {}
|
|
Shinya Kitaoka |
473e70 |
void clearKeyframes() override {}
|
|
Shinya Kitaoka |
38fd86 |
void assignKeyframe(double, const TSmartPointerT<TParam> &, double,
|
|
Shinya Kitaoka |
38fd86 |
bool) override {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
473e70 |
std::string getValueAlias(double, int) override {
|
|
Shinya Kitaoka |
120a6e |
using namespace std;
|
|
Shinya Kitaoka |
120a6e |
return to_string(getValue());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
shun-iwasawa |
5b2332 |
|
|
Shinya Kitaoka |
473e70 |
bool hasKeyframes() const override { return 0; };
|
|
Shinya Kitaoka |
38fd86 |
void getKeyframes(std::set<double> &) const override{};
|
|
Shinya Kitaoka |
473e70 |
int getNextKeyframe(double) const override { return -1; };
|
|
Shinya Kitaoka |
473e70 |
int getPrevKeyframe(double) const override { return -1; };
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
// class TIntParam
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
9f5a1b |
#ifdef _WIN32
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TNotAnimatableParam<int>;
|
|
Toshihiro Shimizu |
890ddd |
class TIntParam;
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TPersistDeclarationT<TIntParam>;
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI TIntParam final : public TNotAnimatableParam<int> {
|
|
Shinya Kitaoka |
120a6e |
PERSIST_DECLARATION(TIntParam);
|
|
Shinya Kitaoka |
120a6e |
int minValue, maxValue;
|
|
Shinya Kitaoka |
120a6e |
bool m_isWheelEnabled;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TIntParam(int v = int())
|
|
Shinya Kitaoka |
120a6e |
: TNotAnimatableParam<int>(v)
|
|
Shinya Kitaoka |
120a6e |
, minValue(-(std::numeric_limits<int>::max)())
|
|
Shinya Kitaoka |
120a6e |
, maxValue((std::numeric_limits<int>::max)())
|
|
Shinya Kitaoka |
120a6e |
, m_isWheelEnabled(false) {}
|
|
Shinya Kitaoka |
120a6e |
TIntParam(const TIntParam &src) : TNotAnimatableParam<int>(src) {}
|
|
Shinya Kitaoka |
473e70 |
TParam *clone() const override { return new TIntParam(*this); }
|
|
Shinya Kitaoka |
473e70 |
void loadData(TIStream &is) override;
|
|
Shinya Kitaoka |
473e70 |
void saveData(TOStream &os) override;
|
|
Shinya Kitaoka |
120a6e |
void enableWheel(bool on);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
bool isWheelEnabled() const;
|
|
Shinya Kitaoka |
120a6e |
void setValueRange(int min, int max);
|
|
Shinya Kitaoka |
120a6e |
bool getValueRange(int &min, int &max) const;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
DEFINE_PARAM_SMARTPOINTER(TIntParam, int)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
// class TBoolParam
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
9f5a1b |
#ifdef _WIN32
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TNotAnimatableParam<bool>;
|
|
Toshihiro Shimizu |
890ddd |
class TBoolParam;
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TPersistDeclarationT<TBoolParam>;
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI TBoolParam final : public TNotAnimatableParam<bool> {
|
|
Shinya Kitaoka |
120a6e |
PERSIST_DECLARATION(TBoolParam);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TBoolParam(bool v = bool()) : TNotAnimatableParam<bool>(v) {}
|
|
Shinya Kitaoka |
120a6e |
TBoolParam(const TBoolParam &src) : TNotAnimatableParam<bool>(src) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
TParam *clone() const override { return new TBoolParam(*this); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
void loadData(TIStream &is) override;
|
|
Shinya Kitaoka |
473e70 |
void saveData(TOStream &os) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
DEFINE_PARAM_SMARTPOINTER(TBoolParam, bool)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
// class TFilePathParam
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
9f5a1b |
#ifdef _WIN32
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TNotAnimatableParam<TFilePath>;
|
|
Toshihiro Shimizu |
890ddd |
class TFilePathParam;
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TPersistDeclarationT<TFilePathParam>;
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI TFilePathParam final : public TNotAnimatableParam<TFilePath> {
|
|
Shinya Kitaoka |
120a6e |
PERSIST_DECLARATION(TFilePathParam);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TFilePathParam(const TFilePath &v = TFilePath())
|
|
Shinya Kitaoka |
120a6e |
: TNotAnimatableParam<TFilePath>(v) {}
|
|
Shinya Kitaoka |
120a6e |
TFilePathParam(const TFilePathParam &src)
|
|
Shinya Kitaoka |
120a6e |
: TNotAnimatableParam<TFilePath>(src) {}
|
|
Shinya Kitaoka |
473e70 |
TParam *clone() const override { return new TFilePathParam(*this); }
|
|
Shinya Kitaoka |
473e70 |
void loadData(TIStream &is) override;
|
|
Shinya Kitaoka |
473e70 |
void saveData(TOStream &os) override;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
DEFINE_PARAM_SMARTPOINTER(TFilePathParam, TFilePath)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
// class TStringParam
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
9f5a1b |
#ifdef _WIN32
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TNotAnimatableParam<std::wstring>;
|
|
Toshihiro Shimizu |
890ddd |
class TStringParam;
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TPersistDeclarationT<TStringParam>;
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI TStringParam final : public TNotAnimatableParam<std::wstring> {
|
|
Shinya Kitaoka |
120a6e |
PERSIST_DECLARATION(TStringParam);
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
5b2332 |
bool m_multiLine = false;
|
|
shun-iwasawa |
5b2332 |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TStringParam(std::wstring v = L"") : TNotAnimatableParam<std::wstring>(v) {}
|
|
Shinya Kitaoka |
120a6e |
TStringParam(const TStringParam &src)
|
|
Shinya Kitaoka |
120a6e |
: TNotAnimatableParam<std::wstring>(src) {}
|
|
Shinya Kitaoka |
473e70 |
TParam *clone() const override { return new TStringParam(*this); }
|
|
Shinya Kitaoka |
473e70 |
void loadData(TIStream &is) override;
|
|
Shinya Kitaoka |
473e70 |
void saveData(TOStream &os) override;
|
|
shun-iwasawa |
5b2332 |
|
|
shun-iwasawa |
5b2332 |
void setMultiLineEnabled(bool enable) { m_multiLine = enable; }
|
|
shun-iwasawa |
5b2332 |
bool isMultiLineEnabled() { return m_multiLine; }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
3bfa54 |
DEFINE_PARAM_SMARTPOINTER(TStringParam, std::wstring)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
// class TEnumParam
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TEnumParamImp;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI TEnumParam final : public TNotAnimatableParam<int> {
|
|
Shinya Kitaoka |
120a6e |
PERSIST_DECLARATION(TEnumParam)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TEnumParam(const int &v, const std::string &caption);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TEnumParam();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TEnumParam(const TEnumParam &src);
|
|
Shinya Kitaoka |
120a6e |
~TEnumParam();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
473e70 |
TParam *clone() const override { return new TEnumParam(*this); }
|
|
Shinya Kitaoka |
473e70 |
void copy(TParam *src) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void setValue(int v, bool undoing = false);
|
|
Shinya Kitaoka |
120a6e |
void setValue(const std::string &caption, bool undoing = false);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void addItem(const int &item, const std::string &caption);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int getItemCount() const;
|
|
Shinya Kitaoka |
120a6e |
void getItem(int i, int &item, std::string &caption) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// TPersist methods
|
|
Shinya Kitaoka |
473e70 |
void loadData(TIStream &is) override;
|
|
Shinya Kitaoka |
473e70 |
void saveData(TOStream &os) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
std::unique_ptr<TEnumParamImp> m_imp;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
typedef TEnumParam TIntEnumParam;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
typedef TNotAnimatableParamObserver<TIntEnumParam> TIntEnumParamObserver;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
DVAPI_PARAM_SMARTPOINTER(TIntEnumParam)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI TIntEnumParamP final
|
|
Shinya Kitaoka |
120a6e |
: public TDerivedSmartPointerT<TIntEnumParam, TParam> {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TIntEnumParamP(TIntEnumParam *p = 0) : DerivedSmartPointer(p) {}
|
|
Shinya Kitaoka |
120a6e |
TIntEnumParamP(int v, const std::string &caption)
|
|
Shinya Kitaoka |
120a6e |
: DerivedSmartPointer(new TEnumParam(v, caption)) {}
|
|
Shinya Kitaoka |
120a6e |
TIntEnumParamP(TParamP &p) : DerivedSmartPointer(p) {}
|
|
Shinya Kitaoka |
120a6e |
TIntEnumParamP(const TParamP &p) : DerivedSmartPointer(p) {}
|
|
Shinya Kitaoka |
120a6e |
operator TParamP() const { return TParamP(m_pointer); }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
// class TNADoubleParam //is a not animatable double param
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//=========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
9f5a1b |
#ifdef _WIN32
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TNotAnimatableParam<double>;
|
|
Toshihiro Shimizu |
890ddd |
class TNADoubleParam;
|
|
Toshihiro Shimizu |
890ddd |
template class DVAPI TPersistDeclarationT<TNADoubleParam>;
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
d1f6c4 |
class DVAPI TNADoubleParam final : public TNotAnimatableParam<double> {
|
|
Shinya Kitaoka |
120a6e |
PERSIST_DECLARATION(TNADoubleParam);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
TNADoubleParam(double v = double())
|
|
Shinya Kitaoka |
120a6e |
: TNotAnimatableParam<double>(v), m_min(0.), m_max(100.) {}
|
|
Shinya Kitaoka |
120a6e |
TNADoubleParam(const TNADoubleParam &src)
|
|
Shinya Kitaoka |
120a6e |
: TNotAnimatableParam<double>(src) {}
|
|
Shinya Kitaoka |
473e70 |
TParam *clone() const override { return new TNADoubleParam(*this); }
|
|
Shinya Kitaoka |
120a6e |
void setValueRange(double min, double max) {
|
|
Shinya Kitaoka |
120a6e |
m_min = min;
|
|
Shinya Kitaoka |
120a6e |
m_max = max;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
void setValue(double v, bool undoing = false) {
|
|
Shinya Kitaoka |
120a6e |
notMoreThan(m_max, v);
|
|
Shinya Kitaoka |
120a6e |
notLessThan(m_min, v);
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParam<double>::setValue(v, undoing);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
bool getValueRange(double &min, double &max) const {
|
|
Shinya Kitaoka |
120a6e |
min = m_min;
|
|
Shinya Kitaoka |
120a6e |
max = m_max;
|
|
Shinya Kitaoka |
120a6e |
return min < max;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
473e70 |
void loadData(TIStream &is) override;
|
|
Shinya Kitaoka |
473e70 |
void saveData(TOStream &os) override;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
double m_min, m_max;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
DEFINE_PARAM_SMARTPOINTER(TNADoubleParam, double)
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
5b2332 |
//=========================================================
|
|
shun-iwasawa |
5b2332 |
//
|
|
shun-iwasawa |
5b2332 |
// class TFontParam
|
|
shun-iwasawa |
5b2332 |
//
|
|
shun-iwasawa |
5b2332 |
//=========================================================
|
|
shun-iwasawa |
5b2332 |
|
|
shun-iwasawa |
5b2332 |
#ifdef _WIN32
|
|
shun-iwasawa |
5b2332 |
template class DVAPI TNotAnimatableParam<std::wstring>;
|
|
shun-iwasawa |
5b2332 |
class TFontParam;
|
|
shun-iwasawa |
5b2332 |
template class DVAPI TPersistDeclarationT<TFontParam>;
|
|
shun-iwasawa |
5b2332 |
#endif
|
|
shun-iwasawa |
5b2332 |
|
|
shun-iwasawa |
5b2332 |
class DVAPI TFontParam final : public TNotAnimatableParam<std::wstring> {
|
|
shun-iwasawa |
5b2332 |
PERSIST_DECLARATION(TFontParam);
|
|
shun-iwasawa |
5b2332 |
|
|
shun-iwasawa |
5b2332 |
public:
|
|
shun-iwasawa |
5b2332 |
TFontParam(std::wstring v = QFont().toString().toStdWString())
|
|
shun-iwasawa |
5b2332 |
: TNotAnimatableParam<std::wstring>(v) {}
|
|
shun-iwasawa |
5b2332 |
TFontParam(const TFontParam &src) : TNotAnimatableParam<std::wstring>(src) {}
|
|
shun-iwasawa |
5b2332 |
TParam *clone() const override { return new TFontParam(*this); }
|
|
shun-iwasawa |
5b2332 |
void loadData(TIStream &is) override;
|
|
shun-iwasawa |
5b2332 |
void saveData(TOStream &os) override;
|
|
shun-iwasawa |
5b2332 |
};
|
|
shun-iwasawa |
5b2332 |
|
|
shun-iwasawa |
5b2332 |
DEFINE_PARAM_SMARTPOINTER(TFontParam, std::wstring)
|
|
shun-iwasawa |
5b2332 |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// TNotAnimatableParamChangeUndo
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamChangeUndo<T>::TNotAnimatableParamChangeUndo(
|
|
Shinya Kitaoka |
120a6e |
TParam *param, const T &oldValue, const T &newValue)
|
|
Shinya Kitaoka |
120a6e |
: m_param(param), m_oldValue(oldValue), m_newValue(newValue) {
|
|
Shinya Kitaoka |
120a6e |
m_param->addRef();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParamChangeUndo<T>::~TNotAnimatableParamChangeUndo() {
|
|
Shinya Kitaoka |
120a6e |
m_param->release();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
void TNotAnimatableParamChangeUndo<T>::undo() const {
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParam<T> *p = dynamic_cast<TNotAnimatableParam<T> *>(m_param);
|
|
Shinya Kitaoka |
120a6e |
p->setValue(m_oldValue, true);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
void TNotAnimatableParamChangeUndo<T>::redo() const {
|
|
Shinya Kitaoka |
120a6e |
TNotAnimatableParam<T> *p = dynamic_cast<TNotAnimatableParam<T> *>(m_param);
|
|
Shinya Kitaoka |
120a6e |
p->setValue(m_newValue, true);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
int TNotAnimatableParamChangeUndo<T>::getSize() const {
|
|
Shinya Kitaoka |
120a6e |
return sizeof(*this);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// TNotAnimatableParamChange
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class T>
|
|
Shinya Kitaoka |
120a6e |
TUndo *TNotAnimatableParamChange<T>::createUndo() const {
|
|
Shinya Kitaoka |
120a6e |
return new TNotAnimatableParamChangeUndo<T>(m_param, m_oldValue, m_newValue);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Ivan Mahonin |
e280ae |
#ifdef _MSC_VER
|
|
Toshihiro Shimizu |
890ddd |
#pragma warning(pop)
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|