1 #pragma once
2 
3 #ifndef TXSHLEVELCOLUMN_INCLUDED
4 #define TXSHLEVELCOLUMN_INCLUDED
5 
6 #include "toonz/txshcolumn.h"
7 
8 #undef DVAPI
9 #undef DVVAR
10 #ifdef TOONZLIB_EXPORTS
11 #define DVAPI DV_EXPORT_API
12 #define DVVAR DV_EXPORT_VAR
13 #else
14 #define DVAPI DV_IMPORT_API
15 #define DVVAR DV_IMPORT_VAR
16 #endif
17 
18 //=============================================================================
19 // forward declarations
20 class TLevelColumnFx;
21 class TXshCell;
22 
23 //=============================================================================
24 //! The TXshLevelColumn class provides a column of levels in xsheet and allows
25 //! its management.
26 /*!Inherits \b TXshCellColumn.
27 \n The class defines column of levels getLevelColumn(), more than \b
28 TXshCellColumn has
29    a pointer to \b TLevelColumnFx getLevelColumnFx() and a \b string to identify
30 icon.
31    The string is an icon identification helpful to level icon management,
32 getIcon()
33    updateIcon().
34 */
35 //=============================================================================
36 
37 class DVAPI TXshLevelColumn final : public TXshCellColumn {
38   PERSIST_DECLARATION(TXshLevelColumn)
39   TLevelColumnFx *m_fx;
40   std::string m_iconId;
41 
42   bool m_iconVisible;
43 
44 public:
isIconVisible()45   bool isIconVisible() { return m_iconVisible; }
setIconVisible(bool visible)46   void setIconVisible(bool visible) { m_iconVisible = visible; }
47 
48   /*!
49 Constructs a TXshLevelColumn with default value.
50 */
51   TXshLevelColumn();
52   /*!
53 Destroys the TXshLevelColumn object.
54 */
55   ~TXshLevelColumn();
56 
57   TXshColumn::ColumnType getColumnType() const override;
58 
59   /*!
60 Return true if \b cell is empty or level of \b cell isn't a \b
61 TXshZeraryFxLevel.
62 */
63   bool canSetCell(const TXshCell &cell) const override;
64 
65   /*!
66 Return \b TXshLevelColumn.
67 */
getLevelColumn()68   TXshLevelColumn *getLevelColumn() override { return this; }
69 
70   /*!
71 Clone column and return a pointer to the new \b TXshColumn cloned.
72 */
73   TXshColumn *clone() const override;
74 
75   void loadData(TIStream &is) override;
76   void saveData(TOStream &os) override;
77 
78   /*!
79 Return a pointer to \b TLevelColumnFx \b m_fx.
80 */
81   TLevelColumnFx *getLevelColumnFx() const;
82 
83   /*!
84 Return \b TFx.
85 */
86   TFx *getFx() const override;
87 
88   // Used in TCellData::getNumbers
89   bool setNumbers(int row, int rowCount, const TXshCell cells[]);
90 
91 private:
92   // not implemented
93   TXshLevelColumn(const TXshLevelColumn &);
94   TXshLevelColumn &operator=(const TXshLevelColumn &);
95 };
96 
97 #ifdef _WIN32
98 template class DV_EXPORT_API TSmartPointerT<TXshLevelColumn>;
99 #endif
100 
101 typedef TSmartPointerT<TXshLevelColumn> TXshLevelColumnP;
102 
103 #endif
104