|
|
|
|
/*****************************************************************//**
|
|
|
|
|
* @file FITKPolyRenderStrategy.h
|
|
|
|
|
* @brief Polydata render strategy.
|
|
|
|
|
*
|
|
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
|
|
* @date 2024-04-11
|
|
|
|
|
*********************************************************************/
|
|
|
|
|
|
|
|
|
|
#ifndef FITKPOLYRENDERSTRATEGY_H
|
|
|
|
|
#define FITKPOLYRENDERSTRATEGY_H
|
|
|
|
|
|
|
|
|
|
#include "vtkObject.h"
|
|
|
|
|
|
|
|
|
|
#include "FITKVTKAlgorithmAPI.h"
|
|
|
|
|
|
|
|
|
|
class vtkActor2D;
|
|
|
|
|
|
|
|
|
|
class vtkWindow;
|
|
|
|
|
class vtkRenderer;
|
|
|
|
|
class vtkPolyDataMapper2D;
|
|
|
|
|
|
|
|
|
|
class FITKPolygonSource;
|
|
|
|
|
|
|
|
|
|
enum SourceType
|
|
|
|
|
{
|
|
|
|
|
UserDefined = 0,
|
|
|
|
|
Round,
|
|
|
|
|
X_Shape,
|
|
|
|
|
Triangle,
|
|
|
|
|
Rect
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class FITKVTKALGORITHMAPI FITKPolyRenderStrategy : public vtkObject
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
|
vtkTypeMacro(FITKPolyRenderStrategy, vtkObject);
|
|
|
|
|
static FITKPolyRenderStrategy* New();
|
|
|
|
|
|
|
|
|
|
//@{
|
|
|
|
|
/**
|
|
|
|
|
* Set the renderer associated with this strategy.
|
|
|
|
|
*/
|
|
|
|
|
virtual void SetRenderer(vtkRenderer* ren);
|
|
|
|
|
vtkGetObjectMacro(Renderer, vtkRenderer);
|
|
|
|
|
//@}
|
|
|
|
|
|
|
|
|
|
// Added by ChengHaotian
|
|
|
|
|
//@{
|
|
|
|
|
/**
|
|
|
|
|
* Set the input source data type.
|
|
|
|
|
* 1: Round
|
|
|
|
|
* 2: X shape
|
|
|
|
|
* 3: Triangle
|
|
|
|
|
* 4: Rect
|
|
|
|
|
*/
|
|
|
|
|
void SetSourceType(SourceType type, bool drawPolygon = false);
|
|
|
|
|
/**
|
|
|
|
|
* 0: UserDefined( Unused )
|
|
|
|
|
*/
|
|
|
|
|
SourceType GetSourceType();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Set the polygon color.
|
|
|
|
|
*/
|
|
|
|
|
void SetColor(double rf, double gf, double bf);
|
|
|
|
|
void SetColor(double* rgbf);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The size of the point's mark need to be drawn.
|
|
|
|
|
*/
|
|
|
|
|
void SetPixelSize(int size);
|
|
|
|
|
vtkGetMacro(PixelSize, int);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Render the poly data in the given position.
|
|
|
|
|
*/
|
|
|
|
|
void RenderPoly(int x[2]);
|
|
|
|
|
//@}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Release any graphics resources that are being consumed by this strategy.
|
|
|
|
|
* The parameter window could be used to determine which graphic
|
|
|
|
|
* resources to release.
|
|
|
|
|
*/
|
|
|
|
|
virtual void ReleaseGraphicsResources(vtkWindow* window);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
FITKPolyRenderStrategy();
|
|
|
|
|
~FITKPolyRenderStrategy() override;
|
|
|
|
|
|
|
|
|
|
vtkRenderer* Renderer;
|
|
|
|
|
|
|
|
|
|
vtkPolyDataMapper2D* Mapper;
|
|
|
|
|
vtkActor2D* Actor;
|
|
|
|
|
|
|
|
|
|
bool DrawPolygon = false;
|
|
|
|
|
int PixelSize = 20;
|
|
|
|
|
SourceType SourceTypeValue = SourceType::Round;
|
|
|
|
|
FITKPolygonSource* InputSource{ nullptr };
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
FITKPolyRenderStrategy(const FITKPolyRenderStrategy&) = delete;
|
|
|
|
|
void operator=(const FITKPolyRenderStrategy&) = delete;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // FITKPOLYRENDERSTRATEGY_H
|