VTK  9.3.1
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 
28 VTK_ABI_NAMESPACE_BEGIN
29 class vtkWindow;
30 class vtkViewport;
31 class vtkStdString;
32 class vtkTextProperty;
33 class vtkPoints2D;
34 class vtkImageData;
35 class vtkMatrix3x3;
37 class vtkPen;
38 class vtkBrush;
39 class vtkRectf;
40 class vtkPolyData;
42 
43 class VTKRENDERINGCONTEXT2D_EXPORT vtkContextDevice2D : public vtkObject
44 {
45 public:
46  vtkTypeMacro(vtkContextDevice2D, vtkObject);
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
49  static vtkContextDevice2D* New();
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 
374  virtual void BufferIdModeBegin(vtkAbstractContextBufferId* bufferId);
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 
398 protected:
400  ~vtkContextDevice2D() override;
401 
405  int Geometry[2];
406 
411 
416 
418 
419  vtkPen* Pen; // Outlining
420  vtkBrush* Brush; // Fills
421  vtkTextProperty* TextProp; // Text property
422 
423 private:
424  vtkContextDevice2D(const vtkContextDevice2D&) = delete;
425  void operator=(const vtkContextDevice2D&) = delete;
426 };
427 
428 VTK_ABI_NAMESPACE_END
429 #endif // vtkContextDevice2D_h
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:28
virtual void SetViewportRect(const vtkRecti &rect)
abstract base class for most VTK objects
Definition: vtkObject.h:51
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:44
virtual void DrawPolygon(float *p, int n)
Draw a polygon using the specified number of points.
virtual int GetHeight()
Get the width of the device in pixels.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:79
virtual void Begin(vtkViewport *)
Begin drawing, pass in the viewport to set up the view.
virtual void DisableClipping()
Disable clipping of the display.
vtkVector2i ViewportSize
Store the size of the total viewport.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:27
virtual void ReleaseCache(std::uintptr_t vtkNotUsed(cacheIdentifier))
Concrete graphics implementations maintain a cache of heavy-weight buffer objects to achieve higher i...
provides a brush that fills shapes drawn by vtkContext2D.
Definition: vtkBrush.h:29
a simple class to control print indentation
Definition: vtkIndent.h:28
represent and manipulate 2D points
Definition: vtkPoints2D.h:25
topologically and geometrically regular array of data
Definition: vtkImageData.h:42
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
vtkAbstractContextBufferId * BufferId
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:440
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:28
represent text properties.
dynamic, self-adjusting array of unsigned char
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:25
vtkTextProperty * TextProp