VTK
vtkOpenGLContextDevice2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenGLContextDevice2D.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 
30 #ifndef vtkOpenGLContextDevice2D_h
31 #define vtkOpenGLContextDevice2D_h
32 
33 #include "vtkRenderingContextOpenGLModule.h" // For export macro
34 #include "vtkContextDevice2D.h"
35 
36 #include <list> // for std::list
37 
38 class vtkWindow;
39 class vtkViewport;
40 class vtkRenderer;
41 class vtkTextRenderer;
44 
45 class VTKRENDERINGCONTEXTOPENGL_EXPORT vtkOpenGLContextDevice2D : public vtkContextDevice2D
46 {
47 public:
49  void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE;
50 
54  static vtkOpenGLContextDevice2D *New();
55 
62  void DrawPoly(float *f, int n, unsigned char *colors = 0,
63  int nc_comps = 0) VTK_OVERRIDE;
64 
71  void DrawLines(float *f, int n, unsigned char *colors = 0,
72  int nc_comps = 0) VTK_OVERRIDE;
73 
79  void DrawPoints(float *points, int n, unsigned char* colors = 0,
80  int nc_comps = 0) VTK_OVERRIDE;
81 
88  void DrawPointSprites(vtkImageData *sprite, float *points, int n,
89  unsigned char* colors = 0, int nc_comps = 0) VTK_OVERRIDE;
90 
102  void DrawMarkers(int shape, bool highlight, float *points, int n,
103  unsigned char *colors = 0, int nc_comps = 0) VTK_OVERRIDE;
104 
106 
111  vtkSetMacro(MaximumMarkerCacheSize, int)
112  vtkGetMacro(MaximumMarkerCacheSize, int)
114 
118  void DrawQuad(float *points, int n) VTK_OVERRIDE;
119 
123  void DrawQuadStrip(float *points, int n) VTK_OVERRIDE;
124 
128  void DrawPolygon(float *, int) VTK_OVERRIDE;
129 
141  void DrawEllipseWedge(float x, float y, float outRx, float outRy,
142  float inRx, float inRy, float startAngle,
143  float stopAngle) VTK_OVERRIDE;
144 
151  void DrawEllipticArc(float x, float y, float rX, float rY,
152  float startAngle, float stopAngle) VTK_OVERRIDE;
153 
154 
158  void DrawString(float *point, const vtkStdString &string) VTK_OVERRIDE;
159 
168  void ComputeStringBounds(const vtkStdString &string,
169  float bounds[4]) VTK_OVERRIDE;
170 
174  void DrawString(float *point, const vtkUnicodeString &string) VTK_OVERRIDE;
175 
184  void ComputeStringBounds(const vtkUnicodeString &string,
185  float bounds[4]) VTK_OVERRIDE;
186 
192  void ComputeJustifiedStringBounds(const char* string, float bounds[4]) VTK_OVERRIDE;
193 
198  void DrawMathTextString(float point[2], const vtkStdString &string) VTK_OVERRIDE;
199 
204  void DrawImage(float p[2], float scale, vtkImageData *image) VTK_OVERRIDE;
205 
211  void DrawImage(const vtkRectf& pos, vtkImageData *image) VTK_OVERRIDE;
212 
219  void DrawPolyData(float p[2], float scale, vtkPolyData* polyData,
220  vtkUnsignedCharArray* colors, int scalarMode) VTK_OVERRIDE;
221 
225  void SetColor4(unsigned char color[4]) VTK_OVERRIDE;
226 
230  virtual void SetColor(unsigned char color[3]);
231 
235  void SetTexture(vtkImageData* image, int properties = 0) VTK_OVERRIDE;
236 
240  void SetPointSize(float size) VTK_OVERRIDE;
241 
245  void SetLineWidth(float width) VTK_OVERRIDE;
246 
250  void SetLineType(int type) VTK_OVERRIDE;
251 
255  void MultiplyMatrix(vtkMatrix3x3 *m) VTK_OVERRIDE;
256 
260  void SetMatrix(vtkMatrix3x3 *m) VTK_OVERRIDE;
261 
265  void GetMatrix(vtkMatrix3x3 *m) VTK_OVERRIDE;
266 
270  void PushMatrix() VTK_OVERRIDE;
271 
275  void PopMatrix() VTK_OVERRIDE;
276 
281  void SetClipping(int *x) VTK_OVERRIDE;
282 
286  void EnableClipping(bool enable) VTK_OVERRIDE;
287 
291  void Begin(vtkViewport* viewport) VTK_OVERRIDE;
292 
296  void End() VTK_OVERRIDE;
297 
305  void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId) VTK_OVERRIDE;
306 
314  void BufferIdModeEnd() VTK_OVERRIDE;
315 
321  bool SetStringRendererToFreeType();
322 
327  bool SetStringRendererToQt();
328 
332  bool HasGLSL();
333 
335 
338  vtkGetObjectMacro(RenderWindow, vtkOpenGLRenderWindow);
340 
346  virtual void ReleaseGraphicsResources(vtkWindow *window);
347 
348 protected:
350  ~vtkOpenGLContextDevice2D() VTK_OVERRIDE;
351 
359  int GetNumberOfArcIterations(float rX,
360  float rY,
361  float startAngle,
362  float stopAngle);
363 
367  int Geometry[2];
368 
372  vtkRenderer *Renderer;
373 
377  bool InRender;
378 
380 
383  class Private;
384  Private *Storage;
386 
390  virtual bool LoadExtensions(vtkOpenGLExtensionManager *m);
391 
395  vtkOpenGLRenderWindow* RenderWindow;
396 
397 private:
398  vtkOpenGLContextDevice2D(const vtkOpenGLContextDevice2D &) VTK_DELETE_FUNCTION;
399  void operator=(const vtkOpenGLContextDevice2D &) VTK_DELETE_FUNCTION;
400 
407  vtkImageData *GetMarker(int shape, int size, bool highlight);
408 
409  class vtkMarkerCacheObject
410  {
411  public:
412  vtkTypeUInt64 Key;
413  vtkImageData *Value;
414  bool operator==(vtkTypeUInt64 key)
415  {
416  return this->Key == key;
417  }
418  };
419 
420  std::list<vtkMarkerCacheObject> MarkerCache;
421  int MaximumMarkerCacheSize;
422 
427  vtkImageData * GenerateMarker(int shape, int size, bool highlight);
428 
429  void ComputeStringBoundsInternal(const vtkUnicodeString &string,
430  float bounds[4]);
431 
432 
433 };
434 
435 #endif //vtkOpenGLContextDevice2D_h
OpenGL rendering window.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:41
abstract specification for Viewports
Definition: vtkViewport.h:44
Class for drawing 2D primitives using OpenGL 1.1+.
abstract specification for renderers
Definition: vtkRenderer.h:57
static vtkContextDevice2D * New()
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:79
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
virtual void DrawPoly(float *points, int n, unsigned char *colors=0, int nc_comps=0)=0
Draw a poly line using the points - fastest code path due to memory layout of the coordinates...
a simple class to control print indentation
Definition: vtkIndent.h:33
topologically and geometrically regular array of data
Definition: vtkImageData.h:39
Abstract class for drawing 2D primitives.
Interface class for querying and using OpenGL extensions.
dynamic, self-adjusting array of unsigned char
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkWeakPointer< vtkRenderWindow > RenderWindow
2D array of ids, used for picking.
Interface for generating images and path data from string data, using multiple backends.
VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:33
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
String class that stores Unicode text.