VTK  9.2.20220926
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 
29 #ifndef vtkContextDevice2D_h
30 #define vtkContextDevice2D_h
31 
32 #include "vtkObject.h"
33 #include "vtkRect.h" // For vtkRecti ivar
34 #include "vtkRenderingContext2DModule.h" // For export macro
35 #include "vtkRenderingCoreEnums.h" // For marker enum
36 #include "vtkVector.h" // For vtkVector2i ivar
37 
38 VTK_ABI_NAMESPACE_BEGIN
39 class vtkWindow;
40 class vtkViewport;
41 class vtkStdString;
42 class vtkTextProperty;
43 class vtkPoints2D;
44 class vtkImageData;
45 class vtkMatrix3x3;
47 class vtkPen;
48 class vtkBrush;
49 class vtkRectf;
50 class vtkPolyData;
52 
53 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
54 {
55 public:
56  vtkTypeMacro(vtkContextDevice2D, vtkObject);
57  void PrintSelf(ostream& os, vtkIndent indent) override;
58 
60 
68  virtual void DrawPoly(
69  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
70 
77  virtual void DrawLines(float* f, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
78 
83  virtual void DrawPoints(
84  float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
85 
96  virtual void DrawPointSprites(vtkImageData* sprite, float* points, int n,
97  unsigned char* colors = nullptr, int nc_comps = 0) = 0;
98 
114  virtual void DrawMarkers(int shape, bool highlight, float* points, int n,
115  unsigned char* colors = nullptr, int nc_comps = 0);
116 
120  virtual void DrawQuad(float*, int) {}
121 
125  virtual void DrawQuadStrip(float*, int) {}
126 
131  virtual void DrawPolygon(float* p, int n) { this->DrawColoredPolygon(p, n); }
132  virtual void DrawColoredPolygon(
133  float* points, int numPoints, unsigned char* colors = nullptr, int nc_comps = 0);
147  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
148  float startAngle, float stopAngle) = 0;
149 
156  virtual void DrawEllipticArc(
157  float x, float y, float rX, float rY, float startAngle, float stopAngle) = 0;
158 
162  virtual void DrawString(float* point, const vtkStdString& string) = 0;
163 
171  virtual void ComputeStringBounds(const vtkStdString& string, float bounds[4]) = 0;
172 
178  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
179 
184  virtual void DrawMathTextString(float* point, const vtkStdString& string) = 0;
185 
189  virtual bool MathTextIsSupported();
190 
195  virtual void DrawImage(float p[2], float scale, vtkImageData* image) = 0;
196 
202  virtual void DrawImage(const vtkRectf& pos, vtkImageData* image) = 0;
203 
223  virtual void DrawPolyData(
224  float p[2], float scale, vtkPolyData* polyData, vtkUnsignedCharArray* colors, int scalarMode);
225 
231  virtual void ApplyPen(vtkPen* pen);
232 
234 
239  vtkGetObjectMacro(Pen, vtkPen);
241 
247  virtual void ApplyBrush(vtkBrush* brush);
248 
250 
254  vtkGetObjectMacro(Brush, vtkBrush);
256 
262  virtual void ApplyTextProp(vtkTextProperty* prop);
263 
265 
268  vtkGetObjectMacro(TextProp, vtkTextProperty);
270 
274  virtual void SetColor4(unsigned char color[4]) = 0;
275 
277  {
278  Nearest = 0x01,
279  Linear = 0x02,
280  Stretch = 0x04,
281  Repeat = 0x08
282  };
286  virtual void SetTexture(vtkImageData* image, int properties) = 0;
287 
291  virtual void SetPointSize(float size) = 0;
292 
296  virtual void SetLineWidth(float width) = 0;
297 
301  virtual void SetLineType(int type) = 0;
302 
306  virtual int GetWidth() { return this->Geometry[0]; }
307 
311  virtual int GetHeight() { return this->Geometry[1]; }
312 
316  virtual void SetMatrix(vtkMatrix3x3* m) = 0;
317 
321  virtual void GetMatrix(vtkMatrix3x3* m) = 0;
322 
326  virtual void MultiplyMatrix(vtkMatrix3x3* m) = 0;
327 
331  virtual void PushMatrix() = 0;
332 
336  virtual void PopMatrix() = 0;
337 
342  virtual void SetClipping(int* x) = 0;
343 
348  virtual void DisableClipping() { this->EnableClipping(false); }
349 
353  virtual void EnableClipping(bool enable) = 0;
354 
358  virtual void Begin(vtkViewport*) {}
359 
363  virtual void End() {}
364 
369  virtual bool GetBufferIdMode() const;
370 
379 
387  virtual void BufferIdModeEnd();
388 
389  virtual void SetViewportSize(const vtkVector2i& size) { this->ViewportSize = size; }
390  vtkGetMacro(ViewportSize, vtkVector2i);
391 
392  virtual void SetViewportRect(const vtkRecti& rect) { this->ViewportRect = rect; }
393  vtkGetMacro(ViewportRect, vtkRecti);
394 
395 protected:
398 
402  int Geometry[2];
403 
408 
413 
415 
416  vtkPen* Pen; // Outlining
417  vtkBrush* Brush; // Fills
418  vtkTextProperty* TextProp; // Text property
419 
420 private:
421  vtkContextDevice2D(const vtkContextDevice2D&) = delete;
422  void operator=(const vtkContextDevice2D&) = delete;
423 };
424 
426 #endif // vtkContextDevice2D_h
2D array of ids, used for picking.
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:101
Abstract class for drawing 2D primitives.
virtual void SetMatrix(vtkMatrix3x3 *m)=0
Set the model view matrix for the display.
virtual void DrawImage(const vtkRectf &pos, vtkImageData *image)=0
Draw the supplied image at the given position.
virtual void ComputeJustifiedStringBounds(const char *string, float bounds[4])=0
Compute the bounds of the supplied string while taking into account the justification of the currentl...
virtual void ComputeStringBounds(const vtkStdString &string, float bounds[4])=0
Compute the bounds of the supplied string.
virtual void ApplyPen(vtkPen *pen)
Apply the supplied pen which controls the outlines of shapes, as well as lines, points and related pr...
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.
virtual void DrawImage(float p[2], float scale, vtkImageData *image)=0
Draw the supplied image at the given x, y (p[0], p[1]) (bottom corner), scaled by scale (1....
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 ApplyBrush(vtkBrush *brush)
Apply the supplied brush which controls the outlines of shapes, as well as lines, points and related ...
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 SetColor4(unsigned char color[4])=0
Set the color for the device using unsigned char of length 4, RGBA.
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 DrawPolyData(float p[2], float scale, vtkPolyData *polyData, vtkUnsignedCharArray *colors, int scalarMode)
Draw the supplied PolyData at the given x, y (p[0], p[1]) (bottom corner), scaled by scale (1....
virtual void SetViewportRect(const vtkRecti &rect)
virtual void ApplyTextProp(vtkTextProperty *prop)
Apply the supplied text property which controls how text is rendered.
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 bool MathTextIsSupported()
Return true if MathText rendering available on this device.
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()
virtual void DrawMathTextString(float *point, const vtkStdString &string)=0
Draw text using MathText markup for mathematical equations.
topologically and geometrically regular array of data
Definition: vtkImageData.h:164
a simple class to control print indentation
Definition: vtkIndent.h:120
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:67
abstract base class for most VTK objects
Definition: vtkObject.h:83
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition: vtkPen.h:140
represent and manipulate 2D points
Definition: vtkPoints2D.h:38
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:201
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:110
represent text properties.
dynamic, self-adjusting array of unsigned char
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:482
abstract specification for Viewports
Definition: vtkViewport.h:57
window superclass for vtkRenderWindow
Definition: vtkWindow.h:40
@ point
Definition: vtkX3D.h:248
@ points
Definition: vtkX3D.h:458
@ startAngle
Definition: vtkX3D.h:498
@ scale
Definition: vtkX3D.h:241
@ type
Definition: vtkX3D.h:528
@ color
Definition: vtkX3D.h:233
@ image
Definition: vtkX3D.h:386
@ size
Definition: vtkX3D.h:265