/*****************************************************************//** * @file FITKLegendScaleActor.h * @brief Scale actor with a single legend. * * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-05-28 *********************************************************************/ #ifndef FITKLegendScaleActor_h #define FITKLegendScaleActor_h #include "vtkCoordinate.h" // For vtkViewportCoordinateMacro #include "vtkProp.h" #include "vtkRenderingAnnotationModule.h" // For export macro #include "FITKRenderWindowVTKAPI.h" class vtkAxisActor2D; class vtkTextProperty; class vtkPolyData; class vtkPolyDataMapper2D; class vtkActor2D; class vtkTextMapper; class vtkPoints; class vtkCoordinate; class FITKRenderWindowVTKAPI FITKLegendScaleActor : public vtkProp { public: /** * Instantiate the class. */ static FITKLegendScaleActor* New(); //@{ /** * Standard methods for the class. */ vtkTypeMacro(FITKLegendScaleActor, vtkProp); void PrintSelf(ostream& os, vtkIndent indent) override; //@} //@{ /** * These are methods to retrieve the vtkAxisActors used to represent * the four axes that form this representation. Users may retrieve and * then modify these axes to control their appearance. */ vtkGetObjectMacro(BottomAxis, vtkAxisActor2D); //@} //@{ /** * Standard methods supporting the rendering process. */ virtual void BuildRepresentation(vtkViewport* viewport); void GetActors2D(vtkPropCollection*) override; void ReleaseGraphicsResources(vtkWindow*) override; int RenderOverlay(vtkViewport*) override; int RenderOpaqueGeometry(vtkViewport*) override; //@} protected: FITKLegendScaleActor(); ~FITKLegendScaleActor() override; // The four axes around the borders of the renderer vtkAxisActor2D* BottomAxis; // Control the display of the axes vtkTypeBool BottomAxisVisibility; // Support for the legend. vtkPolyData* Legend; vtkPoints* LegendPoints; vtkPolyDataMapper2D* LegendMapper; vtkActor2D* LegendActor; vtkTextMapper* LabelMappers[5]; vtkActor2D* LabelActors[5]; vtkTextProperty* LegendLabelProperty; vtkCoordinate* Coordinate; vtkTimeStamp BuildTime; private: FITKLegendScaleActor(const FITKLegendScaleActor&) = delete; void operator=(const FITKLegendScaleActor&) = delete; }; #endif