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
41class vtkWindow;
42class vtkViewport;
43class vtkRenderer;
47
48class VTKRENDERINGCONTEXTOPENGL_EXPORT vtkOpenGLContextDevice2D : public vtkContextDevice2D
49{
50public:
52 virtual void PrintSelf(ostream &os, vtkIndent indent);
53
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
342protected:
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
395
396private:
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
2D array of ids, used for picking.
Abstract class for drawing 2D primitives.
topologically and geometrically regular array of data
Definition: vtkImageData.h:46
a simple class to control print indentation
Definition: vtkIndent.h:40
represent and manipulate 3x3 transformation matrices
Definition: vtkMatrix3x3.h:37
Class for drawing 2D primitives using OpenGL 1.1+.
static vtkOpenGLContextDevice2D * New()
Creates a 2D Painter object.
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.
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.
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.
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... The lines will be c...
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.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
Interface class for querying and using OpenGL extensions.
OpenGL rendering window.
abstract specification for renderers
Definition: vtkRenderer.h:64
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:49
base class for classes that render supplied text to an image.
String class that stores Unicode text.
abstract specification for Viewports
Definition: vtkViewport.h:48
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
@ point
Definition: vtkX3D.h:236
@ key
Definition: vtkX3D.h:257
@ points
Definition: vtkX3D.h:446
@ orientation
Definition: vtkX3D.h:262
@ startAngle
Definition: vtkX3D.h:486
@ scale
Definition: vtkX3D.h:229
@ type
Definition: vtkX3D.h:516
@ color
Definition: vtkX3D.h:221
@ height
Definition: vtkX3D.h:254
@ image
Definition: vtkX3D.h:374
@ size
Definition: vtkX3D.h:253
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)