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 
48 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
49 {
50 public:
51  vtkTypeMacro(vtkContextDevice2D, vtkObject);
52  virtual void PrintSelf(ostream &os, vtkIndent indent);
53 
54  static vtkContextDevice2D * New();
55 
63  virtual void DrawPoly(float *points, int n,
64  unsigned char *colors = 0, int nc_comps = 0) = 0;
65 
72  virtual void DrawLines(float *f, int n, unsigned char *colors = 0,
73  int nc_comps = 0) = 0;
74 
79  virtual void DrawPoints(float *points, int n, unsigned char* colors = 0,
80  int nc_comps = 0) = 0;
81 
89  virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n,
90  unsigned char *colors = 0, int nc_comps = 0) = 0;
91 
103  virtual void DrawMarkers(int shape, bool highlight, float *points, int n,
104  unsigned char *colors = 0, int nc_comps = 0);
105 
109  virtual void DrawQuad(float *, int) { ; }
110 
114  virtual void DrawQuadStrip(float *, int) { ; }
115 
119  virtual void DrawPolygon(float *, int) { ; }
120 
132  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy,
133  float inRx, float inRy, float startAngle,
134  float stopAngle)=0;
135 
142  virtual void DrawEllipticArc(float x, float y, float rX, float rY,
143  float startAngle, float stopAngle)=0;
144 
148  virtual void DrawString(float *point, const vtkStdString &string) = 0;
149 
157  virtual void ComputeStringBounds(const vtkStdString &string,
158  float bounds[4]) = 0;
159 
163  virtual void DrawString(float *point, const vtkUnicodeString &string) = 0;
164 
172  virtual void ComputeStringBounds(const vtkUnicodeString &string,
173  float bounds[4]) = 0;
174 
180  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
181 
186  virtual void DrawMathTextString(float *point, const vtkStdString &string) = 0;
187 
191  virtual bool MathTextIsSupported();
192 
197  virtual void DrawImage(float p[2], float scale, vtkImageData *image) = 0;
198 
204  virtual void DrawImage(const vtkRectf& pos, vtkImageData *image) = 0;
205 
211  virtual void ApplyPen(vtkPen *pen);
212 
214 
219  vtkGetObjectMacro(Pen, vtkPen);
221 
227  virtual void ApplyBrush(vtkBrush *brush);
228 
230 
234  vtkGetObjectMacro(Brush, vtkBrush);
236 
242  virtual void ApplyTextProp(vtkTextProperty *prop);
243 
245 
248  vtkGetObjectMacro(TextProp, vtkTextProperty);
250 
254  virtual void SetColor4(unsigned char color[4]) = 0;
255 
257  Nearest = 0x01,
258  Linear = 0x02,
259  Stretch = 0x04,
260  Repeat = 0x08
261  };
265  virtual void SetTexture(vtkImageData* image, int properties) = 0;
266 
270  virtual void SetPointSize(float size) = 0;
271 
275  virtual void SetLineWidth(float width) = 0;
276 
280  virtual void SetLineType(int type) = 0;
281 
285  virtual int GetWidth() { return this->Geometry[0]; }
286 
290  virtual int GetHeight() { return this->Geometry[1]; }
291 
295  virtual void SetMatrix(vtkMatrix3x3 *m) = 0;
296 
300  virtual void GetMatrix(vtkMatrix3x3 *m) = 0;
301 
305  virtual void MultiplyMatrix(vtkMatrix3x3 *m) = 0;
306 
310  virtual void PushMatrix() = 0;
311 
315  virtual void PopMatrix() = 0;
316 
321  virtual void SetClipping(int *x) = 0;
322 
327  virtual void DisableClipping() { this->EnableClipping(false); }
328 
332  virtual void EnableClipping(bool enable) = 0;
333 
337  virtual void Begin(vtkViewport*) { }
338 
342  virtual void End() { }
343 
348  virtual bool GetBufferIdMode() const;
349 
357  virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId);
358 
366  virtual void BufferIdModeEnd();
367 
368  virtual void SetViewportSize(const vtkVector2i &size)
369  {
370  this->ViewportSize = size;
371  }
372  vtkGetMacro(ViewportSize, vtkVector2i)
373 
374  virtual void SetViewportRect(const vtkRecti &rect)
375  {
376  this->ViewportRect = rect;
377  }
378  vtkGetMacro(ViewportRect, vtkRecti)
379 
380 protected:
382  ~vtkContextDevice2D();
383 
387  int Geometry[2];
388 
392  vtkVector2i ViewportSize;
393 
397  vtkRecti ViewportRect;
398 
400 
401  vtkPen *Pen; // Outlining
402  vtkBrush *Brush; // Fills
403  vtkTextProperty *TextProp; // Text property
404 
405 private:
406  vtkContextDevice2D(const vtkContextDevice2D &) VTK_DELETE_FUNCTION;
407  void operator=(const vtkContextDevice2D &) VTK_DELETE_FUNCTION;
408 
409 };
410 
411 #endif //vtkContextDevice2D_h
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
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 int GetHeight()
Get the width of the device in pixels.
virtual void Begin(vtkViewport *)
Begin drawing, pass in the viewport to set up the view.
virtual void DrawPolygon(float *, int)
Draw a polygon using the specified number of points.
virtual void DisableClipping()
Disable clipping of the display.
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:39
represent and manipulate 2D points
Definition: vtkPoints2D.h:36
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:327
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.
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.
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
String class that stores Unicode text.