VTK  9.1.0
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 "vtkDeprecation.h" // for deprecation macros
30 #include "vtkObject.h"
31 #include "vtkRect.h" // For vtkRecti ivar
32 #include "vtkRenderingContext2DModule.h" // For export macro
33 #include "vtkRenderingCoreEnums.h" // For marker enum
34 #include "vtkVector.h" // For vtkVector2i ivar
35 
36 class vtkWindow;
37 class vtkViewport;
38 class vtkStdString;
39 class vtkUnicodeString;
40 class vtkTextProperty;
41 class vtkPoints2D;
42 class vtkImageData;
43 class vtkMatrix3x3;
45 class vtkPen;
46 class vtkBrush;
47 class vtkRectf;
48 class vtkPolyData;
50 
51 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
52 {
53 public:
54  vtkTypeMacro(vtkContextDevice2D, vtkObject);
55  void PrintSelf(ostream& os, vtkIndent indent) override;
56 
58 
66  virtual void DrawPoly(
67  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
68 
75  virtual void DrawLines(float* f, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
76 
81  virtual void DrawPoints(
82  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
83 
94  virtual void DrawPointSprites(vtkImageData* sprite, float* points, int n,
95  unsigned char* colors = nullptr, int nc_comps = 0) = 0;
96 
112  virtual void DrawMarkers(int shape, bool highlight, float* points, int n,
113  unsigned char* colors = nullptr, int nc_comps = 0);
114 
118  virtual void DrawQuad(float*, int) { ; }
119 
123  virtual void DrawQuadStrip(float*, int) { ; }
124 
129  virtual void DrawPolygon(float* p, int n) { this->DrawColoredPolygon(p, n); }
130  virtual void DrawColoredPolygon(
131  float* points, int numPoints, unsigned char* colors = nullptr, int nc_comps = 0);
145  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
146  float startAngle, float stopAngle) = 0;
147 
154  virtual void DrawEllipticArc(
155  float x, float y, float rX, float rY, float startAngle, float stopAngle) = 0;
156 
160  virtual void DrawString(float* point, const vtkStdString& string) = 0;
161 
169  virtual void ComputeStringBounds(const vtkStdString& string, float bounds[4]) = 0;
170 
174  VTK_DEPRECATED_IN_9_1_0("Use void DrawString(float* point, const vtkStdString& string)")
175  virtual void DrawString(float* point, const vtkUnicodeString& string) = 0;
176 
185  "Use void ComputeStringBounds(const vtkStdString& string, float bounds[4])")
186  virtual void ComputeStringBounds(const vtkUnicodeString& string, float bounds[4]) = 0;
187 
193  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
194 
199  virtual void DrawMathTextString(float* point, const vtkStdString& string) = 0;
200 
204  virtual bool MathTextIsSupported();
205 
210  virtual void DrawImage(float p[2], float scale, vtkImageData* image) = 0;
211 
217  virtual void DrawImage(const vtkRectf& pos, vtkImageData* image) = 0;
218 
238  virtual void DrawPolyData(
239  float p[2], float scale, vtkPolyData* polyData, vtkUnsignedCharArray* colors, int scalarMode);
240 
246  virtual void ApplyPen(vtkPen* pen);
247 
249 
254  vtkGetObjectMacro(Pen, vtkPen);
256 
262  virtual void ApplyBrush(vtkBrush* brush);
263 
265 
269  vtkGetObjectMacro(Brush, vtkBrush);
271 
277  virtual void ApplyTextProp(vtkTextProperty* prop);
278 
280 
283  vtkGetObjectMacro(TextProp, vtkTextProperty);
285 
289  virtual void SetColor4(unsigned char color[4]) = 0;
290 
292  {
293  Nearest = 0x01,
294  Linear = 0x02,
295  Stretch = 0x04,
296  Repeat = 0x08
297  };
301  virtual void SetTexture(vtkImageData* image, int properties) = 0;
302 
306  virtual void SetPointSize(float size) = 0;
307 
311  virtual void SetLineWidth(float width) = 0;
312 
316  virtual void SetLineType(int type) = 0;
317 
321  virtual int GetWidth() { return this->Geometry[0]; }
322 
326  virtual int GetHeight() { return this->Geometry[1]; }
327 
331  virtual void SetMatrix(vtkMatrix3x3* m) = 0;
332 
336  virtual void GetMatrix(vtkMatrix3x3* m) = 0;
337 
341  virtual void MultiplyMatrix(vtkMatrix3x3* m) = 0;
342 
346  virtual void PushMatrix() = 0;
347 
351  virtual void PopMatrix() = 0;
352 
357  virtual void SetClipping(int* x) = 0;
358 
363  virtual void DisableClipping() { this->EnableClipping(false); }
364 
368  virtual void EnableClipping(bool enable) = 0;
369 
373  virtual void Begin(vtkViewport*) {}
374 
378  virtual void End() {}
379 
384  virtual bool GetBufferIdMode() const;
385 
394 
402  virtual void BufferIdModeEnd();
403 
404  virtual void SetViewportSize(const vtkVector2i& size) { this->ViewportSize = size; }
405  vtkGetMacro(ViewportSize, vtkVector2i);
406 
407  virtual void SetViewportRect(const vtkRecti& rect) { this->ViewportRect = rect; }
408  vtkGetMacro(ViewportRect, vtkRecti);
409 
410 protected:
413 
417  int Geometry[2];
418 
423 
428 
430 
431  vtkPen* Pen; // Outlining
432  vtkBrush* Brush; // Fills
433  vtkTextProperty* TextProp; // Text property
434 
435 private:
436  vtkContextDevice2D(const vtkContextDevice2D&) = delete;
437  void operator=(const vtkContextDevice2D&) = delete;
438 };
439 
440 #endif // vtkContextDevice2D_h
2D array of ids, used for picking.
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:38
Abstract class for drawing 2D primitives.
virtual void SetMatrix(vtkMatrix3x3 *m)=0
Set the model view matrix for the display.
virtual void ComputeStringBounds(const vtkStdString &string, float bounds[4])=0
Compute the bounds of the supplied string.
virtual void SetPointSize(float size)=0
Set the point size for glyphs/sprites.
virtual void DrawPoly(float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw a poly line using the points - fastest code path due to memory layout of the coordinates.
virtual void SetLineType(int type)=0
Set the line type type (using anonymous enum in vtkPen).
virtual void SetTexture(vtkImageData *image, int properties)=0
Set the texture for the device, it is used to fill the polygons.
virtual void DrawString(float *point, const vtkStdString &string)=0
Draw some text to the screen.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId)
Start BufferId creation Mode.
virtual void DrawMarkers(int shape, bool highlight, float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)
Draw a series of markers centered at the points supplied.
virtual void End()
End drawing, clean up the view.
virtual void DrawPoints(float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw a series of points - fastest code path due to memory layout of the coordinates.
virtual void Begin(vtkViewport *)
Begin drawing, pass in the viewport to set up the view.
vtkVector2i ViewportSize
Store the size of the total viewport.
virtual bool GetBufferIdMode() const
Tell if the device context is in BufferId creation mode.
vtkTextProperty * TextProp
virtual void PopMatrix()=0
Pop the current matrix off of the stack.
virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw a series of point sprites, images centred at the points supplied.
virtual void SetViewportSize(const vtkVector2i &size)
virtual void DrawColoredPolygon(float *points, int numPoints, unsigned char *colors=nullptr, int nc_comps=0)
Draw a polygon using the specified number of points.
vtkAbstractContextBufferId * BufferId
vtkRecti ViewportRect
Store our origin and size in the total viewport.
virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy, float startAngle, float stopAngle)=0
Draw an elliptic wedge with center at x, y, outer radii outRx, outRy, inner radii inRx,...
virtual void GetMatrix(vtkMatrix3x3 *m)=0
Set the model view matrix for the display.
~vtkContextDevice2D() override
virtual void DrawQuadStrip(float *, int)
Draw a quad using the specified number of points.
virtual void DrawPolygon(float *p, int n)
Draw a polygon using the specified number of points.
virtual void DrawQuad(float *, int)
Draw a quad using the specified number of points.
virtual void DisableClipping()
Disable clipping of the display.
virtual void SetViewportRect(const vtkRecti &rect)
virtual int GetWidth()
Get the width of the device in pixels.
virtual void BufferIdModeEnd()
Finalize BufferId creation Mode.
virtual void DrawLines(float *f, int n, unsigned char *colors=nullptr, int nc_comps=0)=0
Draw lines using the points - memory layout is as follows: l1p1,l1p2,l2p1,l2p2...
virtual int GetHeight()
Get the width of the device in pixels.
virtual void EnableClipping(bool enable)=0
Enable or disable the clipping of the scene.
virtual void SetLineWidth(float width)=0
Set the line width.
virtual void DrawEllipticArc(float x, float y, float rX, float rY, float startAngle, float stopAngle)=0
Draw an elliptic arc with center at x,y with radii rX and rY between angles startAngle and stopAngle ...
virtual void SetClipping(int *x)=0
Supply an int array of length 4 with x1, y1, width, height specifying clipping region for the device ...
virtual void MultiplyMatrix(vtkMatrix3x3 *m)=0
Multiply the current model view matrix by the supplied one.
virtual void PushMatrix()=0
Push the current matrix onto the stack.
static vtkContextDevice2D * New()
topologically and geometrically regular array of data
Definition: vtkImageData.h:48
a simple class to control print indentation
Definition: vtkIndent.h:34
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:34
abstract base class for most VTK objects
Definition: vtkObject.h:63
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:37
represent and manipulate 2D points
Definition: vtkPoints2D.h:34
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:36
represent text properties.
String class that stores Unicode text.
dynamic, self-adjusting array of unsigned char
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:419
abstract specification for Viewports
Definition: vtkViewport.h:47
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
@ point
Definition: vtkX3D.h:242
@ points
Definition: vtkX3D.h:452
@ startAngle
Definition: vtkX3D.h:492
@ scale
Definition: vtkX3D.h:235
@ type
Definition: vtkX3D.h:522
@ color
Definition: vtkX3D.h:227
@ image
Definition: vtkX3D.h:380
@ size
Definition: vtkX3D.h:259
#define VTK_DEPRECATED_IN_9_1_0(reason)