VTK  9.2.5
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
38class vtkWindow;
39class vtkViewport;
40class vtkStdString;
41class vtkTextProperty;
42class vtkPoints2D;
43class vtkImageData;
44class vtkMatrix3x3;
46class vtkPen;
47class vtkBrush;
48class vtkRectf;
49class vtkPolyData;
51
52class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
53{
54public:
56 void PrintSelf(ostream& os, vtkIndent indent) override;
57
59
67 virtual void DrawPoly(
68 float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
69
76 virtual void DrawLines(float* f, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
77
82 virtual void DrawPoints(
83 float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
84
95 virtual void DrawPointSprites(vtkImageData* sprite, float* points, int n,
96 unsigned char* colors = nullptr, int nc_comps = 0) = 0;
97
113 virtual void DrawMarkers(int shape, bool highlight, float* points, int n,
114 unsigned char* colors = nullptr, int nc_comps = 0);
115
119 virtual void DrawQuad(float*, int) { ; }
120
124 virtual void DrawQuadStrip(float*, int) { ; }
125
130 virtual void DrawPolygon(float* p, int n) { this->DrawColoredPolygon(p, n); }
131 virtual void DrawColoredPolygon(
132 float* points, int numPoints, unsigned char* colors = nullptr, int nc_comps = 0);
146 virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
147 float startAngle, float stopAngle) = 0;
148
155 virtual void DrawEllipticArc(
156 float x, float y, float rX, float rY, float startAngle, float stopAngle) = 0;
157
161 virtual void DrawString(float* point, const vtkStdString& string) = 0;
162
170 virtual void ComputeStringBounds(const vtkStdString& string, float bounds[4]) = 0;
171
177 virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
178
183 virtual void DrawMathTextString(float* point, const vtkStdString& string) = 0;
184
188 virtual bool MathTextIsSupported();
189
194 virtual void DrawImage(float p[2], float scale, vtkImageData* image) = 0;
195
201 virtual void DrawImage(const vtkRectf& pos, vtkImageData* image) = 0;
202
222 virtual void DrawPolyData(
223 float p[2], float scale, vtkPolyData* polyData, vtkUnsignedCharArray* colors, int scalarMode);
224
230 virtual void ApplyPen(vtkPen* pen);
231
233
238 vtkGetObjectMacro(Pen, vtkPen);
240
246 virtual void ApplyBrush(vtkBrush* brush);
247
249
253 vtkGetObjectMacro(Brush, vtkBrush);
255
261 virtual void ApplyTextProp(vtkTextProperty* prop);
262
264
267 vtkGetObjectMacro(TextProp, vtkTextProperty);
269
273 virtual void SetColor4(unsigned char color[4]) = 0;
274
276 {
277 Nearest = 0x01,
278 Linear = 0x02,
279 Stretch = 0x04,
280 Repeat = 0x08
281 };
285 virtual void SetTexture(vtkImageData* image, int properties) = 0;
286
290 virtual void SetPointSize(float size) = 0;
291
295 virtual void SetLineWidth(float width) = 0;
296
300 virtual void SetLineType(int type) = 0;
301
305 virtual int GetWidth() { return this->Geometry[0]; }
306
310 virtual int GetHeight() { return this->Geometry[1]; }
311
315 virtual void SetMatrix(vtkMatrix3x3* m) = 0;
316
320 virtual void GetMatrix(vtkMatrix3x3* m) = 0;
321
325 virtual void MultiplyMatrix(vtkMatrix3x3* m) = 0;
326
330 virtual void PushMatrix() = 0;
331
335 virtual void PopMatrix() = 0;
336
341 virtual void SetClipping(int* x) = 0;
342
347 virtual void DisableClipping() { this->EnableClipping(false); }
348
352 virtual void EnableClipping(bool enable) = 0;
353
357 virtual void Begin(vtkViewport*) {}
358
362 virtual void End() {}
363
368 virtual bool GetBufferIdMode() const;
369
378
386 virtual void BufferIdModeEnd();
387
388 virtual void SetViewportSize(const vtkVector2i& size) { this->ViewportSize = size; }
389 vtkGetMacro(ViewportSize, vtkVector2i);
390
391 virtual void SetViewportRect(const vtkRecti& rect) { this->ViewportRect = rect; }
392 vtkGetMacro(ViewportRect, vtkRecti);
393
394protected:
397
401 int Geometry[2];
402
407
412
414
415 vtkPen* Pen; // Outlining
416 vtkBrush* Brush; // Fills
417 vtkTextProperty* TextProp; // Text property
418
419private:
420 vtkContextDevice2D(const vtkContextDevice2D&) = delete;
421 void operator=(const vtkContextDevice2D&) = delete;
422};
423
424#endif // vtkContextDevice2D_h
2D array of ids, used for picking.
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:41
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
static vtkContextDevice2D * New()
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... The lines will be c...
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.
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:54
a simple class to control print indentation
Definition: vtkIndent.h:40
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:37
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:40
represent and manipulate 2D points
Definition: vtkPoints2D.h:37
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:91
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:39
represent text properties.
dynamic, self-adjusting array of unsigned char
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:422
abstract specification for Viewports
Definition: vtkViewport.h:56
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39