Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TFX_ATTRIBUTES_INCLUDED
Toshihiro Shimizu 890ddd
#define TFX_ATTRIBUTES_INCLUDED
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tgeometry.h"
Toshihiro Shimizu 890ddd
#include <qstack></qstack>
manongjohn adae15
#include <qlist></qlist>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TFX_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
Shinya Kitaoka 120a6e
class DVAPI TFxAttributes {
Shinya Kitaoka 120a6e
  int m_id;
Shinya Kitaoka 120a6e
  TPointD m_dagNodePos;
Shinya Kitaoka 120a6e
  bool m_enabled;
Shinya Kitaoka 120a6e
  bool m_speedAware;
Shinya Kitaoka 120a6e
  bool m_isOpened;
Shinya Kitaoka 120a6e
  TPointD m_speed;
Shinya Kitaoka 120a6e
  // A stack is used to manage subgroups.
Shinya Kitaoka 120a6e
  QStack<int> m_groupId;</int>
Shinya Kitaoka 120a6e
  QStack<std::wstring> m_groupName;</std::wstring>
Shinya Kitaoka 120a6e
  int m_passiveCacheDataIdx;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  int m_groupSelector;
Shinya Kitaoka 120a6e
shun-iwasawa 443318
  /*-- Get object trajectory data for MotionBlur and other Fxs --*/
Shinya Kitaoka 120a6e
  QList<tpointd> m_motionPoints;</tpointd>
shun-iwasawa 13c4cf
  TAffine m_motionAffine[2];
shun-iwasawa c1adfa
  // to maintain backward compatibility in the fx
shun-iwasawa c1adfa
  int m_fxVersion;
Toshihiro Shimizu 890ddd
shun-iwasawa 8cac36
  bool m_hasGlobalControl;
shun-iwasawa 8cac36
  double m_globalIntensity;
shun-iwasawa 8cac36
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  TFxAttributes();
Shinya Kitaoka 120a6e
  ~TFxAttributes();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setId(int id) { m_id = id; }
Shinya Kitaoka 120a6e
  int getId() { return m_id; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setDagNodePos(const TPointD &pos);
Shinya Kitaoka 120a6e
  TPointD getDagNodePos() const { return m_dagNodePos; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  bool isEnabled() const { return m_enabled; }
Shinya Kitaoka 120a6e
  void enable(bool on) { m_enabled = on; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setIsSpeedAware(bool yes) { m_speedAware = yes; }
Shinya Kitaoka 120a6e
  bool isSpeedAware() const { return m_speedAware; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setSpeed(TPointD &speed) { m_speed = speed; }
Shinya Kitaoka 120a6e
  TPointD getSpeed() const { return m_speed; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setIsOpened(bool value) { m_isOpened = value; }
Shinya Kitaoka 120a6e
  bool isOpened() { return m_isOpened; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int &passiveCacheDataIdx() { return m_passiveCacheDataIdx; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setMotionPoints(QList<tpointd> motionPoints) {</tpointd>
Shinya Kitaoka 120a6e
    m_motionPoints = motionPoints;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
  QList<tpointd> getMotionPoints() { return m_motionPoints; }</tpointd>
shun-iwasawa 13c4cf
shun-iwasawa 13c4cf
  void setMotionAffines(TAffine aff_Before, TAffine aff_After) {
shun-iwasawa 13c4cf
    m_motionAffine[0] = aff_Before;
shun-iwasawa 13c4cf
    m_motionAffine[1] = aff_After;
shun-iwasawa 13c4cf
  }
shun-iwasawa 13c4cf
  void getMotionAffines(TAffine &aff_Before, TAffine &aff_After) {
shun-iwasawa 13c4cf
    aff_Before = m_motionAffine[0];
shun-iwasawa 13c4cf
    aff_After  = m_motionAffine[1];
shun-iwasawa 13c4cf
  }
shun-iwasawa 13c4cf
shun-iwasawa c1adfa
  void setFxVersion(int version) { m_fxVersion = version; }
shun-iwasawa c1adfa
  int getFxVersion() const { return m_fxVersion; };
Toshihiro Shimizu 890ddd
shun-iwasawa 8cac36
  void setHasGlobalControl(bool yes) { m_hasGlobalControl = yes; }
shun-iwasawa 8cac36
  bool hasGlobalControl() const { return m_hasGlobalControl; }
shun-iwasawa 8cac36
  void setGlobalIntensity(double val) { m_globalIntensity = val; }
shun-iwasawa 8cac36
  double getGlobalIntensity() { return m_globalIntensity; }
Shinya Kitaoka 120a6e
  // Group management
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int setGroupId(int value);
Shinya Kitaoka 120a6e
  void setGroupId(int value, int position);
Shinya Kitaoka 120a6e
  int getGroupId();
Shinya Kitaoka 120a6e
  QStack<int> getGroupIdStack();</int>
Shinya Kitaoka 120a6e
  void removeGroupId(int position);
Shinya Kitaoka 120a6e
  int removeGroupId();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void removeFromAllGroup();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  bool isGrouped();
Shinya Kitaoka 120a6e
  bool isContainedInGroup(int groupId);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  void setGroupName(const std::wstring &name, int position = -1);
Shinya Kitaoka 120a6e
  std::wstring getGroupName(bool fromEditor);
Shinya Kitaoka 120a6e
  QStack<std::wstring> getGroupNameStack();</std::wstring>
Shinya Kitaoka 120a6e
  int removeGroupName(bool fromEditor);
Shinya Kitaoka 120a6e
  void removeGroupName(int position = -1);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  bool editGroup();
Shinya Kitaoka 120a6e
  bool isGroupEditing();
Shinya Kitaoka 120a6e
  void closeEditingGroup(int groupId);
Shinya Kitaoka 120a6e
  int getEditingGroupId();
Shinya Kitaoka 120a6e
  std::wstring getEditingGroupName();
Shinya Kitaoka 120a6e
  void closeAllGroups();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif