You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.2 KiB
C++
153 lines
4.2 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkTextMapper.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkTextMapper
|
|
* @brief 2D text annotation
|
|
*
|
|
* vtkTextMapper provides 2D text annotation support for VTK. It is a
|
|
* vtkMapper2D that can be associated with a vtkActor2D and placed into a
|
|
* vtkRenderer.
|
|
*
|
|
* To use vtkTextMapper, specify an input text string.
|
|
*
|
|
* @sa
|
|
* vtkActor2D vtkTextActor vtkTextActor3D vtkTextProperty vtkTextRenderer
|
|
*/
|
|
|
|
#ifndef vtkTextMapper_h
|
|
#define vtkTextMapper_h
|
|
|
|
#include "vtkMapper2D.h"
|
|
#include "vtkRenderingCoreModule.h" // For export macro
|
|
|
|
#include "vtkNew.h" // For vtkNew
|
|
|
|
class vtkActor2D;
|
|
class vtkImageData;
|
|
class vtkPoints;
|
|
class vtkPolyData;
|
|
class vtkPolyDataMapper2D;
|
|
class vtkTextProperty;
|
|
class vtkTexture;
|
|
class vtkTimeStamp;
|
|
class vtkViewport;
|
|
|
|
class VTKRENDERINGCORE_EXPORT vtkTextMapper : public vtkMapper2D
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkTextMapper, vtkMapper2D);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* Creates a new text mapper.
|
|
*/
|
|
static vtkTextMapper* New();
|
|
|
|
//@{
|
|
/**
|
|
* Return the size[2]/width/height of the rectangle required to draw this
|
|
* mapper (in pixels).
|
|
*/
|
|
virtual void GetSize(vtkViewport*, int size[2]);
|
|
virtual int GetWidth(vtkViewport* v);
|
|
virtual int GetHeight(vtkViewport* v);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* The input text string to the mapper.
|
|
*/
|
|
vtkSetStringMacro(Input);
|
|
vtkGetStringMacro(Input);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the text property.
|
|
*/
|
|
virtual void SetTextProperty(vtkTextProperty* p);
|
|
vtkGetObjectMacro(TextProperty, vtkTextProperty);
|
|
//@}
|
|
|
|
/**
|
|
* Shallow copy of an actor.
|
|
*/
|
|
void ShallowCopy(vtkAbstractMapper* m) override;
|
|
|
|
//@{
|
|
/**
|
|
* Set and return the font size (in points) required to make this mapper fit
|
|
* in a given
|
|
* target rectangle (width x height, in pixels). A static version of the method
|
|
* is also available for convenience to other classes (e.g., widgets).
|
|
*/
|
|
virtual int SetConstrainedFontSize(vtkViewport*, int targetWidth, int targetHeight);
|
|
static int SetConstrainedFontSize(
|
|
vtkTextMapper*, vtkViewport*, int targetWidth, int targetHeight);
|
|
//@}
|
|
|
|
/**
|
|
* Set and return the font size (in points) required to make each element of
|
|
* an array
|
|
* of mappers fit in a given rectangle (width x height, in pixels). This
|
|
* font size is the smallest size that was required to fit the largest
|
|
* mapper in this constraint.
|
|
*/
|
|
static int SetMultipleConstrainedFontSize(vtkViewport*, int targetWidth, int targetHeight,
|
|
vtkTextMapper** mappers, int nbOfMappers, int* maxResultingSize);
|
|
|
|
//@{
|
|
/**
|
|
* Use these methods when setting font size relative to the renderer's size. These
|
|
* methods are static so that external classes (e.g., widgets) can easily use them.
|
|
*/
|
|
static int SetRelativeFontSize(
|
|
vtkTextMapper*, vtkViewport*, const int* winSize, int* stringSize, float sizeFactor = 0.0);
|
|
static int SetMultipleRelativeFontSize(vtkViewport* viewport, vtkTextMapper** textMappers,
|
|
int nbOfMappers, int* winSize, int* stringSize, float sizeFactor);
|
|
//@}
|
|
|
|
void RenderOverlay(vtkViewport*, vtkActor2D*) override;
|
|
void ReleaseGraphicsResources(vtkWindow*) override;
|
|
vtkMTimeType GetMTime() override;
|
|
|
|
protected:
|
|
vtkTextMapper();
|
|
~vtkTextMapper() override;
|
|
|
|
char* Input;
|
|
vtkTextProperty* TextProperty;
|
|
|
|
private:
|
|
vtkTextMapper(const vtkTextMapper&) = delete;
|
|
void operator=(const vtkTextMapper&) = delete;
|
|
|
|
void UpdateQuad(vtkActor2D* actor, int dpi);
|
|
void UpdateImage(int dpi);
|
|
|
|
int TextDims[2];
|
|
|
|
int RenderedDPI;
|
|
vtkTimeStamp CoordsTime;
|
|
vtkTimeStamp TCoordsTime;
|
|
vtkNew<vtkImageData> Image;
|
|
vtkNew<vtkPoints> Points;
|
|
vtkNew<vtkPolyData> PolyData;
|
|
vtkNew<vtkPolyDataMapper2D> Mapper;
|
|
vtkNew<vtkTexture> Texture;
|
|
};
|
|
|
|
#endif
|