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 
33 #ifndef vtkOpenGLContextDevice2D_h
34 #define vtkOpenGLContextDevice2D_h
35 
36 #include "vtkRenderingContextOpenGLModule.h" // For export macro
37 #include "vtkContextDevice2D.h"
38 
39 #include <list> // for std::list
40 
41 class vtkWindow;
42 class vtkViewport;
43 class vtkRenderer;
44 class vtkStringToImage;
47 
48 class VTKRENDERINGCONTEXTOPENGL_EXPORT vtkOpenGLContextDevice2D : public vtkContextDevice2D
49 {
50 public:
52  virtual void PrintSelf(ostream &os, vtkIndent indent);
53 
57  static vtkOpenGLContextDevice2D *New();
58 
65  virtual void DrawPoly(float *f, int n, unsigned char *colors = 0,
66  int nc_comps = 0);
67 
74  virtual void DrawLines(float *f, int n, unsigned char *colors = 0,
75  int nc_comps = 0);
76 
82  virtual void DrawPoints(float *points, int n, unsigned char* colors = 0,
83  int nc_comps = 0);
84 
91  virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n,
92  unsigned char* colors = 0, int nc_comps = 0);
93 
105  virtual void DrawMarkers(int shape, bool highlight, float *points, int n,
106  unsigned char *colors = 0, int nc_comps = 0);
107 
109 
114  vtkSetMacro(MaximumMarkerCacheSize, int)
115  vtkGetMacro(MaximumMarkerCacheSize, int)
117 
121  virtual void DrawQuad(float *points, int n);
122 
126  virtual void DrawQuadStrip(float *points, int n);
127 
131  virtual void DrawPolygon(float *, int);
132 
144  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy,
145  float inRx, float inRy, float startAngle,
146  float stopAngle);
147 
154  virtual void DrawEllipticArc(float x, float y, float rX, float rY,
155  float startAngle, float stopAngle);
156 
157 
161  virtual void DrawString(float *point, const vtkStdString &string);
162 
171  virtual void ComputeStringBounds(const vtkStdString &string,
172  float bounds[4]);
173 
177  virtual void DrawString(float *point, const vtkUnicodeString &string);
178 
187  virtual void ComputeStringBounds(const vtkUnicodeString &string,
188  float bounds[4]);
189 
195  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]);
196 
201  virtual void DrawMathTextString(float point[2], const vtkStdString &string);
202 
207  virtual void DrawImage(float p[2], float scale, vtkImageData *image);
208 
214  void DrawImage(const vtkRectf& pos, vtkImageData *image);
215 
219  virtual void SetColor4(unsigned char color[4]);
220 
224  virtual void SetColor(unsigned char color[3]);
225 
229  virtual void SetTexture(vtkImageData* image, int properties = 0);
230 
234  virtual void SetPointSize(float size);
235 
239  virtual void SetLineWidth(float width);
240 
244  virtual void SetLineType(int type);
245 
249  virtual void MultiplyMatrix(vtkMatrix3x3 *m);
250 
254  virtual void SetMatrix(vtkMatrix3x3 *m);
255 
259  virtual void GetMatrix(vtkMatrix3x3 *m);
260 
264  virtual void PushMatrix();
265 
269  virtual void PopMatrix();
270 
275  virtual void SetClipping(int *x);
276 
280  virtual void EnableClipping(bool enable);
281 
285  virtual void Begin(vtkViewport* viewport);
286 
290  virtual void End();
291 
299  virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId);
300 
308  virtual void BufferIdModeEnd();
309 
315  bool SetStringRendererToFreeType();
316 
321  bool SetStringRendererToQt();
322 
326  bool HasGLSL();
327 
329 
332  vtkGetObjectMacro(RenderWindow, vtkOpenGLRenderWindow);
334 
340  virtual void ReleaseGraphicsResources(vtkWindow *window);
341 
342 protected:
344  virtual ~vtkOpenGLContextDevice2D();
345 
353  int GetNumberOfArcIterations(float rX,
354  float rY,
355  float startAngle,
356  float stopAngle);
357 
361  int Geometry[2];
362 
366  vtkRenderer *Renderer;
367 
371  vtkStringToImage *TextRenderer;
372 
376  bool InRender;
377 
379 
382  class Private;
383  Private *Storage;
385 
389  virtual bool LoadExtensions(vtkOpenGLExtensionManager *m);
390 
394  vtkOpenGLRenderWindow* RenderWindow;
395 
396 private:
397  vtkOpenGLContextDevice2D(const vtkOpenGLContextDevice2D &) VTK_DELETE_FUNCTION;
398  void operator=(const vtkOpenGLContextDevice2D &) VTK_DELETE_FUNCTION;
399 
400  void AlignText(double orientation, float width, float height, float *p);
401 
408  vtkImageData *GetMarker(int shape, int size, bool highlight);
409 
410  class vtkMarkerCacheObject
411  {
412  public:
413  vtkTypeUInt64 Key;
414  vtkImageData *Value;
415  bool operator==(vtkTypeUInt64 key)
416  {
417  return this->Key == key;
418  }
419  };
420 
421  std::list<vtkMarkerCacheObject> MarkerCache;
422  int MaximumMarkerCacheSize;
423 
428  vtkImageData * GenerateMarker(int shape, int size, bool highlight);
429 
430 };
431 
432 #endif //vtkOpenGLContextDevice2D_h
OpenGL rendering window.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
abstract specification for Viewports
Definition: vtkViewport.h:47
Class for drawing 2D primitives using OpenGL 1.1+.
abstract specification for renderers
Definition: vtkRenderer.h:63
static vtkContextDevice2D * New()
virtual void DrawPoints(float *points, int n, unsigned char *colors=0, int nc_comps=0)=0
Draw a series of points - fastest code path due to memory layout of the coordinates.
virtual void DrawMarkers(int shape, bool highlight, float *points, int n, unsigned char *colors=0, int nc_comps=0)
Draw a series of markers centered at the points supplied.
base class for classes that render supplied text to an image.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
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:39
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
Abstract class for drawing 2D primitives.
Interface class for querying and using OpenGL extensions.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkWeakPointer< vtkRenderWindow > RenderWindow
2D array of ids, used for picking.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:36
virtual void DrawLines(float *f, int n, unsigned char *colors=0, int nc_comps=0)=0
Draw lines using the points - memory layout is as follows: l1p1,l1p2,l2p1,l2p2... ...
virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n, unsigned char *colors=0, int nc_comps=0)=0
Draw a series of point sprites, images centred at the points supplied.
String class that stores Unicode text.