VTK  9.2.6
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 "vtkObject.h"
33 #include "vtkRect.h" // For vtkRecti ivar
34 #include "vtkRenderingContext2DModule.h" // For export macro
35 #include "vtkRenderingCoreEnums.h" // For marker enum
36 #include "vtkVector.h" // For vtkVector2i ivar
37 
38 class vtkWindow;
39 class vtkViewport;
40 class vtkStdString;
41 class vtkTextProperty;
42 class vtkPoints2D;
43 class vtkImageData;
44 class vtkMatrix3x3;
46 class vtkPen;
47 class vtkBrush;
48 class vtkRectf;
49 class vtkPolyData;
51 
52 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
53 {
54 public:
55  vtkTypeMacro(vtkContextDevice2D, vtkObject);
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
58  static vtkContextDevice2D* New();
59 
67  virtual void DrawPoly(
68  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
69 
76  virtual void DrawLines(float* f, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
77 
82  virtual void DrawPoints(
83  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
84 
95  virtual void DrawPointSprites(vtkImageData* sprite, float* points, int n,
96  unsigned char* colors = nullptr, int nc_comps = 0) = 0;
97 
113  virtual void DrawMarkers(int shape, bool highlight, float* points, int n,
114  unsigned char* colors = nullptr, int nc_comps = 0);
115 
119  virtual void DrawQuad(float*, int) { ; }
120 
124  virtual void DrawQuadStrip(float*, int) { ; }
125 
130  virtual void DrawPolygon(float* p, int n) { this->DrawColoredPolygon(p, n); }
131  virtual void DrawColoredPolygon(
132  float* points, int numPoints, unsigned char* colors = nullptr, int nc_comps = 0);
146  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
147  float startAngle, float stopAngle) = 0;
148 
155  virtual void DrawEllipticArc(
156  float x, float y, float rX, float rY, float startAngle, float stopAngle) = 0;
157 
161  virtual void DrawString(float* point, const vtkStdString& string) = 0;
162 
170  virtual void ComputeStringBounds(const vtkStdString& string, float bounds[4]) = 0;
171 
177  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
178 
183  virtual void DrawMathTextString(float* point, const vtkStdString& string) = 0;
184 
188  virtual bool MathTextIsSupported();
189 
194  virtual void DrawImage(float p[2], float scale, vtkImageData* image) = 0;
195 
201  virtual void DrawImage(const vtkRectf& pos, vtkImageData* image) = 0;
202 
222  virtual void DrawPolyData(
223  float p[2], float scale, vtkPolyData* polyData, vtkUnsignedCharArray* colors, int scalarMode);
224 
230  virtual void ApplyPen(vtkPen* pen);
231 
233 
238  vtkGetObjectMacro(Pen, vtkPen);
240 
246  virtual void ApplyBrush(vtkBrush* brush);
247 
249 
253  vtkGetObjectMacro(Brush, vtkBrush);
255 
261  virtual void ApplyTextProp(vtkTextProperty* prop);
262 
264 
267  vtkGetObjectMacro(TextProp, vtkTextProperty);
269 
273  virtual void SetColor4(unsigned char color[4]) = 0;
274 
276  {
277  Nearest = 0x01,
278  Linear = 0x02,
279  Stretch = 0x04,
280  Repeat = 0x08
281  };
285  virtual void SetTexture(vtkImageData* image, int properties) = 0;
286 
290  virtual void SetPointSize(float size) = 0;
291 
295  virtual void SetLineWidth(float width) = 0;
296 
300  virtual void SetLineType(int type) = 0;
301 
305  virtual int GetWidth() { return this->Geometry[0]; }
306 
310  virtual int GetHeight() { return this->Geometry[1]; }
311 
315  virtual void SetMatrix(vtkMatrix3x3* m) = 0;
316 
320  virtual void GetMatrix(vtkMatrix3x3* m) = 0;
321 
325  virtual void MultiplyMatrix(vtkMatrix3x3* m) = 0;
326 
330  virtual void PushMatrix() = 0;
331 
335  virtual void PopMatrix() = 0;
336 
341  virtual void SetClipping(int* x) = 0;
342 
347  virtual void DisableClipping() { this->EnableClipping(false); }
348 
352  virtual void EnableClipping(bool enable) = 0;
353 
357  virtual void Begin(vtkViewport*) {}
358 
362  virtual void End() {}
363 
368  virtual bool GetBufferIdMode() const;
369 
377  virtual void BufferIdModeBegin(vtkAbstractContextBufferId* bufferId);
378 
386  virtual void BufferIdModeEnd();
387 
388  virtual void SetViewportSize(const vtkVector2i& size) { this->ViewportSize = size; }
389  vtkGetMacro(ViewportSize, vtkVector2i);
390 
391  virtual void SetViewportRect(const vtkRecti& rect) { this->ViewportRect = rect; }
392  vtkGetMacro(ViewportRect, vtkRecti);
393 
394 protected:
396  ~vtkContextDevice2D() override;
397 
401  int Geometry[2];
402 
407 
412 
414 
415  vtkPen* Pen; // Outlining
416  vtkBrush* Brush; // Fills
417  vtkTextProperty* TextProp; // Text property
418 
419 private:
420  vtkContextDevice2D(const vtkContextDevice2D&) = delete;
421  void operator=(const vtkContextDevice2D&) = delete;
422 };
423 
424 #endif // vtkContextDevice2D_h
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:38
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:55
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:90
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:38
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:53
vtkAbstractContextBufferId * BufferId
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:421
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