37 #include <vtkSphereSource.h> 38 #include <vtkLineSource.h> 39 #include <vtkPolyDataMapper2D.h> 40 #include <vtkProperty2D.h> 41 #include <vtkTextMapper.h> 42 #include <vtkTextProperty.h> 43 #include <vtkAxesActor.h> 44 #include <vtkCaptionActor2D.h> 45 #include <vtkMatrix4x4.h> 46 #include <vtkRenderer.h> 47 #include <vtkCursor2D.h> 48 #include <vtkLeaderActor2D.h> 50 #include <vtkProperty.h> 54 #include "vtkOverrideInformationCollection.h" 55 #include "vtkObjectFactory.h" 63 Vector3D retval(color.redF(), color.greenF(), color.blueF());
72 for (
unsigned i=0; i<size(); ++i)
73 elems[i] = t.elems[i];
80 for (
unsigned i=0; i<size(); ++i)
81 elems[i] = t.elems[i];
89 elems[1] = t.greenF();
97 elems[1] = c.greenF();
123 mRenderer = renderer;
124 source = vtkSphereSourcePtr::New() ;
125 source->SetRadius( 4);
127 mapper = vtkPolyDataMapper2DPtr::New() ;
128 mapper->SetInputConnection(source->GetOutputPort() );
130 actor = vtkActor2DPtr::New();
131 actor->SetMapper(mapper);
132 mRenderer->AddActor(actor);
137 mRenderer->RemoveActor(actor);
142 source->SetRadius(radius);
147 actor->GetProperty()->SetColor(color.begin());
148 actor->SetPosition(point.begin());
153 actor->GetProperty()->SetColor(color.begin());
154 actor->SetPosition(point.begin());
160 actor->SetPosition ( p.begin() );
176 mRenderer = renderer;
177 source = vtkLineSourcePtr::New();
178 mapper2d = vtkPolyDataMapper2DPtr::New();
179 actor2d = vtkActor2DPtr::New();
184 mRenderer->RemoveActor(actor2d);
189 source->SetPoint1(point1.begin());
190 source->SetPoint2(point2.begin());
191 mapper2d->SetInputConnection(source->GetOutputPort());
192 actor2d->SetMapper(mapper2d);
193 actor2d->GetProperty()->SetColor(color.begin());
194 actor2d->GetProperty()->SetLineStipplePattern(stipplePattern);
195 mRenderer->AddActor(actor2d);
200 source->SetResolution(res);
205 actor2d->GetProperty()->SetLineWidth(width);
210 source->SetPoint1(point1.begin());
211 source->SetPoint2(point2.begin());
216 actor2d->GetProperty()->SetColor(color.begin());
221 actor2d->GetProperty()->SetLineStipplePattern(stipplePattern);
235 mRenderer = renderer;
236 mCursor2D = vtkCursor2DPtr::New();
237 mapper = vtkPolyDataMapper2DPtr::New();
238 mapper->SetInputConnection ( mCursor2D->GetOutputPort() );
240 actor = vtkActor2DPtr::New();
241 actor->SetMapper ( mapper );
242 mRenderer->AddActor ( actor );
247 mRenderer->RemoveActor(actor);
255 mCursor2D->SetModelBounds ( bordarOffset, width - bordarOffset, bordarOffset, height - bordarOffset, 0.0, 0.0 );
256 mCursor2D->SetFocalPoint ( p[0]/2, p[1]/2, 0.0 );
257 mCursor2D->SetRadius ( 5 );
260 mCursor2D->PointOn();
261 mCursor2D->OutlineOff();
262 actor->GetProperty()-> SetColor ( c.begin() );
272 mCursor2D->SetModelBounds( cp[0]-50, cp[0]+50, cp[1]-50, cp[1]+50, 0.0, 0.0 );
273 mCursor2D->SetFocalPoint ( cp.begin() );
291 mCursor2D->PointOn();
292 mCursor2D->OutlineOff();
297 mCursor2D->SetFocalPoint ( cp.begin() );
319 mapper = vtkTextMapperPtr::New();
321 this->setColor(color);
322 mapper->GetTextProperty()->SetFontSize( fontsize );
324 actor= vtkActor2DPtr::New();
325 actor->SetMapper( mapper );
336 vtkNew<vtkOverrideInformationCollection> overrides;
337 vtkObjectFactory::GetOverrideInformation(
"vtkTextMapper",
338 overrides.GetPointer());
339 overrides->InitTraversal();
340 while (vtkOverrideInformation *
override = overrides->GetNextItem())
342 if (vtkObjectFactory *factory = override->GetObjectFactory())
344 vtkObjectFactory::UnRegisterFactory(factory);
347 verifyVtkTextMapper();
350 void TextDisplay::verifyVtkTextMapper()
352 vtkNew<vtkTextMapper> nameChecker;
353 if (vtkStdString(nameChecker->GetClassName()) !=
"vtkTextMapper")
355 reportError(
"Needed a vtkTextMapper instance, got " + QString(nameChecker->GetClassName()));
367 mRenderer->RemoveActor(actor);
368 mRenderer = renderer;
370 mRenderer->AddActor(actor);
381 QStringList components = text.split(
"\n");
382 for (QStringList::iterator it = components.begin(); it != components.end(); ++it)
384 this->verifyVtkTextMapper();
386 bool changed =
false;
387 line->SetInput( it->toLatin1().constData() );
388 line->SetTextProperty(mapper->GetTextProperty());
389 while((*it).length() > 0 && line->GetWidth(vp) > maxWidth)
392 line->SetInput( QString(
"%1...").arg(*it).toLatin1().constData() );
400 QString newString = components.join(
"\n");
401 mapper->SetInput( newString.toLatin1().constData() );
411 return mapper->GetWidth( vp );
416 actor->SetPosition( pos[0], pos[1] );
421 actor->SetPosition( x, y );
426 QString input = text;
432 if (input == QString(mapper->GetInput()))
441 return mapper->GetTextProperty();
451 mapper->GetTextProperty()->SetJustificationToCentered() ;
452 mapper->GetTextProperty()->SetVerticalJustificationToCentered() ;
461 mAxes = vtkSmartPointer<vtkAxesActor>::New();
463 setCaption(mAxes->GetXAxisCaptionActor2D(),
"x",
RGBColor(1,0,0));
464 setCaption(mAxes->GetYAxisCaptionActor2D(),
"y",
RGBColor(0,1,0));
465 setCaption(mAxes->GetZAxisCaptionActor2D(),
"z",
RGBColor(0,0,1));
472 Vector3D len(mAxes->GetNormalizedShaftLength());
475 mAxes->SetNormalizedShaftLength(len.begin());
478 mRenderer->AddActor(mAxes);
495 mRenderer->RemoveActor(mAxes);
503 void Axes3D::setCaption(vtkCaptionActor2D* captionActor,
const QString& caption,
RGBColor color)
506 captionActor->GetCaptionTextProperty()->SetColor(color.begin());
508 double fontsize = 0.02;
509 captionActor->SetWidth(fontsize);
510 captionActor->SetHeight(fontsize);
vtkTextProperty * textProperty()
void reportError(QString msg)
void updateRegCross(const Vector3D &crossPos)
Vector3D getColorAsVector3D(QColor color)
RGBColor & operator=(const RGBColor &t)
void setResolution(int res)
Transform3D createTransformScale(const Vector3D &scale_)
vtkSmartPointer< class vtkActor2D > vtkActor2DPtr
vtkSmartPointer< class vtkTextMapper > vtkTextMapperPtr
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
void setPoints(Vector3D point1, Vector3D point2, RGBColor color, int stipplePattern=0xFFFF)
cstring_cast_Placeholder cstring_cast(const T &val)
void setRadius(int radius)
void update(const Vector3D &crossPos, const DoubleBoundingBox3D &vp)
void setColor(RGBColor color)
void setWidth(float width)
LineSegment(vtkRendererPtr renderer)
void updatePosition(Vector3D point1, Vector3D point2)
void setMaxWidth(int width, vtkViewport *vp)
void setColor(QColor color)
void setValue(Vector3D point, RGBColor color)
void setPosition(float x, float y)
void setPosition(const Transform3D &pos)
CrossHair2D(vtkRendererPtr renderer)
vtkSmartPointer< class vtkRenderer > vtkRendererPtr
int getWidth(vtkViewport *vp)
void setValue(const Vector3D &focalPoint, int width, int height, double bordarOffset, const RGBColor &color)
Representation of a floating-point bounding box in 3D. The data are stored as {xmin,xmax,ymin,ymax,zmin,zmax}, in order to simplify communication with vtk.
TextDisplay(const QString &text, const QColor &color, int fontsize)
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
vtkSmartPointer< class vtkProp3D > vtkProp3DPtr
void updateText(const QString &text)
Axes3D(vtkRendererPtr renderer=vtkRendererPtr())
static void forceUseVtkTextMapper()
OffsetPoint(vtkRendererPtr renderer)
void setPattern(int stipplePattern)
void update(const Vector3D &point)
bool contains(const Vector3D &p) const
void setRenderer(vtkRendererPtr renderer)
Namespace for all CustusX production code.