Computer Assited Medical Intervention Tool Kit  version 5.0
sdk/libraries/core/component/Component.h
Go to the documentation of this file.
1/*****************************************************************************
2 * $CAMITK_LICENCE_BEGIN$
3 *
4 * CamiTK - Computer Assisted Medical Intervention ToolKit
5 * (c) 2001-2021 Univ. Grenoble Alpes, CNRS, Grenoble INP, TIMC, 38000 Grenoble, France
6 *
7 * Visit http://camitk.imag.fr for more information
8 *
9 * This file is part of CamiTK.
10 *
11 * CamiTK is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * CamiTK is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22 *
23 * $CAMITK_LICENCE_END$
24 ****************************************************************************/
25
26#ifndef CAMITK_COMPONENT_H
27#define CAMITK_COMPONENT_H
28
29// -- Core stuff
30#include "InterfaceNode.h"
31#include "InterfaceGeometry.h"
32#include "InterfaceBitMap.h"
33#include "InterfaceProperty.h"
34#include "InterfaceFrame.h"
35#include "AbortException.h"
36
37// -- QT stuff
38#include <QPixmap>
39#include <QMenu>
40#include <QVector>
41
42// -- vtk stuff
43// disable warning generated by clang about the surrounded headers
44#include <CamiTKDisableWarnings>
45#include <vtkWindowLevelLookupTable.h>
46#include <vtkActor.h>
47#include <vtkAxesActor.h>
48#include <vtkImageActor.h>
49#include <CamiTKReEnableWarnings>
50
51#include <vtkImageData.h>
52#include <vtkPointSet.h>
53#include <vtkSmartPointer.h>
54#include <vtkAlgorithmOutput.h>
55#include <vtkActor2D.h>
56#include <vtkTransform.h>
57
58// -- vtk stuff Classes
59class vtkActor;
60class vtkTexture;
61class vtkPointSet;
62class vtkUnstructuredGridAlgorithm;
63class vtkDataSetToUnstructuredGridFilter;
64class vtkWindowLevelLookupTable;
65
66// -----------------------------------------------------------------------
67//
68// Delegation macros
69// (And your dream comes true)
70//
71// -----------------------------------------------------------------------
72
77#define invoke0(HANDLER,METHOD) \
78if (HANDLER) \
79 HANDLER->METHOD();
80
81#define invoke1(HANDLER,METHOD,PARAM) \
82if (HANDLER) \
83 HANDLER->METHOD(PARAM);
84
85#define invoke2(HANDLER,METHOD,PARAM1,PARAM2) \
86if (HANDLER) \
87 HANDLER->METHOD(PARAM1,PARAM2);
88
89#define invoke3(HANDLER,METHOD,PARAM1,PARAM2,PARAM3) \
90if (HANDLER) \
91 HANDLER->METHOD(PARAM1,PARAM2,PARAM3);
92
93#define invoke4(HANDLER,METHOD,PARAM1,PARAM2,PARAM3,PARAM4) \
94if (HANDLER) \
95 HANDLER->METHOD(PARAM1,PARAM2,PARAM3,PARAM4);
96
101#define invokeGet0(HANDLER,METHOD) \
102if (HANDLER) \
103 return HANDLER->METHOD();
104
105#define invokeGet1(HANDLER,METHOD,PARAM) \
106if (HANDLER) \
107 return HANDLER->METHOD(PARAM);
108
109#define invokeGet2(HANDLER,METHOD,PARAM1,PARAM2) \
110if (HANDLER) \
111 return HANDLER->METHOD(PARAM1,PARAM2);
112
113#define invokeGet3(HANDLER,METHOD,PARAM1,PARAM2,PARAM3) \
114if (HANDLER) \
115 return HANDLER->METHOD(PARAM1,PARAM2,PARAM3);
116
117#define invokeGet4(HANDLER,METHOD,PARAM1,PARAM2,PARAM3,PARAM4) \
118if (HANDLER) \
119 return HANDLER->METHOD(PARAM1,PARAM2,PARAM3,PARAM4);
120
124#define invokeChildren0(METHOD) \
125foreach (Component *child, childrenComponent) { \
126 child->METHOD(); \
127 }
128
129#define invokeChildren1(METHOD,PARAM) \
130foreach (Component *child, childrenComponent) { \
131 child->METHOD(PARAM); \
132 }
133
134#define invokeChildren2(METHOD,PARAM1,PARAM2) \
135foreach (Component *child, childrenComponent) { \
136 child->METHOD(PARAM1,PARAM2); \
137 }
138
139#define invokeChildren3(METHOD,PARAM1,PARAM2,PARAM3) \
140foreach (Component *child, childrenComponent) { \
141 child->METHOD(PARAM1,PARAM2,PARAM3); \
142 }
143
144#define invokeChildren4(METHOD,PARAM1,PARAM2,PARAM3,PARAM4) \
145foreach (Component *child, childrenComponent) { \
146 child->METHOD(PARAM1,PARAM2,PARAM3,PARAM4); \
147 }
148
154#define delegate0(HANDLER,METHOD) \
155virtual void METHOD() override { \
156 invoke0(HANDLER,METHOD) \
157 }
158
159#define delegate1(HANDLER,METHOD,PARAM_TYPE) \
160virtual void METHOD(PARAM_TYPE param) override { \
161 invoke1(HANDLER,METHOD,param) \
162 }
163
164#define delegate2(HANDLER,METHOD,PARAM_TYPE1,PARAM_TYPE2) \
165virtual void METHOD(PARAM_TYPE1 param1, PARAM_TYPE2 param2) override { \
166 invoke2(HANDLER,METHOD,param1,param2) \
167 }
168
169#define delegate3(HANDLER,METHOD,PARAM_TYPE1,PARAM_TYPE2,PARAM_TYPE3) \
170virtual void METHOD(PARAM_TYPE1 param1, PARAM_TYPE2 param2, PARAM_TYPE3 param3) override { \
171 invoke3(HANDLER,METHOD,param1,param2,param3) \
172 }
173
174#define delegate4(HANDLER,METHOD,PARAM_TYPE1,PARAM_TYPE2,PARAM_TYPE3, PARAM_TYPE4) \
175virtual void METHOD(PARAM_TYPE1 param1, PARAM_TYPE2 param2, PARAM_TYPE3 param3, PARAM_TYPE4 param4) override { \
176 invoke4(HANDLER,METHOD,param1,param2,param3,param4) \
177 }
178
185#define delegateGet0(HANDLER,METHOD,TYPE) \
186virtual TYPE METHOD() override { \
187 invokeGet0(HANDLER,METHOD) \
188 else \
189 return 0; \
190 }
191
192#define delegateGet1(HANDLER,METHOD,TYPE,PARAM_TYPE) \
193virtual TYPE METHOD(PARAM_TYPE param) override { \
194 invokeGet1(HANDLER,METHOD,param) \
195 else \
196 return 0; \
197 }
198
199#define delegateGet2(HANDLER,METHOD,TYPE,PARAM1_TYPE,PARAM2_TYPE) \
200virtual TYPE METHOD(PARAM1_TYPE param1, PARAM2_TYPE param2) override { \
201 invokeGet2(HANDLER,METHOD,param1,param2) \
202 else \
203 return 0; \
204 }
208#define delegateConstGet0(HANDLER,METHOD,TYPE) \
209virtual TYPE METHOD() const override { \
210 invokeGet0(HANDLER,METHOD) \
211 else \
212 return 0; \
213 }
214
215#define delegateConstGet1(HANDLER,METHOD,TYPE,PARAM_TYPE) \
216virtual TYPE METHOD(PARAM_TYPE param) const override { \
217 invokeGet1(HANDLER,METHOD,param) \
218 else \
219 return 0; \
220 }
221
226#define delegateAndInvokeChildren1(HANDLER,METHOD,PARAM_TYPE) \
227virtual void METHOD(PARAM_TYPE param) override { \
228 invoke1(HANDLER,METHOD,param) \
229 invokeChildren1(METHOD,param) \
230 }
231
232#define delegateAndInvokeChildren2(HANDLER,METHOD,PARAM_TYPE1,PARAM_TYPE2) \
233virtual void METHOD(PARAM_TYPE1 param1, PARAM_TYPE2 param2) override { \
234 invoke2(HANDLER,METHOD,param1,param2) \
235 invokeChildren2(METHOD,param1,param2) \
236 }
237
238#define delegateAndInvokeChildren1Array(HANDLER,METHOD,PARAM_TYPE1,PARAM_TYPE2,DIM) \
239virtual void METHOD(PARAM_TYPE1 param1, PARAM_TYPE2 param2[DIM]) override { \
240 invoke2(HANDLER,METHOD,param1,param2) \
241 invokeChildren2(METHOD,param1,param2) \
242 }
243
244#define delegateAndInvokeChildren3(HANDLER,METHOD,PARAM_TYPE1,PARAM_TYPE2,PARAM_TYPE3) \
245virtual void METHOD(PARAM_TYPE1 param1, PARAM_TYPE2 param2, PARAM_TYPE3 param3) override { \
246 invoke3(HANDLER,METHOD,param1,param2,param3) \
247 invokeChildren3(METHOD,param1,param2,param3) \
248 }
249
250#define delegateAndInvokeChildren4(HANDLER,METHOD,PARAM_TYPE1,PARAM_TYPE2,PARAM_TYPE3,PARAM_TYPE4) \
251virtual void METHOD(PARAM_TYPE1 param1, PARAM_TYPE2 param2, PARAM_TYPE3 param3,PARAM_TYPE4 param4) override { \
252 invoke4(HANDLER,METHOD,param1,param2,param3,param4) \
253 invokeChildren4(METHOD,param1,param2,param3,param4) \
254 }
255
256
257namespace camitk {
258// -- Core stuff classes
259class Geometry;
260class Slice;
261class Viewer;
262class Frame;
263
264
303 Q_OBJECT
304
305public:
314 NO_REPRESENTATION
315 };
316
321
328 Component(QString file, QString name, Representation rep = NO_REPRESENTATION);
329
339 Component(Component* parentComponent, const QString& name, Representation rep = NO_REPRESENTATION);
340
348 ~Component() override;
349
353 Representation getRepresentation() const;
354
356 bool isTopLevel() const;
357
359 Component* getParentComponent();
360
362 Component* getTopLevelComponent();
363
365 InterfaceFrame* getFrame();
366
368 virtual void setModified(bool modified = true);
369
371 virtual bool getModified() const;
372
374
382 CAMITK_API_DEPRECATED("Please use setVisibility(QString viewerName, bool) instead") virtual void setVisibility(Viewer*, bool);
383
385 CAMITK_API_DEPRECATED("Please use getVisibility(QString viewerName, bool) instead") virtual bool getVisibility(Viewer*) const;
387
389 virtual void setVisibility(QString, bool);
390
392 virtual bool getVisibility(QString) const;
393
396 virtual void refresh();
397
399
413 CAMITK_API_DEPRECATED("refreshInterfaceNode() is not required anymore. Everything should now be done transparently (if it does not work, use setNodeModified(true) to force a specific InterfaceNode refresh instead)") virtual void refreshInterfaceNode();
415
417 virtual bool isSelected() const;
418
423 virtual void setSelected(const bool b, const bool recursive = true);
424
426 const QString getFileName() const;
427
429 void setFileName(const QString&);
430
432 bool event(QEvent* e) override;
433
435 QMenu* getActionMenu();
437
444 QStringList getHierarchy() const override;
445
447 bool isInstanceOf(QString className) const override;
448
453 unsigned int getNumberOfPropertyWidget() override {
454 return 0;
455 }
456
461 QWidget* getPropertyWidgetAt(unsigned int) override {
462 return nullptr;
463 }
464
473 QObject* getPropertyObject() override {
474 return this;
475 }
476
483 void updateProperty(QString name, QVariant value) override;
484
492 inline void setIndexOfPropertyExplorerTab(unsigned int index) override final {
493 indexOfPropertyExplorerTab = index;
494 }
495
503 inline unsigned int getIndexOfPropertyExplorerTab() override {
504 return indexOfPropertyExplorerTab;
505 }
506
513 Q_INVOKABLE camitk::Property* getProperty(QString name) override;
514
523 bool addProperty(Property*) override;
525
531
534 void removeChild(InterfaceNode*) override;
535
538 void setParent(InterfaceNode*) override;
539
543 bool doubleClicked() override;
544
545 //-- not commented because Doxygen automatically use the inherited documentation (set INHERIT_DOCS flag to YES in the Doxyfile)
546 void addChild(InterfaceNode*) override;
547 void attachChild(InterfaceNode*) override;
548 void deleteChildren() override final;
549 QString getName() const override;
550 void setName(const QString&) override;
551 const ComponentList& getChildren() override;
552 InterfaceNode* getParent() override;
553 QPixmap getIcon() override;
554 void setNodeModified(bool) override final;
555 bool getNodeModified() const override;
556
560 bool inItalic() const override;
561
563 QMenu* getPopupMenu(QWidget* parent = nullptr) override {
564 return nullptr;
565 }
567
574 const QString getLabel() const override;
575
577 void setLabel(QString newName) override;
578
579 delegateGet0(myGeometry, getPointSet, vtkSmartPointer<vtkPointSet>)
580
581 delegate1(myGeometry, setPointSet, vtkSmartPointer<vtkPointSet>)
582
583 delegate1(myGeometry, setPointData, vtkSmartPointer<vtkDataArray>)
584
585 delegateConstGet0(myGeometry, getDataPort, vtkSmartPointer<vtkAlgorithmOutput>)
586
587 delegate1(myGeometry, setDataConnection, vtkSmartPointer<vtkAlgorithmOutput>)
588
589 delegateGet1(myGeometry, getActor, vtkSmartPointer<vtkActor>, const RenderingModes)
590
591 // TODO : uses an object myRepresentation (which is a Geometry or a Slice)
592 // to use a single delegate macro
593 vtkSmartPointer<vtkProp> getProp(const QString& param) override {
594 if (myGeometry) {
595 return myGeometry->getProp(param);
596 }
597 else if (mySlice) {
598 return mySlice->getProp(param);
599 }
600
601 return nullptr;
602 }
603
604 unsigned int getNumberOfProp() const override {
605 if (myGeometry) {
606 return myGeometry->getNumberOfProp();
607 }
608 else if (mySlice) {
609 return mySlice->getNumberOfProp();
610 }
611
612 return 0;
613 }
614
615 vtkSmartPointer<vtkProp> getProp(unsigned int index) override {
616 if (myGeometry) {
617 return myGeometry->getProp(index);
618 }
619 else if (mySlice) {
620 return mySlice->getProp(index);
621 }
622
623 return nullptr;
624 }
625
626 bool addProp(const QString& name, vtkSmartPointer<vtkProp> prop) override {
627 if (myGeometry) {
628 return myGeometry->addProp(name, prop);
629 }
630 else if (mySlice) {
631 return mySlice->addProp(name, prop);
632 }
633
634 return false;
635 }
636
637
638 bool removeProp(const QString& name) override {
639 if (myGeometry) {
640 return myGeometry->removeProp(name);
641 }
642 else if (mySlice) {
643 return mySlice->removeProp(name);
644 }
645
646 return false;
647 }
648 // END TODO
649
650
654 void pointPicked(vtkIdType, bool) override {}
655
659 void cellPicked(vtkIdType, bool) override {}
660
662 void getBounds(double* bounds) override;
663
667 double getBoundingRadius() override;
668
669 delegate4(myGeometry, setPointPosition, const unsigned int, const double, const double, const double)
670
671 delegateAndInvokeChildren1(myGeometry, setRenderingModes, const RenderingModes)
672
674 const InterfaceGeometry::RenderingModes getRenderingModes() const override;
675
676 delegateAndInvokeChildren1(myGeometry, setEnhancedModes, const EnhancedModes)
677
678 // cannot use macro here as the return type is a QFlag
679 virtual const EnhancedModes getEnhancedModes() const override {
680 if (myGeometry) {
681 return myGeometry->getEnhancedModes();
682 }
683 else {
684 return EnhancedModes();
685 }
686 }
687
688 delegateAndInvokeChildren1Array(myGeometry, setActorColor, const RenderingModes, double, 4)
689
690 delegateAndInvokeChildren4(myGeometry, setActorColor, const RenderingModes, const double, const double, const double)
691
693 void getActorColor(const RenderingModes, double [4]) override;
694
695 delegateAndInvokeChildren3(myGeometry, setColor, const double, const double, const double)
696
697 delegateAndInvokeChildren4(myGeometry, setColor, const double, const double, const double, const double)
698
699 delegateAndInvokeChildren2(myGeometry, setActorOpacity, const RenderingModes, const double)
700
701 delegateConstGet1(myGeometry, getActorOpacity, double, const RenderingModes)
702
703 delegateAndInvokeChildren1(myGeometry, setOpacity, const double)
704
705 delegate2(myGeometry, setMapperScalarRange, double, double)
706
707 delegate1(myGeometry, setTexture, vtkSmartPointer<vtkTexture>)
708
709 void setGlyphType(const GlyphTypes type, const double size = 0.0) override;
710
711 delegate1(myGeometry, setLinesAsTubes, bool)
712
713 delegate1(myGeometry, setMeshWorldTransform, vtkSmartPointer<vtkTransform>)
714
716
722 delegateConstGet0(mySlice, getImageData, vtkSmartPointer<vtkImageData>)
723
724 delegate1(mySlice, setOriginalVolume, vtkSmartPointer<vtkImageData>)
725
726 delegateConstGet0(mySlice, get2DImageActor, vtkSmartPointer<vtkImageActor>)
727
728 delegateConstGet0(mySlice, get3DImageActor, vtkSmartPointer<vtkImageActor>)
729
730 delegateConstGet0(mySlice, getPickPlaneActor, vtkSmartPointer<vtkActor>)
731
732 delegateGet0(mySlice, getPixelActor, vtkSmartPointer<vtkActor>)
733
734 delegate3(mySlice, pixelPicked, double, double, double)
735
736 delegate0(mySlice, updatePickPlane)
737
738 delegate1(mySlice, setSlice, int)
739
740 delegate3(mySlice, setSlice, double, double, double)
741
742 delegateConstGet0(mySlice, getNumberOfColors, int)
743
744 delegate3(mySlice, setPixelRealPosition, double, double, double)
745
746 delegate1(mySlice, setImageWorldTransform, vtkSmartPointer<vtkTransform>)
747
748 delegate1(mySlice, setArbitraryTransform, vtkSmartPointer<vtkTransform>)
749
751 int getNumberOfSlices() const override;
752
754 int getSlice() const override;
756
757
763 const QString& getFrameName() const override;
764
765 delegate1(myFrame, setFrameName, QString)
766
767 InterfaceFrame* getParentFrame() const override;
768
769 void setParentFrame(InterfaceFrame* frame, bool keepTransform = true) override;
770
771 const QVector<InterfaceFrame*>& getChildrenFrame() const override;
772
773 const vtkSmartPointer<vtkTransform> getTransformFromWorld() const override;
774
775 const vtkSmartPointer<vtkTransform> getTransform() const override;
776
777 const vtkSmartPointer<vtkTransform> getTransformFromFrame(InterfaceFrame* frame) const override;
778
779 delegate1(myFrame, setTransform, vtkSmartPointer<vtkTransform>)
780
781 delegate0(myFrame, resetTransform)
782
783 delegate3(myFrame, translate, double, double, double)
784
785 delegate3(myFrame, rotate, double, double, double)
786
787 delegate3(myFrame, rotateVTK, double, double, double)
788
789 delegate3(myFrame, setTransformTranslation, double, double, double)
790
791 delegate3(myFrame, setTransformTranslationVTK, double, double, double)
792
793 delegate3(myFrame, setTransformRotation, double, double, double)
794
795 delegate3(myFrame, setTransformRotationVTK, double, double, double)
796
797 vtkSmartPointer<vtkAxesActor> getFrameAxisActor() override;
798
800
807 /*CAMITK_API_DEPRECATED("Please use Component::setFrameVisibility(QString viewerName, bool) instead") */virtual void setFrameVisibility(Viewer*, bool) override;
808
809 /*CAMITK_API_DEPRECATED("Please use Component::getFrameVisibility(QString viewerName, bool) instead") */virtual bool getFrameVisibility(Viewer*) const override;
811
812 delegate2(myFrame, setFrameVisibility, QString, bool)
813
814 bool getFrameVisibility(QString) const override;
815
816 delegate1(myFrame, addFrameChild, InterfaceFrame*)
817
818 delegate1(myFrame, removeFrameChild, InterfaceFrame*)
820
821
822protected:
824 InterfaceGeometry* myGeometry;
825
828
830 InterfaceNode* myParentNode;
831
834
836 ComponentList childrenComponent;
837
839 bool isSelectedFlag;
840
842 bool modifiedFlag;
843
845 QString myFileName;
846
848 unsigned int indexOfPropertyExplorerTab;
849
850
851private:
855
857 void init();
858
860 Representation myService;
861
863 QString myName;
864
869 virtual void initRepresentation() = 0;
870
872 QMap<QString, bool> myViewers;
873
875 QMenu* actionsMenu;
876
878 QMenu* visibilityMenu;
879
881 QMap<QString, Property*> propertyMap;
882
884 bool interfaceNodeModifiedFlag;
885
887
888};
889
890
891// -------------------- isSelected --------------------
892inline bool Component::isSelected() const {
893 return isSelectedFlag;
894}
895
896// -------------------- doubleClicked --------------------
898 return false;
899}
900
901// -------------------- getChildren --------------------
903 return childrenComponent;
904}
905
906// -------------------- getName --------------------
907inline QString Component::getName() const {
908 return myName;
909}
910
911// -------------------- getParent --------------------
913 return ((Component*) myParentNode);
914}
915
916// -------------------- getFrame --------------------
918 return myFrame;
919}
920
921// -------------------- getPixmap ------------------
922inline QPixmap Component::getIcon() {
923 return QPixmap(0, 0); // this is a NULL QPixmap in the Qt sense. QPixmap::isNull will then return true;
924}
925
926// -------------------- inItalic --------------------
927inline bool Component::inItalic() const {
928 return false;
929}
930
931// -------------------- setName --------------------
932inline void Component::setName(const QString& n) {
933 myName = n;
934
935 if (myGeometry) {
936 myGeometry->setLabel(n);
937 }
938
939 setNodeModified(true);
940}
941
942// -------------------- setModified --------------------
943inline void Component::setModified(bool modification) {
944 modifiedFlag = modification;
945}
946
947// -------------------- getModified --------------------
948inline bool Component::getModified() const {
949 return modifiedFlag;
950}
951
952// -------------------- getModified --------------------
953inline const QString Component::getLabel() const {
954 return getName();
955}
956
957// -------------------- getModified --------------------
958inline void Component::setLabel(QString newName) {
959 setName(newName);
960}
961
962// -------------------- setNodeModified --------------------
963inline void Component::setNodeModified(bool nodeModified) {
964 interfaceNodeModifiedFlag = nodeModified;
965}
966
967// -------------------- getNodeModified --------------------
968inline bool Component::getNodeModified() const {
969 return interfaceNodeModifiedFlag;
970}
971
972}
973
974#endif
975
976
#define CAMITK_API_DEPRECATED(X)
Definition: CamiTKAPI.h:94
#define CAMITK_API
Definition: CamiTKAPI.h:49
if(${CMAKE_VERSION} VERSION_GREATER "3.3" OR ${CMAKE_VERSION} VERSION_EQUAL "3.3") option(CAMITK_INCLUDE_WHAT_YOU_USE "Enable the header analysis on you code
#define a
A Component represents something that could be included in the explorer view, the interactive 3D view...
Definition: sdk/libraries/core/component/Component.h:302
void setIndexOfPropertyExplorerTab(unsigned int index) override final
Set the index of the tab in the ProperlyExplorer to select for display.
Definition: sdk/libraries/core/component/Component.h:492
delegateGet0(myGeometry, getPointSet, vtkSmartPointer< vtkPointSet >) delegate1(myGeometry
Representation
The different representation that can be implemented to represent this Component in the InteractiveVi...
Definition: sdk/libraries/core/component/Component.h:311
@ GEOMETRY
this Component can be displayed as a GEOMETRY
Definition: sdk/libraries/core/component/Component.h:312
@ SLICE
this Component can be displayed as a SLICE
Definition: sdk/libraries/core/component/Component.h:313
unsigned int getNumberOfProp() const override
return the number of additional prop
Definition: sdk/libraries/core/component/Component.h:604
unsigned int getIndexOfPropertyExplorerTab() override
Get the index of the tab in the ProperlyExplorer to select for display.
Definition: sdk/libraries/core/component/Component.h:503
InterfaceNode * getParent() override
get the parent Component
Definition: sdk/libraries/core/component/Component.h:912
delegate4(myGeometry, setPointPosition, const unsigned int, const double, const double, const double) delegateAndInvokeChildren1(myGeometry
InterfaceFrame * getFrame()
get the associated frame
Definition: sdk/libraries/core/component/Component.h:917
QObject * getPropertyObject() override
Get the property object that could be understood by PropertyEditor.
Definition: sdk/libraries/core/component/Component.h:473
bool removeProp(const QString &name) override
remove a given additional prop.
Definition: sdk/libraries/core/component/Component.h:638
bool inItalic() const override
A component name is not displayed in italic by default.
Definition: sdk/libraries/core/component/Component.h:927
void setName(const QString &) override
set the name to be displayed
Definition: sdk/libraries/core/component/Component.h:932
virtual void setModified(bool modified=true)
set the modified flag
Definition: sdk/libraries/core/component/Component.h:943
QString getName() const override
get the name to be displayed
Definition: sdk/libraries/core/component/Component.h:907
void pointPicked(vtkIdType, bool) override
an inherited class can redefine this method something specific.
Definition: sdk/libraries/core/component/Component.h:654
bool addProp(const QString &name, vtkSmartPointer< vtkProp > prop) override
insert an additional prop, defining it by its name (default visibility = false)
Definition: sdk/libraries/core/component/Component.h:626
void setNodeModified(bool) override final
Set up the node modification flag.
Definition: sdk/libraries/core/component/Component.h:963
QPixmap getIcon() override
Get the pixmap that will be displayed for this node.
Definition: sdk/libraries/core/component/Component.h:922
void cellPicked(vtkIdType, bool) override
an inherited class can redefine this method something specific.
Definition: sdk/libraries/core/component/Component.h:659
QWidget * getPropertyWidgetAt(unsigned int) override
Get the ith alternative property widget.
Definition: sdk/libraries/core/component/Component.h:461
virtual bool getModified() const
set the modified flag
Definition: sdk/libraries/core/component/Component.h:948
delegateAndInvokeChildren1Array(myGeometry, setActorColor, const RenderingModes, double, 4) delegateAndInvokeChildren4(myGeometry
const QString getLabel() const override
Definition: sdk/libraries/core/component/Component.h:953
bool getNodeModified() const override
Get the current modification flag.
Definition: sdk/libraries/core/component/Component.h:968
bool doubleClicked() override
This method is called each time the InterfaceNode is double clicked by the user.
Definition: sdk/libraries/core/component/Component.h:897
void setLabel(QString newName) override
set the string used to display the label, do the same as setName
Definition: sdk/libraries/core/component/Component.h:958
vtkSmartPointer< vtkProp > getProp(unsigned int index) override
return an additional prop by its index
Definition: sdk/libraries/core/component/Component.h:615
const ComponentList & getChildren() override
get the list of the InterfaceNode children (sub items in the hierarchy)
Definition: sdk/libraries/core/component/Component.h:902
This class describes what are the methods to implement for a BitMap.
Definition: InterfaceBitMap.h:68
This class describes what are the methods to implement in order to manage a Component position in spa...
Definition: InterfaceFrame.h:64
This class describes what are the methods to implement for a Geometry (rendering parameters,...
Definition: InterfaceGeometry.h:61
This class describe what are the methods to implement for a hierarchical tree node.
Definition: InterfaceNode.h:58
This class describe what are the methods to implement in order to manage dynamic properties.
Definition: InterfaceProperty.h:43
This class describes a property that can be used in components and actions or any class that needs to...
Definition: Property.h:280
Viewer is an abstract class that is the base class for all viewers.
Definition: Viewer.h:180
Definition: Action.cpp:35
vtkScalarBarRepresentation * rep
Definition: RendererWidget.cpp:528
QList< Component * > ComponentList
A list of Component.
Definition: CamiTKAPI.h:127
void refresh()
refresh the display
#define delegate3(HANDLER, METHOD, PARAM_TYPE1, PARAM_TYPE2, PARAM_TYPE3)
Definition: sdk/libraries/core/component/Component.h:169
#define delegate0(HANDLER, METHOD)
delegate macros: completely delegates METHOD to HANDLER, eventually using parameters of given PARAM_T...
Definition: sdk/libraries/core/component/Component.h:154
#define delegateAndInvokeChildren1(HANDLER, METHOD, PARAM_TYPE)
delegateAndInvokeChildren macros: Same as delegate but also calls METHOD, eventually with PARAM_TYPE,...
Definition: sdk/libraries/core/component/Component.h:226
#define delegateConstGet1(HANDLER, METHOD, TYPE, PARAM_TYPE)
Definition: sdk/libraries/core/component/Component.h:215
#define delegateAndInvokeChildren2(HANDLER, METHOD, PARAM_TYPE1, PARAM_TYPE2)
Definition: sdk/libraries/core/component/Component.h:232
#define delegate2(HANDLER, METHOD, PARAM_TYPE1, PARAM_TYPE2)
Definition: sdk/libraries/core/component/Component.h:164
#define delegate1(HANDLER, METHOD, PARAM_TYPE)
Definition: sdk/libraries/core/component/Component.h:159
#define delegateAndInvokeChildren4(HANDLER, METHOD, PARAM_TYPE1, PARAM_TYPE2, PARAM_TYPE3, PARAM_TYPE4)
Definition: sdk/libraries/core/component/Component.h:250
#define delegateGet0(HANDLER, METHOD, TYPE)
delegateGet macros: Same as delegate macro but for an accessor non-const METHOD, returns a value of t...
Definition: sdk/libraries/core/component/Component.h:185
#define delegateAndInvokeChildren3(HANDLER, METHOD, PARAM_TYPE1, PARAM_TYPE2, PARAM_TYPE3)
Definition: sdk/libraries/core/component/Component.h:244
#define delegateGet1(HANDLER, METHOD, TYPE, PARAM_TYPE)
Definition: sdk/libraries/core/component/Component.h:192
#define delegateConstGet0(HANDLER, METHOD, TYPE)
delegateConstGet macros: Same as delegateGet but for const METHOD
Definition: sdk/libraries/core/component/Component.h:208