VTK  9.0.1
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 "vtkObject.h"
30 #include "vtkRect.h" // For vtkRecti ivar
31 #include "vtkRenderingContext2DModule.h" // For export macro
32 #include "vtkRenderingCoreEnums.h" // For marker enum
33 #include "vtkVector.h" // For vtkVector2i ivar
34 
35 class vtkWindow;
36 class vtkViewport;
37 class vtkStdString;
38 class vtkUnicodeString;
39 class vtkTextProperty;
40 class vtkPoints2D;
41 class vtkImageData;
42 class vtkMatrix3x3;
44 class vtkPen;
45 class vtkBrush;
46 class vtkRectf;
47 class vtkPolyData;
49 
50 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
51 {
52 public:
53  vtkTypeMacro(vtkContextDevice2D, vtkObject);
54  void PrintSelf(ostream& os, vtkIndent indent) override;
55 
56  static vtkContextDevice2D* New();
57 
65  virtual void DrawPoly(
66  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
67 
74  virtual void DrawLines(float* f, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
75 
80  virtual void DrawPoints(
81  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
82 
90  virtual void DrawPointSprites(vtkImageData* sprite, float* points, int n,
91  unsigned char* colors = nullptr, int nc_comps = 0) = 0;
92 
104  virtual void DrawMarkers(int shape, bool highlight, float* points, int n,
105  unsigned char* colors = nullptr, int nc_comps = 0);
106 
110  virtual void DrawQuad(float*, int) { ; }
111 
115  virtual void DrawQuadStrip(float*, int) { ; }
116 
121  virtual void DrawPolygon(float* p, int n) { this->DrawColoredPolygon(p, n); }
122  virtual void DrawColoredPolygon(
123  float* points, int numPoints, unsigned char* colors = nullptr, int nc_comps = 0);
137  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
138  float startAngle, float stopAngle) = 0;
139 
146  virtual void DrawEllipticArc(
147  float x, float y, float rX, float rY, float startAngle, float stopAngle) = 0;
148 
152  virtual void DrawString(float* point, const vtkStdString& string) = 0;
153 
161  virtual void ComputeStringBounds(const vtkStdString& string, float bounds[4]) = 0;
162 
166  virtual void DrawString(float* point, const vtkUnicodeString& string) = 0;
167 
175  virtual void ComputeStringBounds(const vtkUnicodeString& string, float bounds[4]) = 0;
176 
182  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
183 
188  virtual void DrawMathTextString(float* point, const vtkStdString& string) = 0;
189 
193  virtual bool MathTextIsSupported();
194 
199  virtual void DrawImage(float p[2], float scale, vtkImageData* image) = 0;
200 
206  virtual void DrawImage(const vtkRectf& pos, vtkImageData* image) = 0;
207 
227  virtual void DrawPolyData(
228  float p[2], float scale, vtkPolyData* polyData, vtkUnsignedCharArray* colors, int scalarMode);
229 
235  virtual void ApplyPen(vtkPen* pen);
236 
238 
243  vtkGetObjectMacro(Pen, vtkPen);
245 
251  virtual void ApplyBrush(vtkBrush* brush);
252 
254 
258  vtkGetObjectMacro(Brush, vtkBrush);
260 
266  virtual void ApplyTextProp(vtkTextProperty* prop);
267 
269 
272  vtkGetObjectMacro(TextProp, vtkTextProperty);
274 
278  virtual void SetColor4(unsigned char color[4]) = 0;
279 
281  {
282  Nearest = 0x01,
283  Linear = 0x02,
284  Stretch = 0x04,
285  Repeat = 0x08
286  };
290  virtual void SetTexture(vtkImageData* image, int properties) = 0;
291 
295  virtual void SetPointSize(float size) = 0;
296 
300  virtual void SetLineWidth(float width) = 0;
301 
305  virtual void SetLineType(int type) = 0;
306 
310  virtual int GetWidth() { return this->Geometry[0]; }
311 
315  virtual int GetHeight() { return this->Geometry[1]; }
316 
320  virtual void SetMatrix(vtkMatrix3x3* m) = 0;
321 
325  virtual void GetMatrix(vtkMatrix3x3* m) = 0;
326 
330  virtual void MultiplyMatrix(vtkMatrix3x3* m) = 0;
331 
335  virtual void PushMatrix() = 0;
336 
340  virtual void PopMatrix() = 0;
341 
346  virtual void SetClipping(int* x) = 0;
347 
352  virtual void DisableClipping() { this->EnableClipping(false); }
353 
357  virtual void EnableClipping(bool enable) = 0;
358 
362  virtual void Begin(vtkViewport*) {}
363 
367  virtual void End() {}
368 
373  virtual bool GetBufferIdMode() const;
374 
382  virtual void BufferIdModeBegin(vtkAbstractContextBufferId* bufferId);
383 
391  virtual void BufferIdModeEnd();
392 
393  virtual void SetViewportSize(const vtkVector2i& size) { this->ViewportSize = size; }
394  vtkGetMacro(ViewportSize, vtkVector2i);
395 
396  virtual void SetViewportRect(const vtkRecti& rect) { this->ViewportRect = rect; }
397  vtkGetMacro(ViewportRect, vtkRecti);
398 
399 protected:
401  ~vtkContextDevice2D() override;
402 
406  int Geometry[2];
407 
412 
417 
419 
420  vtkPen* Pen; // Outlining
421  vtkBrush* Brush; // Fills
422  vtkTextProperty* TextProp; // Text property
423 
424 private:
425  vtkContextDevice2D(const vtkContextDevice2D&) = delete;
426  void operator=(const vtkContextDevice2D&) = delete;
427 };
428 
429 #endif // vtkContextDevice2D_h
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
virtual void SetViewportRect(const vtkRecti &rect)
abstract base class for most VTK objects
Definition: vtkObject.h:62
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:44
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:84
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:37
a simple class to control print indentation
Definition: vtkIndent.h:33
represent and manipulate 2D points
Definition: vtkPoints2D.h:33
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
vtkAbstractContextBufferId * BufferId
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:419
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:36
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:33
vtkTextProperty * TextProp
String class that stores Unicode text.