Computer Assisted Medical Intervention Tool Kit  version 5.1
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-2023 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 delegate1(myGeometry, setColorMode, int)
592
593 // TODO : uses an object myRepresentation (which is a Geometry or a Slice)
594 // to use a single delegate macro
595 vtkSmartPointer<vtkProp> getProp(const QString& param) override {
596 if (myGeometry) {
597 return myGeometry->getProp(param);
598 }
599 else if (mySlice) {
600 return mySlice->getProp(param);
601 }
602
603 return nullptr;
604 }
605
606 unsigned int getNumberOfProp() const override {
607 if (myGeometry) {
608 return myGeometry->getNumberOfProp();
609 }
610 else if (mySlice) {
611 return mySlice->getNumberOfProp();
612 }
613
614 return 0;
615 }
616
617 vtkSmartPointer<vtkProp> getProp(unsigned int index) override {
618 if (myGeometry) {
619 return myGeometry->getProp(index);
620 }
621 else if (mySlice) {
622 return mySlice->getProp(index);
623 }
624
625 return nullptr;
626 }
627
628 bool addProp(const QString& name, vtkSmartPointer<vtkProp> prop) override {
629 if (myGeometry) {
630 return myGeometry->addProp(name, prop);
631 }
632 else if (mySlice) {
633 return mySlice->addProp(name, prop);
634 }
635
636 return false;
637 }
638
639
640 bool removeProp(const QString& name) override {
641 if (myGeometry) {
642 return myGeometry->removeProp(name);
643 }
644 else if (mySlice) {
645 return mySlice->removeProp(name);
646 }
647
648 return false;
649 }
650 // END TODO
651
652
656 void pointPicked(vtkIdType, bool) override {}
657
661 void cellPicked(vtkIdType, bool) override {}
662
664 void getBounds(double* bounds) override;
665
669 double getBoundingRadius() override;
670
671 delegate4(myGeometry, setPointPosition, const unsigned int, const double, const double, const double)
672
673 delegateAndInvokeChildren1(myGeometry, setRenderingModes, const RenderingModes)
674
676 const InterfaceGeometry::RenderingModes getRenderingModes() const override;
677
678 delegateAndInvokeChildren1(myGeometry, setEnhancedModes, const EnhancedModes)
679
680 // cannot use macro here as the return type is a QFlag
681 virtual const EnhancedModes getEnhancedModes() const override {
682 if (myGeometry) {
683 return myGeometry->getEnhancedModes();
684 }
685 else {
686 return EnhancedModes();
687 }
688 }
689
690 delegateAndInvokeChildren1Array(myGeometry, setActorColor, const RenderingModes, double, 4)
691
692 delegateAndInvokeChildren4(myGeometry, setActorColor, const RenderingModes, const double, const double, const double)
693
695 void getActorColor(const RenderingModes, double [4]) override;
696
697 delegateAndInvokeChildren3(myGeometry, setColor, const double, const double, const double)
698
699 delegateAndInvokeChildren4(myGeometry, setColor, const double, const double, const double, const double)
700
701 delegateAndInvokeChildren2(myGeometry, setActorOpacity, const RenderingModes, const double)
702
703 delegateConstGet1(myGeometry, getActorOpacity, double, const RenderingModes)
704
705 delegateAndInvokeChildren1(myGeometry, setOpacity, const double)
706
707 delegate2(myGeometry, setMapperScalarRange, double, double)
708
709 delegate1(myGeometry, setTexture, vtkSmartPointer<vtkTexture>)
710
711 void setGlyphType(const GlyphTypes type, const double size = 0.0) override;
712
713 virtual void setLinesAsTubes(bool isTubes = true, bool radiusFromLength = true, double radiusFactor = 1.0 / 40.0, int numberOfSides = 5) override {
714 if (myGeometry) {
715 myGeometry->setLinesAsTubes(isTubes, radiusFromLength, radiusFactor, numberOfSides);
716 }
717 }
718
719 delegate1(myGeometry, setMeshWorldTransform, vtkSmartPointer<vtkTransform>)
720
721
722
723
728 delegateConstGet0(mySlice, getImageData, vtkSmartPointer<vtkImageData>)
729
730 delegate1(mySlice, setOriginalVolume, vtkSmartPointer<vtkImageData>)
731
732 delegateConstGet0(mySlice, get2DImageActor, vtkSmartPointer<vtkImageActor>)
733
734 delegateConstGet0(mySlice, get3DImageActor, vtkSmartPointer<vtkImageActor>)
735
736 delegateConstGet0(mySlice, getPickPlaneActor, vtkSmartPointer<vtkActor>)
737
738 delegateGet0(mySlice, getPixelActor, vtkSmartPointer<vtkActor>)
739
740 delegate3(mySlice, pixelPicked, double, double, double)
741
742 delegate0(mySlice, updatePickPlane)
743
744 delegate1(mySlice, setSlice, int)
745
746 delegate3(mySlice, setSlice, double, double, double)
747
748 delegateConstGet0(mySlice, getNumberOfColors, int)
749
750 delegate3(mySlice, setPixelRealPosition, double, double, double)
751
752 delegate1(mySlice, setImageWorldTransform, vtkSmartPointer<vtkTransform>)
753
754 delegate1(mySlice, setArbitraryTransform, vtkSmartPointer<vtkTransform>)
755
757 int getNumberOfSlices() const override;
758
760 int getSlice() const override;
762
763
769 const QString& getFrameName() const override;
770
771 delegate1(myFrame, setFrameName, QString)
772
773 InterfaceFrame* getParentFrame() const override;
774
775 void setParentFrame(InterfaceFrame* frame, bool keepTransform = true) override;
776
777 const QVector<InterfaceFrame*>& getChildrenFrame() const override;
778
779 const vtkSmartPointer<vtkTransform> getTransformFromWorld() const override;
780
781 const vtkSmartPointer<vtkTransform> getTransform() const override;
782
783 const vtkSmartPointer<vtkTransform> getTransformFromFrame(InterfaceFrame* frame) const override;
784
785 delegate1(myFrame, setTransform, vtkSmartPointer<vtkTransform>)
786
787 delegate0(myFrame, resetTransform)
788
789 delegate3(myFrame, translate, double, double, double)
790
791 delegate3(myFrame, rotate, double, double, double)
792
793 delegate3(myFrame, rotateVTK, double, double, double)
794
795 delegate3(myFrame, setTransformTranslation, double, double, double)
796
797 delegate3(myFrame, setTransformTranslationVTK, double, double, double)
798
799 delegate3(myFrame, setTransformRotation, double, double, double)
800
801 delegate3(myFrame, setTransformRotationVTK, double, double, double)
802
803 vtkSmartPointer<vtkAxesActor> getFrameAxisActor() override;
804
806
813 /*CAMITK_API_DEPRECATED("Please use Component::setFrameVisibility(QString viewerName, bool) instead") */virtual void setFrameVisibility(Viewer*, bool) override;
814
815 /*CAMITK_API_DEPRECATED("Please use Component::getFrameVisibility(QString viewerName, bool) instead") */virtual bool getFrameVisibility(Viewer*) const override;
817
818 delegate2(myFrame, setFrameVisibility, QString, bool)
819
820 bool getFrameVisibility(QString) const override;
821
822 delegate1(myFrame, addFrameChild, InterfaceFrame*)
823
824 delegate1(myFrame, removeFrameChild, InterfaceFrame*)
826
827
828protected:
830 InterfaceGeometry* myGeometry;
831
834
836 InterfaceNode* myParentNode;
837
840
842 ComponentList childrenComponent;
843
845 bool isSelectedFlag;
846
848 bool modifiedFlag;
849
851 QString myFileName;
852
854 unsigned int indexOfPropertyExplorerTab;
855
856
857private:
861
863 void init();
864
866 Representation myService;
867
869 QString myName;
870
875 virtual void initRepresentation() = 0;
876
878 QMap<QString, bool> myViewers;
879
881 QMenu* actionsMenu;
882
884 QMenu* visibilityMenu;
885
887 QMap<QString, Property*> propertyMap;
888
890 bool interfaceNodeModifiedFlag;
891
893
894};
895
896
897// -------------------- isSelected --------------------
898inline bool Component::isSelected() const {
899 return isSelectedFlag;
900}
901
902// -------------------- doubleClicked --------------------
904 return false;
905}
906
907// -------------------- getChildren --------------------
909 return childrenComponent;
910}
911
912// -------------------- getName --------------------
913inline QString Component::getName() const {
914 return myName;
915}
916
917// -------------------- getParent --------------------
919 return ((Component*) myParentNode);
920}
921
922// -------------------- getFrame --------------------
924 return myFrame;
925}
926
927// -------------------- getPixmap ------------------
928inline QPixmap Component::getIcon() {
929 return QPixmap(0, 0); // this is a NULL QPixmap in the Qt sense. QPixmap::isNull will then return true;
930}
931
932// -------------------- inItalic --------------------
933inline bool Component::inItalic() const {
934 return false;
935}
936
937// -------------------- setName --------------------
938inline void Component::setName(const QString& n) {
939 myName = n;
940
941 if (myGeometry) {
942 myGeometry->setLabel(n);
943 }
944
945 setNodeModified(true);
946}
947
948// -------------------- setModified --------------------
949inline void Component::setModified(bool modification) {
950 modifiedFlag = modification;
951}
952
953// -------------------- getModified --------------------
954inline bool Component::getModified() const {
955 return modifiedFlag;
956}
957
958// -------------------- getModified --------------------
959inline const QString Component::getLabel() const {
960 return getName();
961}
962
963// -------------------- getModified --------------------
964inline void Component::setLabel(QString newName) {
965 setName(newName);
966}
967
968// -------------------- setNodeModified --------------------
969inline void Component::setNodeModified(bool nodeModified) {
970 interfaceNodeModifiedFlag = nodeModified;
971}
972
973// -------------------- getNodeModified --------------------
974inline bool Component::getNodeModified() const {
975 return interfaceNodeModifiedFlag;
976}
977
978}
979
980#endif
981
982
#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:606
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:918
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:923
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:640
bool inItalic() const override
A component name is not displayed in italic by default.
Definition: sdk/libraries/core/component/Component.h:933
void setName(const QString &) override
set the name to be displayed
Definition: sdk/libraries/core/component/Component.h:938
virtual void setModified(bool modified=true)
set the modified flag
Definition: sdk/libraries/core/component/Component.h:949
QString getName() const override
get the name to be displayed
Definition: sdk/libraries/core/component/Component.h:913
void pointPicked(vtkIdType, bool) override
an inherited class can redefine this method something specific.
Definition: sdk/libraries/core/component/Component.h:656
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:628
void setNodeModified(bool) override final
Set up the node modification flag.
Definition: sdk/libraries/core/component/Component.h:969
QPixmap getIcon() override
Get the pixmap that will be displayed for this node.
Definition: sdk/libraries/core/component/Component.h:928
void cellPicked(vtkIdType, bool) override
an inherited class can redefine this method something specific.
Definition: sdk/libraries/core/component/Component.h:661
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:954
delegateAndInvokeChildren1Array(myGeometry, setActorColor, const RenderingModes, double, 4) delegateAndInvokeChildren4(myGeometry
const QString getLabel() const override
Definition: sdk/libraries/core/component/Component.h:959
bool getNodeModified() const override
Get the current modification flag.
Definition: sdk/libraries/core/component/Component.h:974
bool doubleClicked() override
This method is called each time the InterfaceNode is double clicked by the user.
Definition: sdk/libraries/core/component/Component.h:903
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:964
vtkSmartPointer< vtkProp > getProp(unsigned int index) override
return an additional prop by its index
Definition: sdk/libraries/core/component/Component.h:617
const ComponentList & getChildren() override
get the list of the InterfaceNode children (sub items in the hierarchy)
Definition: sdk/libraries/core/component/Component.h:908
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:554
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