1 #pragma once
2 
3 #ifndef TFX_ATTRIBUTES_INCLUDED
4 #define TFX_ATTRIBUTES_INCLUDED
5 
6 #include "tgeometry.h"
7 #include <QStack>
8 #include <QList>
9 
10 #undef DVAPI
11 #undef DVVAR
12 #ifdef TFX_EXPORTS
13 #define DVAPI DV_EXPORT_API
14 #define DVVAR DV_EXPORT_VAR
15 #else
16 #define DVAPI DV_IMPORT_API
17 #define DVVAR DV_IMPORT_VAR
18 #endif
19 
20 class DVAPI TFxAttributes {
21   int m_id;
22   TPointD m_dagNodePos;
23   bool m_enabled;
24   bool m_speedAware;
25   bool m_isOpened;
26   TPointD m_speed;
27   // A stack is used to manage subgroups.
28   QStack<int> m_groupId;
29   QStack<std::wstring> m_groupName;
30   int m_passiveCacheDataIdx;
31 
32   int m_groupSelector;
33 
34   /*-- MotionBlurなどのFxのために、オブジェクトの軌跡のデータを取得する --*/
35   QList<TPointD> m_motionPoints;
36   // to maintain backward compatibility in the fx
37   int m_fxVersion;
38 
39 public:
40   TFxAttributes();
41   ~TFxAttributes();
42 
setId(int id)43   void setId(int id) { m_id = id; }
getId()44   int getId() { return m_id; }
45 
46   void setDagNodePos(const TPointD &pos);
getDagNodePos()47   TPointD getDagNodePos() const { return m_dagNodePos; }
48 
isEnabled()49   bool isEnabled() const { return m_enabled; }
enable(bool on)50   void enable(bool on) { m_enabled = on; }
51 
setIsSpeedAware(bool yes)52   void setIsSpeedAware(bool yes) { m_speedAware = yes; }
isSpeedAware()53   bool isSpeedAware() const { return m_speedAware; }
54 
setSpeed(TPointD & speed)55   void setSpeed(TPointD &speed) { m_speed = speed; }
getSpeed()56   TPointD getSpeed() const { return m_speed; }
57 
setIsOpened(bool value)58   void setIsOpened(bool value) { m_isOpened = value; }
isOpened()59   bool isOpened() { return m_isOpened; }
60 
passiveCacheDataIdx()61   int &passiveCacheDataIdx() { return m_passiveCacheDataIdx; }
62 
setMotionPoints(QList<TPointD> motionPoints)63   void setMotionPoints(QList<TPointD> motionPoints) {
64     m_motionPoints = motionPoints;
65   }
getMotionPoints()66   QList<TPointD> getMotionPoints() { return m_motionPoints; }
setFxVersion(int version)67   void setFxVersion(int version) { m_fxVersion = version; }
getFxVersion()68   int getFxVersion() const { return m_fxVersion; };
69 
70   // Group management
71 
72   int setGroupId(int value);
73   void setGroupId(int value, int position);
74   int getGroupId();
75   QStack<int> getGroupIdStack();
76   void removeGroupId(int position);
77   int removeGroupId();
78 
79   void removeFromAllGroup();
80 
81   bool isGrouped();
82   bool isContainedInGroup(int groupId);
83 
84   void setGroupName(const std::wstring &name, int position = -1);
85   std::wstring getGroupName(bool fromEditor);
86   QStack<std::wstring> getGroupNameStack();
87   int removeGroupName(bool fromEditor);
88   void removeGroupName(int position = -1);
89 
90   bool editGroup();
91   bool isGroupEditing();
92   void closeEditingGroup(int groupId);
93   int getEditingGroupId();
94   std::wstring getEditingGroupName();
95   void closeAllGroups();
96 };
97 
98 #endif
99