VTK
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 
29 #ifndef vtkContextDevice2D_h
30 #define vtkContextDevice2D_h
31 
32 #include "vtkRenderingContext2DModule.h" // For export macro
33 #include "vtkObject.h"
34 #include "vtkVector.h" // For vtkVector2i ivar
35 #include "vtkRect.h" // For vtkRecti ivar
36 #include "vtkRenderingCoreEnums.h" // For marker enum
37 
38 class vtkWindow;
39 class vtkViewport;
40 class vtkStdString;
41 class vtkUnicodeString;
42 class vtkTextProperty;
43 class vtkPoints2D;
44 class vtkImageData;
45 class vtkMatrix3x3;
47 class vtkPen;
48 class vtkBrush;
49 class vtkRectf;
50 class vtkPolyData;
52 
53 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
54 {
55 public:
56  vtkTypeMacro(vtkContextDevice2D, vtkObject);
57  void PrintSelf(ostream &os, vtkIndent indent) override;
58 
59  static vtkContextDevice2D * New();
60 
68  virtual void DrawPoly(float *points, int n,
69  unsigned char *colors = nullptr, int nc_comps = 0) = 0;
70 
77  virtual void DrawLines(float *f, int n, unsigned char *colors = nullptr,
78  int nc_comps = 0) = 0;
79 
84  virtual void DrawPoints(float *points, int n, unsigned char* colors = nullptr,
85  int nc_comps = 0) = 0;
86 
94  virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n,
95  unsigned char *colors = nullptr, int nc_comps = 0) = 0;
96 
108  virtual void DrawMarkers(int shape, bool highlight, float *points, int n,
109  unsigned char *colors = nullptr, int nc_comps = 0);
110 
114  virtual void DrawQuad(float *, int) { ; }
115 
119  virtual void DrawQuadStrip(float *, int) { ; }
120 
125  virtual void DrawPolygon(float *p, int n) { this->DrawColoredPolygon(p, n); }
126  virtual void DrawColoredPolygon(float *points, int numPoints,
127  unsigned char *colors = nullptr,
128  int nc_comps = 0);
142  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy,
143  float inRx, float inRy, float startAngle,
144  float stopAngle)=0;
145 
152  virtual void DrawEllipticArc(float x, float y, float rX, float rY,
153  float startAngle, float stopAngle)=0;
154 
158  virtual void DrawString(float *point, const vtkStdString &string) = 0;
159 
167  virtual void ComputeStringBounds(const vtkStdString &string,
168  float bounds[4]) = 0;
169 
173  virtual void DrawString(float *point, const vtkUnicodeString &string) = 0;
174 
182  virtual void ComputeStringBounds(const vtkUnicodeString &string,
183  float bounds[4]) = 0;
184 
190  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
191 
196  virtual void DrawMathTextString(float *point, const vtkStdString &string) = 0;
197 
201  virtual bool MathTextIsSupported();
202 
207  virtual void DrawImage(float p[2], float scale, vtkImageData *image) = 0;
208 
214  virtual void DrawImage(const vtkRectf& pos, vtkImageData *image) = 0;
215 
235  virtual void DrawPolyData(float p[2], float scale, vtkPolyData* polyData,
236  vtkUnsignedCharArray* colors, int scalarMode);
237 
243  virtual void ApplyPen(vtkPen *pen);
244 
246 
251  vtkGetObjectMacro(Pen, vtkPen);
253 
259  virtual void ApplyBrush(vtkBrush *brush);
260 
262 
266  vtkGetObjectMacro(Brush, vtkBrush);
268 
274  virtual void ApplyTextProp(vtkTextProperty *prop);
275 
277 
280  vtkGetObjectMacro(TextProp, vtkTextProperty);
282 
286  virtual void SetColor4(unsigned char color[4]) = 0;
287 
289  Nearest = 0x01,
290  Linear = 0x02,
291  Stretch = 0x04,
292  Repeat = 0x08
293  };
297  virtual void SetTexture(vtkImageData* image, int properties) = 0;
298 
302  virtual void SetPointSize(float size) = 0;
303 
307  virtual void SetLineWidth(float width) = 0;
308 
312  virtual void SetLineType(int type) = 0;
313 
317  virtual int GetWidth() { return this->Geometry[0]; }
318 
322  virtual int GetHeight() { return this->Geometry[1]; }
323 
327  virtual void SetMatrix(vtkMatrix3x3 *m) = 0;
328 
332  virtual void GetMatrix(vtkMatrix3x3 *m) = 0;
333 
337  virtual void MultiplyMatrix(vtkMatrix3x3 *m) = 0;
338 
342  virtual void PushMatrix() = 0;
343 
347  virtual void PopMatrix() = 0;
348 
353  virtual void SetClipping(int *x) = 0;
354 
359  virtual void DisableClipping() { this->EnableClipping(false); }
360 
364  virtual void EnableClipping(bool enable) = 0;
365 
369  virtual void Begin(vtkViewport*) { }
370 
374  virtual void End() { }
375 
380  virtual bool GetBufferIdMode() const;
381 
389  virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId);
390 
398  virtual void BufferIdModeEnd();
399 
400  virtual void SetViewportSize(const vtkVector2i &size)
401  {
402  this->ViewportSize = size;
403  }
404  vtkGetMacro(ViewportSize, vtkVector2i)
405 
406  virtual void SetViewportRect(const vtkRecti &rect)
407  {
408  this->ViewportRect = rect;
409  }
410  vtkGetMacro(ViewportRect, vtkRecti)
411 
412 protected:
414  ~vtkContextDevice2D() override;
415 
419  int Geometry[2];
420 
425 
430 
432 
433  vtkPen *Pen; // Outlining
434  vtkBrush *Brush; // Fills
435  vtkTextProperty *TextProp; // Text property
436 
437 private:
438  vtkContextDevice2D(const vtkContextDevice2D &) = delete;
439  void operator=(const vtkContextDevice2D &) = delete;
440 
441 };
442 
443 #endif //vtkContextDevice2D_h
vtkBrush
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:40
vtkPoints2D
represent and manipulate 2D points
Definition: vtkPoints2D.h:36
vtkContextDevice2D::DrawQuadStrip
virtual void DrawQuadStrip(float *, int)
Draw a quad using the specified number of points.
Definition: vtkContextDevice2D.h:119
vtkX3D::scale
Definition: vtkX3D.h:229
vtkContextDevice2D::GetHeight
virtual int GetHeight()
Get the width of the device in pixels.
Definition: vtkContextDevice2D.h:322
vtkContextDevice2D::End
virtual void End()
End drawing, clean up the view.
Definition: vtkContextDevice2D.h:374
vtkContextDevice2D::Pen
vtkPen * Pen
Definition: vtkContextDevice2D.h:433
vtkX3D::type
Definition: vtkX3D.h:516
vtkContextDevice2D::DrawQuad
virtual void DrawQuad(float *, int)
Draw a quad using the specified number of points.
Definition: vtkContextDevice2D.h:114
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkX3D::image
Definition: vtkX3D.h:374
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:41
vtkContextDevice2D::SetViewportSize
virtual void SetViewportSize(const vtkVector2i &size)
Definition: vtkContextDevice2D.h:400
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:59
vtkVector.h
vtkContextDevice2D::ViewportRect
vtkRecti ViewportRect
Store our origin and size in the total viewport.
Definition: vtkContextDevice2D.h:429
vtkRenderingCoreEnums.h
vtkMatrix3x3
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:36
vtkContextDevice2D::BufferId
vtkAbstractContextBufferId * BufferId
Definition: vtkContextDevice2D.h:431
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkContextDevice2D::GetWidth
virtual int GetWidth()
Get the width of the device in pixels.
Definition: vtkContextDevice2D.h:317
vtkContextDevice2D::DrawPolygon
virtual void DrawPolygon(float *p, int n)
Draw a polygon using the specified number of points.
Definition: vtkContextDevice2D.h:125
vtkAbstractContextBufferId
2D array of ids, used for picking.
Definition: vtkAbstractContextBufferId.h:46
vtkX3D::color
Definition: vtkX3D.h:221
vtkX3D::points
Definition: vtkX3D.h:446
vtkX3D::point
Definition: vtkX3D.h:236
vtkContextDevice2D::DisableClipping
virtual void DisableClipping()
Disable clipping of the display.
Definition: vtkContextDevice2D.h:359
vtkRect.h
vtkContextDevice2D::ViewportSize
vtkVector2i ViewportSize
Store the size of the total viewport.
Definition: vtkContextDevice2D.h:424
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkUnicodeString
String class that stores Unicode text.
Definition: vtkUnicodeString.h:72
vtkX3D::size
Definition: vtkX3D.h:253
vtkContextDevice2D::Brush
vtkBrush * Brush
Definition: vtkContextDevice2D.h:434
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkX3D::startAngle
Definition: vtkX3D.h:486
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:47
vtkObject.h
vtkContextDevice2D::TextProp
vtkTextProperty * TextProp
Definition: vtkContextDevice2D.h:435
vtkContextDevice2D
Abstract class for drawing 2D primitives.
Definition: vtkContextDevice2D.h:53
vtkTextProperty
represent text properties.
Definition: vtkTextProperty.h:39
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
vtkContextDevice2D::Begin
virtual void Begin(vtkViewport *)
Begin drawing, pass in the viewport to set up the view.
Definition: vtkContextDevice2D.h:369
vtkContextDevice2D::TextureProperty
TextureProperty
Definition: vtkContextDevice2D.h:288
vtkRecti
Definition: vtkRect.h:323
vtkPen
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:39
vtkVector2i
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:408
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:40
vtkRectf
Definition: vtkRect.h:332