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.
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.