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:
383 
387  int Geometry[2];
388 
393 
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.
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:39
represent and manipulate 2D points
Definition: vtkPoints2D.h:36
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
vtkAbstractContextBufferId * BufferId
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.
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
String class that stores Unicode text.