VTK  9.0.20210409
vtkContextDevice2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkContextDevice2D.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
26 #ifndef vtkContextDevice2D_h
27 #define vtkContextDevice2D_h
28 
29 #include "vtkDeprecation.h" // for deprecation macros
30 #include "vtkObject.h"
31 #include "vtkRect.h" // For vtkRecti ivar
32 #include "vtkRenderingContext2DModule.h" // For export macro
33 #include "vtkRenderingCoreEnums.h" // For marker enum
34 #include "vtkVector.h" // For vtkVector2i ivar
35 
36 class vtkWindow;
37 class vtkViewport;
38 class vtkStdString;
39 class vtkUnicodeString;
40 class vtkTextProperty;
41 class vtkPoints2D;
42 class vtkImageData;
43 class vtkMatrix3x3;
45 class vtkPen;
46 class vtkBrush;
47 class vtkRectf;
48 class vtkPolyData;
50 
51 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
52 {
53 public:
54  vtkTypeMacro(vtkContextDevice2D, vtkObject);
55  void PrintSelf(ostream& os, vtkIndent indent) override;
56 
58 
66  virtual void DrawPoly(
67  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
68 
75  virtual void DrawLines(float* f, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
76 
81  virtual void DrawPoints(
82  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
83 
91  virtual void DrawPointSprites(vtkImageData* sprite, float* points, int n,
92  unsigned char* colors = nullptr, int nc_comps = 0) = 0;
93 
105  virtual void DrawMarkers(int shape, bool highlight, float* points, int n,
106  unsigned char* colors = nullptr, int nc_comps = 0);
107 
111  virtual void DrawQuad(float*, int) { ; }
112 
116  virtual void DrawQuadStrip(float*, int) { ; }
117 
122  virtual void DrawPolygon(float* p, int n) { this->DrawColoredPolygon(p, n); }
123  virtual void DrawColoredPolygon(
124  float* points, int numPoints, unsigned char* colors = nullptr, int nc_comps = 0);
138  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
139  float startAngle, float stopAngle) = 0;
140 
147  virtual void DrawEllipticArc(
148  float x, float y, float rX, float rY, float startAngle, float stopAngle) = 0;
149 
153  virtual void DrawString(float* point, const vtkStdString& string) = 0;
154 
162  virtual void ComputeStringBounds(const vtkStdString& string, float bounds[4]) = 0;
163 
167  VTK_DEPRECATED_IN_9_1_0("Use void DrawString(float* point, const vtkStdString& string)")
168  virtual void DrawString(float* point, const vtkUnicodeString& string) = 0;
169 
178  "Use void ComputeStringBounds(const vtkStdString& string, float bounds[4])")
179  virtual void ComputeStringBounds(const vtkUnicodeString& string, float bounds[4]) = 0;
180 
186  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
187 
192  virtual void DrawMathTextString(float* point, const vtkStdString& string) = 0;
193 
197  virtual bool MathTextIsSupported();
198 
203  virtual void DrawImage(float p[2], float scale, vtkImageData* image) = 0;
204 
210  virtual void DrawImage(const vtkRectf& pos, vtkImageData* image) = 0;
211 
231  virtual void DrawPolyData(
232  float p[2], float scale, vtkPolyData* polyData, vtkUnsignedCharArray* colors, int scalarMode);
233 
239  virtual void ApplyPen(vtkPen* pen);
240 
242 
247  vtkGetObjectMacro(Pen, vtkPen);
249 
255  virtual void ApplyBrush(vtkBrush* brush);
256 
258 
262  vtkGetObjectMacro(Brush, vtkBrush);
264 
270  virtual void ApplyTextProp(vtkTextProperty* prop);
271 
273 
276  vtkGetObjectMacro(TextProp, vtkTextProperty);
278 
282  virtual void SetColor4(unsigned char color[4]) = 0;
283 
285  {
286  Nearest = 0x01,
287  Linear = 0x02,
288  Stretch = 0x04,
289  Repeat = 0x08
290  };
294  virtual void SetTexture(vtkImageData* image, int properties) = 0;
295 
299  virtual void SetPointSize(float size) = 0;
300 
304  virtual void SetLineWidth(float width) = 0;
305 
309  virtual void SetLineType(int type) = 0;
310 
314  virtual int GetWidth() { return this->Geometry[0]; }
315 
319  virtual int GetHeight() { return this->Geometry[1]; }
320 
324  virtual void SetMatrix(vtkMatrix3x3* m) = 0;
325 
329  virtual void GetMatrix(vtkMatrix3x3* m) = 0;
330 
334  virtual void MultiplyMatrix(vtkMatrix3x3* m) = 0;
335 
339  virtual void PushMatrix() = 0;
340 
344  virtual void PopMatrix() = 0;
345 
350  virtual void SetClipping(int* x) = 0;
351 
356  virtual void DisableClipping() { this->EnableClipping(false); }
357 
361  virtual void EnableClipping(bool enable) = 0;
362 
366  virtual void Begin(vtkViewport*) {}
367 
371  virtual void End() {}
372 
377  virtual bool GetBufferIdMode() const;
378 
387 
395  virtual void BufferIdModeEnd();
396 
397  virtual void SetViewportSize(const vtkVector2i& size) { this->ViewportSize = size; }
398  vtkGetMacro(ViewportSize, vtkVector2i);
399 
400  virtual void SetViewportRect(const vtkRecti& rect) { this->ViewportRect = rect; }
401  vtkGetMacro(ViewportRect, vtkRecti);
402 
403 protected:
406 
410  int Geometry[2];
411 
416 
421 
423 
424  vtkPen* Pen; // Outlining
425  vtkBrush* Brush; // Fills
426  vtkTextProperty* TextProp; // Text property
427 
428 private:
429  vtkContextDevice2D(const vtkContextDevice2D&) = delete;
430  void operator=(const vtkContextDevice2D&) = delete;
431 };
432 
433 #endif // vtkContextDevice2D_h
vtkBrush
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:38
vtkPoints2D
represent and manipulate 2D points
Definition: vtkPoints2D.h:34
vtkContextDevice2D::DrawMarkers
virtual void DrawMarkers(int shape, bool highlight, float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)
Draw a series of markers centered at the points supplied.
vtkContextDevice2D::ComputeStringBounds
virtual void ComputeStringBounds(const vtkStdString &string, float bounds[4])=0
Compute the bounds of the supplied string.
vtkContextDevice2D::DrawQuadStrip
virtual void DrawQuadStrip(float *, int)
Draw a quad using the specified number of points.
Definition: vtkContextDevice2D.h:116
vtkContextDevice2D::New
static vtkContextDevice2D * New()
vtkContextDevice2D::PopMatrix
virtual void PopMatrix()=0
Pop the current matrix off of the stack.
vtkContextDevice2D::BufferIdModeBegin
virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId)
Start BufferId creation Mode.
vtkX3D::scale
@ scale
Definition: vtkX3D.h:235
vtkContextDevice2D::GetHeight
virtual int GetHeight()
Get the width of the device in pixels.
Definition: vtkContextDevice2D.h:319
vtkContextDevice2D::End
virtual void End()
End drawing, clean up the view.
Definition: vtkContextDevice2D.h:371
vtkContextDevice2D::Pen
vtkPen * Pen
Definition: vtkContextDevice2D.h:424
vtkX3D::type
@ type
Definition: vtkX3D.h:522
vtkContextDevice2D::DrawQuad
virtual void DrawQuad(float *, int)
Draw a quad using the specified number of points.
Definition: vtkContextDevice2D.h:111
vtkContextDevice2D::MultiplyMatrix
virtual void MultiplyMatrix(vtkMatrix3x3 *m)=0
Multiply the current model view matrix by the supplied one.
vtkX3D::image
@ image
Definition: vtkX3D.h:380
vtkContextDevice2D::SetMatrix
virtual void SetMatrix(vtkMatrix3x3 *m)=0
Set the model view matrix for the display.
vtkContextDevice2D::DrawString
virtual void DrawString(float *point, const vtkStdString &string)=0
Draw some text to the screen.
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:36
vtkContextDevice2D::SetViewportSize
virtual void SetViewportSize(const vtkVector2i &size)
Definition: vtkContextDevice2D.h:397
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:63
vtkVector.h
VTK_DEPRECATED_IN_9_1_0
#define VTK_DEPRECATED_IN_9_1_0(reason)
Definition: vtkDeprecation.h:117
vtkContextDevice2D::GetBufferIdMode
virtual bool GetBufferIdMode() const
Tell if the device context is in BufferId creation mode.
vtkContextDevice2D::ViewportRect
vtkRecti ViewportRect
Store our origin and size in the total viewport.
Definition: vtkContextDevice2D.h:420
vtkContextDevice2D::SetClipping
virtual void SetClipping(int *x)=0
Supply an int array of length 4 with x1, y1, width, height specifying clipping region for the device ...
vtkContextDevice2D::DrawColoredPolygon
virtual void DrawColoredPolygon(float *points, int numPoints, unsigned char *colors=nullptr, int nc_comps=0)
Draw a polygon using the specified number of points.
vtkRenderingCoreEnums.h
vtkContextDevice2D::PushMatrix
virtual void PushMatrix()=0
Push the current matrix onto the stack.
vtkMatrix3x3
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:34
vtkContextDevice2D::BufferId
vtkAbstractContextBufferId * BufferId
Definition: vtkContextDevice2D.h:422
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
vtkContextDevice2D::GetWidth
virtual int GetWidth()
Get the width of the device in pixels.
Definition: vtkContextDevice2D.h:314
vtkContextDevice2D::DrawPolygon
virtual void DrawPolygon(float *p, int n)
Draw a polygon using the specified number of points.
Definition: vtkContextDevice2D.h:122
vtkAbstractContextBufferId
2D array of ids, used for picking.
Definition: vtkAbstractContextBufferId.h:47
vtkX3D::color
@ color
Definition: vtkX3D.h:227
vtkX3D::points
@ points
Definition: vtkX3D.h:452
vtkX3D::point
@ point
Definition: vtkX3D.h:242
vtkContextDevice2D::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkContextDevice2D::DrawEllipticArc
virtual void DrawEllipticArc(float x, float y, float rX, float rY, float startAngle, float stopAngle)=0
Draw an elliptic arc with center at x,y with radii rX and rY between angles startAngle and stopAngle ...
vtkContextDevice2D::SetLineType
virtual void SetLineType(int type)=0
Set the line type type (using anonymous enum in vtkPen).
vtkContextDevice2D::SetPointSize
virtual void SetPointSize(float size)=0
Set the point size for glyphs/sprites.
vtkContextDevice2D::DisableClipping
virtual void DisableClipping()
Disable clipping of the display.
Definition: vtkContextDevice2D.h:356
vtkRect.h
vtkContextDevice2D::ViewportSize
vtkVector2i ViewportSize
Store the size of the total viewport.
Definition: vtkContextDevice2D.h:415
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:48
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkUnicodeString
String class that stores Unicode text.
Definition: vtkUnicodeString.h:72
vtkContextDevice2D::vtkContextDevice2D
vtkContextDevice2D()
vtkX3D::size
@ size
Definition: vtkX3D.h:259
vtkContextDevice2D::Brush
vtkBrush * Brush
Definition: vtkContextDevice2D.h:425
vtkContextDevice2D::DrawPointSprites
virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw a series of point sprites, images centred at the points supplied.
vtkX3D::startAngle
@ startAngle
Definition: vtkX3D.h:492
vtkContextDevice2D::BufferIdModeEnd
virtual void BufferIdModeEnd()
Finalize BufferId creation Mode.
vtkContextDevice2D::~vtkContextDevice2D
~vtkContextDevice2D() override
vtkContextDevice2D::DrawPoly
virtual void DrawPoly(float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw a poly line using the points - fastest code path due to memory layout of the coordinates.
vtkContextDevice2D::GetMatrix
virtual void GetMatrix(vtkMatrix3x3 *m)=0
Set the model view matrix for the display.
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:45
vtkObject.h
vtkContextDevice2D::TextProp
vtkTextProperty * TextProp
Definition: vtkContextDevice2D.h:426
vtkContextDevice2D
Abstract class for drawing 2D primitives.
Definition: vtkContextDevice2D.h:52
vtkTextProperty
represent text properties.
Definition: vtkTextProperty.h:34
vtkContextDevice2D::DrawLines
virtual void DrawLines(float *f, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw lines using the points - memory layout is as follows: l1p1,l1p2,l2p1,l2p2...
vtkDeprecation.h
vtkContextDevice2D::SetTexture
virtual void SetTexture(vtkImageData *image, int properties)=0
Set the texture for the device, it is used to fill the polygons.
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
vtkContextDevice2D::Begin
virtual void Begin(vtkViewport *)
Begin drawing, pass in the viewport to set up the view.
Definition: vtkContextDevice2D.h:366
vtkContextDevice2D::TextureProperty
TextureProperty
Definition: vtkContextDevice2D.h:285
vtkRecti
Definition: vtkRect.h:322
vtkContextDevice2D::SetViewportRect
virtual void SetViewportRect(const vtkRecti &rect)
Definition: vtkContextDevice2D.h:400
vtkPen
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:37
vtkVector2i
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:420
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:35
vtkContextDevice2D::DrawEllipseWedge
virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy, float startAngle, float stopAngle)=0
Draw an elliptic wedge with center at x, y, outer radii outRx, outRy, inner radii inRx,...
vtkContextDevice2D::SetLineWidth
virtual void SetLineWidth(float width)=0
Set the line width.
vtkRectf
Definition: vtkRect.h:336
vtkContextDevice2D::EnableClipping
virtual void EnableClipping(bool enable)=0
Enable or disable the clipping of the scene.
vtkContextDevice2D::DrawPoints
virtual void DrawPoints(float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw a series of points - fastest code path due to memory layout of the coordinates.