VTK  9.4.20241226
vtkContextDevice2D.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
17#ifndef vtkContextDevice2D_h
18#define vtkContextDevice2D_h
19
20#include "vtkObject.h"
21#include "vtkRect.h" // For vtkRecti ivar
22#include "vtkRenderingContext2DModule.h" // For export macro
23#include "vtkRenderingCoreEnums.h" // For marker enum
24#include "vtkVector.h" // For vtkVector2i ivar
25
26#include <cstdint> // For std::uintptr_t
27
28VTK_ABI_NAMESPACE_BEGIN
29class vtkWindow;
30class vtkViewport;
31class vtkStdString;
32class vtkTextProperty;
33class vtkPoints2D;
34class vtkImageData;
35class vtkMatrix3x3;
37class vtkPen;
38class vtkBrush;
39class vtkRectf;
40class vtkPolyData;
42
43class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
44{
45public:
47 void PrintSelf(ostream& os, vtkIndent indent) override;
48
50
58 virtual void DrawPoly(
59 float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
60
67 virtual void DrawLines(float* f, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
68
73 virtual void DrawPoints(
74 float* points, int n, unsigned char* colors = nullptr, int nc_comps = 0) = 0;
75 virtual void DrawPoints(vtkDataArray* positions, vtkUnsignedCharArray* colors,
76 std::uintptr_t vtkNotUsed(cacheIdentifier));
77
88 virtual void DrawPointSprites(vtkImageData* sprite, float* points, int n,
89 unsigned char* colors = nullptr, int nc_comps = 0) = 0;
90 virtual void DrawPointSprites(vtkImageData* sprite, vtkDataArray* positions,
91 vtkUnsignedCharArray* colors, std::uintptr_t vtkNotUsed(cacheIdentifier));
92
108 virtual void DrawMarkers(int shape, bool highlight, float* points, int n,
109 unsigned char* colors = nullptr, int nc_comps = 0);
110 virtual void DrawMarkers(int shape, bool highlight, vtkDataArray* positions,
111 vtkUnsignedCharArray* colors, std::uintptr_t vtkNotUsed(cacheIdentifier));
112
116 virtual void DrawQuad(float*, int) {}
117
121 virtual void DrawQuadStrip(float*, int) {}
122
127 virtual void DrawPolygon(float* p, int n) { this->DrawColoredPolygon(p, n); }
128 virtual void DrawColoredPolygon(
129 float* points, int numPoints, unsigned char* colors = nullptr, int nc_comps = 0);
143 virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
144 float startAngle, float stopAngle) = 0;
145
152 virtual void DrawEllipticArc(
153 float x, float y, float rX, float rY, float startAngle, float stopAngle) = 0;
154
158 virtual void DrawString(float* point, const vtkStdString& string) = 0;
159
167 virtual void ComputeStringBounds(const vtkStdString& string, float bounds[4]) = 0;
168
174 virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]) = 0;
175
180 virtual void DrawMathTextString(float* point, const vtkStdString& string) = 0;
181
185 virtual bool MathTextIsSupported();
186
191 virtual void DrawImage(float p[2], float scale, vtkImageData* image) = 0;
192
198 virtual void DrawImage(const vtkRectf& pos, vtkImageData* image) = 0;
199
219 virtual void DrawPolyData(
220 float p[2], float scale, vtkPolyData* polyData, vtkUnsignedCharArray* colors, int scalarMode);
221
227 virtual void ApplyPen(vtkPen* pen);
228
230
235 vtkGetObjectMacro(Pen, vtkPen);
237
243 virtual void ApplyBrush(vtkBrush* brush);
244
246
250 vtkGetObjectMacro(Brush, vtkBrush);
252
258 virtual void ApplyTextProp(vtkTextProperty* prop);
259
261
264 vtkGetObjectMacro(TextProp, vtkTextProperty);
266
270 virtual void SetColor4(unsigned char color[4]) = 0;
271
273 {
274 Nearest = 0x01,
275 Linear = 0x02,
276 Stretch = 0x04,
277 Repeat = 0x08
278 };
282 virtual void SetTexture(vtkImageData* image, int properties) = 0;
283
287 virtual void SetPointSize(float size) = 0;
288
292 virtual void SetLineWidth(float width) = 0;
293
297 virtual void SetLineType(int type) = 0;
298
302 virtual int GetWidth() { return this->Geometry[0]; }
303
307 virtual int GetHeight() { return this->Geometry[1]; }
308
312 virtual void SetMatrix(vtkMatrix3x3* m) = 0;
313
317 virtual void GetMatrix(vtkMatrix3x3* m) = 0;
318
322 virtual void MultiplyMatrix(vtkMatrix3x3* m) = 0;
323
327 virtual void PushMatrix() = 0;
328
332 virtual void PopMatrix() = 0;
333
338 virtual void SetClipping(int* x) = 0;
339
344 virtual void DisableClipping() { this->EnableClipping(false); }
345
349 virtual void EnableClipping(bool enable) = 0;
350
354 virtual void Begin(vtkViewport*) {}
355
359 virtual void End() {}
360
365 virtual bool GetBufferIdMode() const;
366
375
383 virtual void BufferIdModeEnd();
384
385 virtual void SetViewportSize(const vtkVector2i& size) { this->ViewportSize = size; }
386 vtkGetMacro(ViewportSize, vtkVector2i);
387
388 virtual void SetViewportRect(const vtkRecti& rect) { this->ViewportRect = rect; }
389 vtkGetMacro(ViewportRect, vtkRecti);
390
396 virtual void ReleaseCache(std::uintptr_t vtkNotUsed(cacheIdentifier)) {}
397
398protected:
401
405 int Geometry[2];
406
411
416
418
419 vtkPen* Pen; // Outlining
420 vtkBrush* Brush; // Fills
421 vtkTextProperty* TextProp; // Text property
422
423private:
424 vtkContextDevice2D(const vtkContextDevice2D&) = delete;
425 void operator=(const vtkContextDevice2D&) = delete;
426};
427
428VTK_ABI_NAMESPACE_END
429#endif // vtkContextDevice2D_h
2D array of ids, used for picking.
provides a brush that fills shapes drawn by vtkContext2D.
Definition vtkBrush.h:90
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 DrawPoints(vtkDataArray *positions, vtkUnsignedCharArray *colors, std::uintptr_t vtkNotUsed(cacheIdentifier))
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 ReleaseCache(std::uintptr_t vtkNotUsed(cacheIdentifier))
Concrete graphics implementations maintain a cache of heavy-weight buffer objects to achieve higher i...
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.
virtual void DrawPointSprites(vtkImageData *sprite, vtkDataArray *positions, vtkUnsignedCharArray *colors, std::uintptr_t vtkNotUsed(cacheIdentifier))
virtual void DrawMarkers(int shape, bool highlight, vtkDataArray *positions, vtkUnsignedCharArray *colors, std::uintptr_t vtkNotUsed(cacheIdentifier))
~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.
abstract superclass for arrays of numeric data
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
represent and manipulate 3x3 transformation matrices
abstract base class for most VTK objects
Definition vtkObject.h:162
provides a pen that draws the outlines of shapes drawn by vtkContext2D.
Definition vtkPen.h:79
represent and manipulate 2D points
Definition vtkPoints2D.h:27
concrete dataset represents vertices, lines, polygons, and triangle strips
Wrapper around std::string to keep symbols short.
represent text properties.
dynamic, self-adjusting array of unsigned char
Some derived classes for the different vectors commonly used.
Definition vtkVector.h:440
abstract specification for Viewports
Definition vtkViewport.h:65
window superclass for vtkRenderWindow
Definition vtkWindow.h:48