VTK  9.0.20200809
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
vtkBrush
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:37
vtkPoints2D
represent and manipulate 2D points
Definition: vtkPoints2D.h:33
vtkContextDevice2D::DrawQuadStrip
virtual void DrawQuadStrip(float *, int)
Draw a quad using the specified number of points.
Definition: vtkContextDevice2D.h:115
vtkX3D::scale
Definition: vtkX3D.h:235
vtkContextDevice2D::GetHeight
virtual int GetHeight()
Get the width of the device in pixels.
Definition: vtkContextDevice2D.h:315
vtkContextDevice2D::End
virtual void End()
End drawing, clean up the view.
Definition: vtkContextDevice2D.h:367
vtkContextDevice2D::Pen
vtkPen * Pen
Definition: vtkContextDevice2D.h:420
vtkX3D::type
Definition: vtkX3D.h:522
vtkContextDevice2D::DrawQuad
virtual void DrawQuad(float *, int)
Draw a quad using the specified number of points.
Definition: vtkContextDevice2D.h:110
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:380
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:35
vtkContextDevice2D::SetViewportSize
virtual void SetViewportSize(const vtkVector2i &size)
Definition: vtkContextDevice2D.h:393
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkVector.h
vtkContextDevice2D::ViewportRect
vtkRecti ViewportRect
Store our origin and size in the total viewport.
Definition: vtkContextDevice2D.h:416
vtkRenderingCoreEnums.h
vtkMatrix3x3
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:33
vtkContextDevice2D::BufferId
vtkAbstractContextBufferId * BufferId
Definition: vtkContextDevice2D.h:418
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:38
vtkContextDevice2D::GetWidth
virtual int GetWidth()
Get the width of the device in pixels.
Definition: vtkContextDevice2D.h:310
vtkContextDevice2D::DrawPolygon
virtual void DrawPolygon(float *p, int n)
Draw a polygon using the specified number of points.
Definition: vtkContextDevice2D.h:121
vtkAbstractContextBufferId
2D array of ids, used for picking.
Definition: vtkAbstractContextBufferId.h:46
vtkX3D::color
Definition: vtkX3D.h:227
vtkX3D::points
Definition: vtkX3D.h:452
vtkX3D::point
Definition: vtkX3D.h:242
vtkContextDevice2D::DisableClipping
virtual void DisableClipping()
Disable clipping of the display.
Definition: vtkContextDevice2D.h:352
vtkRect.h
vtkContextDevice2D::ViewportSize
vtkVector2i ViewportSize
Store the size of the total viewport.
Definition: vtkContextDevice2D.h:411
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkUnicodeString
String class that stores Unicode text.
Definition: vtkUnicodeString.h:69
vtkX3D::size
Definition: vtkX3D.h:259
vtkContextDevice2D::Brush
vtkBrush * Brush
Definition: vtkContextDevice2D.h:421
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:492
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:44
vtkObject.h
vtkContextDevice2D::TextProp
vtkTextProperty * TextProp
Definition: vtkContextDevice2D.h:422
vtkContextDevice2D
Abstract class for drawing 2D primitives.
Definition: vtkContextDevice2D.h:50
vtkTextProperty
represent text properties.
Definition: vtkTextProperty.h:33
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:362
vtkContextDevice2D::TextureProperty
TextureProperty
Definition: vtkContextDevice2D.h:280
vtkRecti
Definition: vtkRect.h:312
vtkContextDevice2D::SetViewportRect
virtual void SetViewportRect(const vtkRecti &rect)
Definition: vtkContextDevice2D.h:396
vtkPen
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:36
vtkVector2i
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:419
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
vtkRectf
Definition: vtkRect.h:326