Add ReferenceLineLegendActor(not used yet)
This commit is contained in:
61
src/src/measure/ReferenceLineLegendActor.cpp
Normal file
61
src/src/measure/ReferenceLineLegendActor.cpp
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
//
|
||||||
|
// Created by Krad on 2022/4/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "ReferenceLineLegendActor.h"
|
||||||
|
#include <vtkObjectFactory.h>
|
||||||
|
#include "vtkPolyDataMapper2D.h"
|
||||||
|
#include "vtkRenderer.h"
|
||||||
|
#include "vtkRenderWindow.h"
|
||||||
|
#include "vtkCamera.h"
|
||||||
|
#include "vtkPoints.h"
|
||||||
|
#include "vtkProperty2D.h"
|
||||||
|
|
||||||
|
vtkStandardNewMacro(ReferenceLineLegendActor)
|
||||||
|
|
||||||
|
void ReferenceLineLegendActor::BuildShape(vtkRenderer* renderer) {
|
||||||
|
//reference line 暂时不用考虑缩放问题
|
||||||
|
vtkNew<vtkPoints> pts;
|
||||||
|
vtkNew<vtkCellArray> lines;
|
||||||
|
vtkIdType ids[2]={0,1};
|
||||||
|
double p[3] = {.0, .0, .0};
|
||||||
|
renderer->SetWorldPoint(linePoints->GetPoint(0));
|
||||||
|
renderer->WorldToDisplay();
|
||||||
|
renderer->GetDisplayPoint(p);
|
||||||
|
ids[0] = pts->InsertNextPoint(p);
|
||||||
|
renderer->SetWorldPoint(linePoints->GetPoint(1));
|
||||||
|
renderer->WorldToDisplay();
|
||||||
|
renderer->GetDisplayPoint(p);
|
||||||
|
ids[1] = pts->InsertNextPoint(0,2.5,0.0);
|
||||||
|
lines->InsertNextCell(2,ids);
|
||||||
|
|
||||||
|
renderData->SetPoints(pts);
|
||||||
|
renderData->SetLines(lines);
|
||||||
|
actor2D->GetMapper()->SetInputDataObject(renderData);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReferenceLineLegendActor::ReleaseGraphicsResources(vtkWindow * iwin) {
|
||||||
|
actor2D->ReleaseGraphicsResources(iwin);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ReferenceLineLegendActor::RenderOverlay(vtkViewport *viewport) {
|
||||||
|
auto renderer = vtkRenderer::SafeDownCast(viewport);
|
||||||
|
if (!renderer) return 0;
|
||||||
|
BuildShape(renderer);
|
||||||
|
return actor2D->RenderOverlay(viewport);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReferenceLineLegendActor::ReferenceLineLegendActor() {
|
||||||
|
this->PickableOff();
|
||||||
|
actor2D = vtkActor2D::New();
|
||||||
|
actor2D->PickableOff();
|
||||||
|
vtkNew<vtkPolyDataMapper2D> mapper;
|
||||||
|
actor2D->SetMapper(mapper);
|
||||||
|
actor2D->GetProperty()->SetLineWidth(1.0);
|
||||||
|
actor2D->GetProperty()->SetColor(1.0,0.0,0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReferenceLineLegendActor::~ReferenceLineLegendActor() {
|
||||||
|
actor2D->Delete();
|
||||||
|
actor2D = nullptr;
|
||||||
|
}
|
||||||
73
src/src/measure/ReferenceLineLegendActor.h
Normal file
73
src/src/measure/ReferenceLineLegendActor.h
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// Created by Krad on 2022/4/11.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef OMEGAV_REFERENCELINELEGENDACTOR_H
|
||||||
|
#define OMEGAV_REFERENCELINELEGENDACTOR_H
|
||||||
|
|
||||||
|
#include "vtkProp.h"
|
||||||
|
#include "vtkActor2D.h"
|
||||||
|
#include "vtkPolyData.h"
|
||||||
|
#include "vtkNew.h" // for ivars
|
||||||
|
class vtkRenderer;
|
||||||
|
class ReferenceLineLegendActor : public vtkProp {
|
||||||
|
public:
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
* Standard methods for instances of this class.
|
||||||
|
*/
|
||||||
|
static ReferenceLineLegendActor *New();
|
||||||
|
|
||||||
|
vtkTypeMacro(ReferenceLineLegendActor, vtkProp);
|
||||||
|
|
||||||
|
virtual void BuildShape(vtkRenderer* renderer);
|
||||||
|
|
||||||
|
//@{
|
||||||
|
/**
|
||||||
|
* Methods to make this class behave as a vtkProp.
|
||||||
|
*/
|
||||||
|
double *GetBounds() VTK_SIZEHINT(6) override { return nullptr; }
|
||||||
|
|
||||||
|
void GetActors(vtkPropCollection *) override {}
|
||||||
|
|
||||||
|
void GetVolumes(vtkPropCollection *) override {}
|
||||||
|
|
||||||
|
void ShallowCopy(vtkProp *prop) override {};
|
||||||
|
|
||||||
|
void ReleaseGraphicsResources(vtkWindow *) override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method use to make this actor render in 2D scene;
|
||||||
|
* @param viewport
|
||||||
|
* @return render is success
|
||||||
|
*/
|
||||||
|
int RenderOverlay(vtkViewport *viewport) override;
|
||||||
|
|
||||||
|
int RenderOpaqueGeometry(vtkViewport *vtkNotUsed(viewport)) override { return 0; }
|
||||||
|
|
||||||
|
int RenderTranslucentPolygonalGeometry(vtkViewport *vtkNotUsed(viewport)) override { return 0; }
|
||||||
|
|
||||||
|
int RenderVolumetricGeometry(vtkViewport *vtkNotUsed(viewport)) override { return 0; }
|
||||||
|
|
||||||
|
vtkTypeBool HasTranslucentPolygonalGeometry() override { return 0; }
|
||||||
|
|
||||||
|
void SetLinePoint(double* p1, double* p2){
|
||||||
|
linePoints->SetNumberOfPoints(2);
|
||||||
|
linePoints->SetPoint(0, p1);
|
||||||
|
linePoints->SetPoint(2, p2);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
ReferenceLineLegendActor();
|
||||||
|
~ReferenceLineLegendActor() override;
|
||||||
|
vtkNew<vtkPoints> linePoints;
|
||||||
|
vtkNew<vtkPolyData> renderData;
|
||||||
|
vtkActor2D * actor2D;
|
||||||
|
|
||||||
|
private:
|
||||||
|
ReferenceLineLegendActor(const ReferenceLineLegendActor &) = delete;
|
||||||
|
void operator=(const ReferenceLineLegendActor &) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //OMEGAV_REFERENCELINELEGENDACTOR_H
|
||||||
Reference in New Issue
Block a user