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
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:40
abstract base class for most VTK objects
Definition: vtkObject.h:59
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
abstract specification for Viewports
Definition: vtkViewport.h:47
virtual void DrawPolygon(float *p, int n)
Draw a polygon using the specified number of points.
virtual int GetHeight()
Get the width of the device in pixels.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
virtual void Begin(vtkViewport *)
Begin drawing, pass in the viewport to set up the view.
virtual void DisableClipping()
Disable clipping of the display.
vtkVector2i ViewportSize
Store the size of the total viewport.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:40
a simple class to control print indentation
Definition: vtkIndent.h:39
represent and manipulate 2D points
Definition: vtkPoints2D.h:36
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
vtkAbstractContextBufferId * BufferId
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:408
virtual void DrawQuadStrip(float *, int)
Draw a quad using the specified number of points.
Abstract class for drawing 2D primitives.
virtual int GetWidth()
Get the width of the device in pixels.
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:39
represent text properties.
dynamic, self-adjusting array of unsigned char
virtual void SetViewportSize(const vtkVector2i &size)
virtual void DrawQuad(float *, int)
Draw a quad using the specified number of points.
2D array of ids, used for picking.
virtual void End()
End drawing, clean up the view.
vtkRecti ViewportRect
Store our origin and size in the total viewport.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:36
vtkTextProperty * TextProp
String class that stores Unicode text.