0027606: Visualization - view is blocking when MSAA has been overridden in graphics...
[occt.git] / src / OpenGl / OpenGl_PrinterContext.hxx
1 // Created on: 2011-05-20
2 // Created by: Anton POLETAEV
3 // Copyright (c) 2011-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #ifndef _OPENGL_PRINTERCONTEXT_H
17 #define _OPENGL_PRINTERCONTEXT_H
18
19 #include <Standard_Type.hxx>
20 #include <TColStd_Array2OfReal.hxx>
21 #include <OpenGl_Vec.hxx>
22
23 //! Class provides specific information for redrawing view to offscreen buffer
24 //! on printing. The information is: projection matrixes for tiling,
25 //! scaling factors for text/markers and layer viewport dimensions.
26 class OpenGl_PrinterContext : public Standard_Transient
27 {
28
29 public:
30
31   //! Constructor
32   OpenGl_PrinterContext();
33
34   //! Destructor
35   virtual ~OpenGl_PrinterContext();
36
37   //! Get view projection transformation matrix.
38   inline const TColStd_Array2OfReal& GetProjTransformation() const
39   {
40     return myProjTransform; 
41   }
42
43   //! Set view projection transformation matrix for printing/tiling purposes
44   //! theProjTransform parameter should be an 4x4 array.
45   bool SetProjTransformation (const TColStd_Array2OfReal& theProjTransform);
46
47   //! Returns projection matrix.
48   OpenGl_Mat4 ProjTransformation();
49
50   //! Get text/markers scale factor
51   inline void GetScale (Standard_ShortReal& theScaleX,
52                         Standard_ShortReal& theScaleY) const
53   {
54     theScaleX = myScaleX;
55     theScaleY = myScaleY;
56   }
57
58   //! Set text scale factor
59   void SetScale (const Standard_ShortReal theScaleX,
60                  const Standard_ShortReal theScaleY);
61
62   //! Get layer viewport dimensions
63   inline void GetLayerViewport (Standard_Integer& theViewportX,
64                                 Standard_Integer& theViewportY) const
65   {
66     theViewportX = myLayerViewportX;
67     theViewportY = myLayerViewportY;
68   }
69
70   //! Set layer viewport dimensions
71   void SetLayerViewport (const Standard_Integer theViewportX,
72                          const Standard_Integer theViewportY);
73
74 private:
75
76   TColStd_Array2OfReal myProjTransform;
77   Standard_ShortReal   myProjMatrixGl[16];
78   Standard_ShortReal   myScaleX;
79   Standard_ShortReal   myScaleY;
80   Standard_Integer     myLayerViewportX;
81   Standard_Integer     myLayerViewportY;
82
83 public:
84
85   DEFINE_STANDARD_RTTIEXT(OpenGl_PrinterContext,Standard_Transient) // Type definition
86
87 };
88
89 DEFINE_STANDARD_HANDLE(OpenGl_PrinterContext, Standard_Transient)
90
91 #endif