1 #pragma once
2 
3 #ifndef TOBJECTHANDLE_H
4 #define TOBJECTHANDLE_H
5 
6 #include <QObject>
7 
8 #include "toonz/tstageobjectid.h"
9 #include "tcommon.h"
10 
11 #undef DVAPI
12 #undef DVVAR
13 #ifdef TOONZLIB_EXPORTS
14 #define DVAPI DV_EXPORT_API
15 #define DVVAR DV_EXPORT_VAR
16 #else
17 #define DVAPI DV_IMPORT_API
18 #define DVVAR DV_IMPORT_VAR
19 #endif
20 
21 class TVectorImage;
22 class TStageObjectSpline;
23 
24 //=============================================================================
25 // TObjectHandle
26 //-----------------------------------------------------------------------------
27 /*!
28   Mantiene un riferimento ad un particolare oggetto (da editare)
29   L'oggetto e' una objectId : puo' essere il tavolo, la camera, una colonna o
30   una
31   pegbar propriamente detta.
32   Puo' anche essere la spline associata all'oggetto
33 */
34 
35 class DVAPI TObjectHandle final : public QObject {
36   Q_OBJECT
37 
38   TStageObjectId m_objectId;
39   bool m_isSpline;
40   TVectorImage *m_splineImage;
41   TStageObjectSpline *m_currentSpline;
42 
43 public:
44   TObjectHandle();
45   ~TObjectHandle();
46 
47   TStageObjectId getObjectId();
48   void setObjectId(TStageObjectId objectId);
49 
notifyObjectIdChanged(bool isDragging)50   void notifyObjectIdChanged(bool isDragging) {
51     emit objectChanged(isDragging);
52   }
notifyObjectIdSwitched()53   void notifyObjectIdSwitched() { emit objectSwitched(); }
54 
isSpline()55   bool isSpline() const { return m_isSpline; }
56   void setIsSpline(bool isSpline);
57 
getSplineImage()58   TVectorImage *getSplineImage() const { return m_splineImage; }
59   void setSplineObject(TStageObjectSpline *splineObject);
60 
61 signals:
62   void objectSwitched();
63   void objectChanged(bool isDragging);
64   void splineChanged();
65 
66 public slots:
67   void commitSplineChanges();
68 };
69 
70 #endif  // TOBJECTHANDLE_H
71