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 
26 #ifndef vtkContextDevice2D_h
27 #define vtkContextDevice2D_h
28 
29 #include "vtkRenderingContext2DModule.h" // For export macro
30 #include "vtkObject.h"
31 #include "vtkVector.h" // For vtkVector2i ivar
32 #include "vtkRect.h" // For vtkRecti ivar
33 #include "vtkRenderingCoreEnums.h" // For marker enum
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(float *points, int n,
66  unsigned char *colors = nullptr, int nc_comps = 0) = 0;
67 
74  virtual void DrawLines(float *f, int n, unsigned char *colors = nullptr,
75  int nc_comps = 0) = 0;
76 
81  virtual void DrawPoints(float *points, int n, unsigned char* colors = nullptr,
82  int nc_comps = 0) = 0;
83 
91  virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n,
92  unsigned char *colors = nullptr, int nc_comps = 0) = 0;
93 
105  virtual void DrawMarkers(int shape, bool highlight, float *points, int n,
106  unsigned char *colors = nullptr, int nc_comps = 0);
107 
111  virtual void DrawQuad(float *, int) { ; }
112 
116  virtual void DrawQuadStrip(float *, int) { ; }
117 
122  virtual void DrawPolygon(float *p, int n) { this->DrawColoredPolygon(p, n); }
123  virtual void DrawColoredPolygon(float *points, int numPoints,
124  unsigned char *colors = nullptr,
125  int nc_comps = 0);
139  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy,
140  float inRx, float inRy, float startAngle,
141  float stopAngle)=0;
142 
149  virtual void DrawEllipticArc(float x, float y, float rX, float rY,
150  float startAngle, float stopAngle)=0;
151 
155  virtual void DrawString(float *point, const vtkStdString &string) = 0;
156 
164  virtual void ComputeStringBounds(const vtkStdString &string,
165  float bounds[4]) = 0;
166 
170  virtual void DrawString(float *point, const vtkUnicodeString &string) = 0;
171 
179  virtual void ComputeStringBounds(const vtkUnicodeString &string,
180  float bounds[4]) = 0;
181 
187  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
188 
193  virtual void DrawMathTextString(float *point, const vtkStdString &string) = 0;
194 
198  virtual bool MathTextIsSupported();
199 
204  virtual void DrawImage(float p[2], float scale, vtkImageData *image) = 0;
205 
211  virtual void DrawImage(const vtkRectf& pos, vtkImageData *image) = 0;
212 
232  virtual void DrawPolyData(float p[2], float scale, vtkPolyData* polyData,
233  vtkUnsignedCharArray* colors, int scalarMode);
234 
240  virtual void ApplyPen(vtkPen *pen);
241 
243 
248  vtkGetObjectMacro(Pen, vtkPen);
250 
256  virtual void ApplyBrush(vtkBrush *brush);
257 
259 
263  vtkGetObjectMacro(Brush, vtkBrush);
265 
271  virtual void ApplyTextProp(vtkTextProperty *prop);
272 
274 
277  vtkGetObjectMacro(TextProp, vtkTextProperty);
279 
283  virtual void SetColor4(unsigned char color[4]) = 0;
284 
286  Nearest = 0x01,
287  Linear = 0x02,
288  Stretch = 0x04,
289  Repeat = 0x08
290  };
294  virtual void SetTexture(vtkImageData* image, int properties) = 0;
295 
299  virtual void SetPointSize(float size) = 0;
300 
304  virtual void SetLineWidth(float width) = 0;
305 
309  virtual void SetLineType(int type) = 0;
310 
314  virtual int GetWidth() { return this->Geometry[0]; }
315 
319  virtual int GetHeight() { return this->Geometry[1]; }
320 
324  virtual void SetMatrix(vtkMatrix3x3 *m) = 0;
325 
329  virtual void GetMatrix(vtkMatrix3x3 *m) = 0;
330 
334  virtual void MultiplyMatrix(vtkMatrix3x3 *m) = 0;
335 
339  virtual void PushMatrix() = 0;
340 
344  virtual void PopMatrix() = 0;
345 
350  virtual void SetClipping(int *x) = 0;
351 
356  virtual void DisableClipping() { this->EnableClipping(false); }
357 
361  virtual void EnableClipping(bool enable) = 0;
362 
366  virtual void Begin(vtkViewport*) { }
367 
371  virtual void End() { }
372 
377  virtual bool GetBufferIdMode() const;
378 
386  virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId);
387 
395  virtual void BufferIdModeEnd();
396 
397  virtual void SetViewportSize(const vtkVector2i &size)
398  {
399  this->ViewportSize = size;
400  }
401  vtkGetMacro(ViewportSize, vtkVector2i)
402 
403  virtual void SetViewportRect(const vtkRecti &rect)
404  {
405  this->ViewportRect = rect;
406  }
407  vtkGetMacro(ViewportRect, vtkRecti)
408 
409 protected:
411  ~vtkContextDevice2D() override;
412 
416  int Geometry[2];
417 
422 
427 
429 
430  vtkPen *Pen; // Outlining
431  vtkBrush *Brush; // Fills
432  vtkTextProperty *TextProp; // Text property
433 
434 private:
435  vtkContextDevice2D(const vtkContextDevice2D &) = delete;
436  void operator=(const vtkContextDevice2D &) = delete;
437 
438 };
439 
440 #endif //vtkContextDevice2D_h
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
abstract base class for most VTK objects
Definition: vtkObject.h:53
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:79
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:34
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:39
vtkAbstractContextBufferId * BufferId
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:405
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.