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 
54  static vtkOpenGLContextDevice2D *New();
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:
341  virtual ~vtkOpenGLContextDevice2D();
342 
350  int GetNumberOfArcIterations(float rX,
351  float rY,
352  float startAngle,
353  float stopAngle);
354 
358  int Geometry[2];
359 
364 
369 
373  bool InRender;
374 
376 
379  class Private;
380  Private *Storage;
382 
386  virtual bool LoadExtensions(vtkOpenGLExtensionManager *m);
387 
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
OpenGL rendering window.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
virtual void SetMatrix(vtkMatrix3x3 *m)=0
Set the model view matrix for the display.
virtual void SetClipping(int *x)=0
Supply a float array of length 4 with x1, y1, width, height specifying clipping region for the device...
virtual void BufferIdModeEnd()
Finalize BufferId creation Mode.
virtual void ComputeJustifiedStringBounds(const char *string, float bounds[4])=0
Compute the bounds of the supplied string while taking into account the justification of the currentl...
abstract specification for Viewports
Definition: vtkViewport.h:47
vtkRenderer * Renderer
We need to store a pointer to the renderer for the text rendering.
Class for drawing 2D primitives using OpenGL 1.1+.
virtual void BufferIdModeBegin(vtkAbstractContextBufferId *bufferId)
Start BufferId creation Mode.
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 Begin(vtkViewport *)
Begin drawing, pass in the viewport to set up the view.
virtual void DrawPolygon(float *, int)
Draw a polygon using the specified number of points.
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.
virtual void SetColor4(unsigned char color[4])=0
Set the color for the device using unsigned char of length 4, RGBA.
bool InRender
Is the device currently rendering? Prevent multiple End() calls.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
virtual void EnableClipping(bool enable)=0
Enable or disable the clipping of the scene.
virtual void SetLineWidth(float width)=0
Set the line width.
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
vtkStringToImage * TextRenderer
We also need a label render strategy.
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
virtual void DrawQuadStrip(float *, int)
Draw a quad using the specified number of points.
Abstract class for drawing 2D primitives.
virtual void PopMatrix()=0
Pop the current matrix off of the stack.
virtual void SetTexture(vtkImageData *image, int properties)=0
Set the texture for the device, it is used to fill the polygons.
virtual void DrawMathTextString(float *point, const vtkStdString &string)=0
Draw text using MathText markup for mathematical equations.
vtkOpenGLRenderWindow * RenderWindow
The OpenGL render window being used by the device.
Interface class for querying and using OpenGL extensions.
virtual void SetPointSize(float size)=0
Set the point size for glyphs/sprites.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
virtual void DrawQuad(float *, int)
Draw a quad using the specified number of points.
2D array of ids, used for picking.
virtual void DrawEllipticArc(float x, float y, float rX, float rY, float startAngle, float stopAngle)=0
Draw an elliptic arc with center at x,y with radii rX and rY between angles startAngle and stopAngle ...
virtual void MultiplyMatrix(vtkMatrix3x3 *m)=0
Multiply the current model view matrix by the supplied one.
virtual void DrawString(float *point, const vtkStdString &string)=0
Draw some text to the screen.
virtual void End()
End drawing, clean up the view.
virtual void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy, float startAngle, float stopAngle)=0
Draw an elliptic wedge with center at x, y, outer radii outRx, outRy, inner radii inRx...
virtual void GetMatrix(vtkMatrix3x3 *m)=0
Set the model view matrix for the display.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void ComputeStringBounds(const vtkStdString &string, float bounds[4])=0
Compute the bounds of the supplied string.
VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
virtual void PushMatrix()=0
Push the current matrix onto the stack.
virtual void DrawImage(float p[2], float scale, vtkImageData *image)=0
Draw the supplied image at the given x, y (p[0], p[1]) (bottom corner), scaled by scale (1...
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:36
virtual void SetLineType(int type)=0
Set the line type type (using anonymous enum in vtkPen).
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.