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 vtkStringToImage;
44 
45 class VTKRENDERINGCONTEXTOPENGL_EXPORT vtkOpenGLContextDevice2D : public vtkContextDevice2D
46 {
47 public:
49  virtual void PrintSelf(ostream &os, vtkIndent indent);
50 
55 
62  virtual void DrawPoly(float *f, int n, unsigned char *colors = 0,
63  int nc_comps = 0);
64 
71  virtual void DrawLines(float *f, int n, unsigned char *colors = 0,
72  int nc_comps = 0);
73 
79  virtual void DrawPoints(float *points, int n, unsigned char* colors = 0,
80  int nc_comps = 0);
81 
88  virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n,
89  unsigned char* colors = 0, int nc_comps = 0);
90 
102  virtual void DrawMarkers(int shape, bool highlight, float *points, int n,
103  unsigned char *colors = 0, int nc_comps = 0);
104 
106 
111  vtkSetMacro(MaximumMarkerCacheSize, int)
112  vtkGetMacro(MaximumMarkerCacheSize, int)
114 
118  virtual void DrawQuad(float *points, int n);
119 
123  virtual void DrawQuadStrip(float *points, int n);
124 
128  virtual void DrawPolygon(float *, int);
129 
141  virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy,
142  float inRx, float inRy, float startAngle,
143  float stopAngle);
144 
151  virtual void DrawEllipticArc(float x, float y, float rX, float rY,
152  float startAngle, float stopAngle);
153 
154 
158  virtual void DrawString(float *point, const vtkStdString &string);
159 
168  virtual void ComputeStringBounds(const vtkStdString &string,
169  float bounds[4]);
170 
174  virtual void DrawString(float *point, const vtkUnicodeString &string);
175 
184  virtual void ComputeStringBounds(const vtkUnicodeString &string,
185  float bounds[4]);
186 
192  virtual void ComputeJustifiedStringBounds(const char* string, float bounds[4]);
193 
198  virtual void DrawMathTextString(float point[2], const vtkStdString &string);
199 
204  virtual void DrawImage(float p[2], float scale, vtkImageData *image);
205 
211  void DrawImage(const vtkRectf& pos, vtkImageData *image);
212 
216  virtual void SetColor4(unsigned char color[4]);
217 
221  virtual void SetColor(unsigned char color[3]);
222 
226  virtual void SetTexture(vtkImageData* image, int properties = 0);
227 
231  virtual void SetPointSize(float size);
232 
236  virtual void SetLineWidth(float width);
237 
241  virtual void SetLineType(int type);
242 
246  virtual void MultiplyMatrix(vtkMatrix3x3 *m);
247 
251  virtual void SetMatrix(vtkMatrix3x3 *m);
252 
256  virtual void GetMatrix(vtkMatrix3x3 *m);
257 
261  virtual void PushMatrix();
262 
266  virtual void PopMatrix();
267 
272  virtual void SetClipping(int *x);
273 
277  virtual void EnableClipping(bool enable);
278 
282  virtual void Begin(vtkViewport* viewport);
283 
287  virtual void End();
288 
296  virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId);
297 
305  virtual void BufferIdModeEnd();
306 
312  bool SetStringRendererToFreeType();
313 
318  bool SetStringRendererToQt();
319 
323  bool HasGLSL();
324 
326 
329  vtkGetObjectMacro(RenderWindow, vtkOpenGLRenderWindow);
331 
337  virtual void ReleaseGraphicsResources(vtkWindow *window);
338 
339 protected:
342 
350  int GetNumberOfArcIterations(float rX,
351  float rY,
352  float startAngle,
353  float stopAngle);
354 
358  int Geometry[2];
359 
363  vtkRenderer *Renderer;
364 
368  vtkStringToImage *TextRenderer;
369 
373  bool InRender;
374 
376 
379  class Private;
380  Private *Storage;
382 
386  virtual bool LoadExtensions(vtkOpenGLExtensionManager *m);
387 
391  vtkOpenGLRenderWindow* RenderWindow;
392 
393 private:
394  vtkOpenGLContextDevice2D(const vtkOpenGLContextDevice2D &) VTK_DELETE_FUNCTION;
395  void operator=(const vtkOpenGLContextDevice2D &) VTK_DELETE_FUNCTION;
396 
397  void AlignText(double orientation, float width, float height, float *p);
398 
405  vtkImageData *GetMarker(int shape, int size, bool highlight);
406 
407  class vtkMarkerCacheObject
408  {
409  public:
410  vtkTypeUInt64 Key;
411  vtkImageData *Value;
412  bool operator==(vtkTypeUInt64 key)
413  {
414  return this->Key == key;
415  }
416  };
417 
418  std::list<vtkMarkerCacheObject> MarkerCache;
419  int MaximumMarkerCacheSize;
420 
425  vtkImageData * GenerateMarker(int shape, int size, bool highlight);
426 
427 };
428 
429 #endif //vtkOpenGLContextDevice2D_h
vtkOpenGLContextDevice2D::Private
Definition: vtkOpenGLContextDevice2DPrivate.h:251
vtkOpenGLContextDevice2D::DrawPoints
virtual void DrawPoints(float *points, int n, unsigned char *colors=0, int nc_comps=0)
Draw a series of points - fastest code path due to memory layout of the coordinates.
vtkX3D::scale
@ scale
Definition: vtkX3D.h:229
vtkX3D::type
@ type
Definition: vtkX3D.h:516
vtkOpenGLContextDevice2D::DrawLines
virtual void DrawLines(float *f, int n, unsigned char *colors=0, int nc_comps=0)
Draw lines using the points - memory layout is as follows: l1p1,l1p2,l2p1,l2p2...
vtkX3D::key
@ key
Definition: vtkX3D.h:257
vtkX3D::image
@ image
Definition: vtkX3D.h:374
vtkOpenGLContextDevice2D::DrawPointSprites
virtual void DrawPointSprites(vtkImageData *sprite, float *points, int n, unsigned char *colors=0, int nc_comps=0)
Draw a series of point sprites, images centred at the points supplied.
vtkStringToImage
base class for classes that render supplied text to an image.
Definition: vtkStringToImage.h:38
vtkMatrix3x3
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:37
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
vtkAbstractContextBufferId
2D array of ids, used for picking.
Definition: vtkAbstractContextBufferId.h:47
vtkX3D::color
@ color
Definition: vtkX3D.h:221
vtkX3D::points
@ points
Definition: vtkX3D.h:446
vtkOpenGLContextDevice2D::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkX3D::point
@ point
Definition: vtkX3D.h:236
vtkOpenGLExtensionManager
Interface class for querying and using OpenGL extensions.
vtkX3D::height
@ height
Definition: vtkX3D.h:254
vtkOpenGLContextDevice2D
Class for drawing 2D primitives using OpenGL 1.1+.
Definition: vtkOpenGLContextDevice2D.h:46
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:46
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkUnicodeString
String class that stores Unicode text.
Definition: vtkUnicodeString.h:73
vtkOpenGLContextDevice2D::DrawMarkers
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.
vtkX3D::size
@ size
Definition: vtkX3D.h:253
vtkX3D::startAngle
@ startAngle
Definition: vtkX3D.h:486
operator==
VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:48
vtkContextDevice2D
Abstract class for drawing 2D primitives.
Definition: vtkContextDevice2D.h:49
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkOpenGLContextDevice2D::DrawPoly
virtual void DrawPoly(float *f, int n, unsigned char *colors=0, int nc_comps=0)
Draw a poly line using the points - fastest code path due to memory layout of the coordinates.
vtkX3D::orientation
@ orientation
Definition: vtkX3D.h:262
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkOpenGLContextDevice2D::New
static vtkOpenGLContextDevice2D * New()
Creates a 2D Painter object.
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:39
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:49
vtkRectf
Definition: vtkRect.h:297
vtkContextDevice2D.h