1 // Created on: 2011-05-20
2 // Created by: Anton POLETAEV
3 // Copyright (c) 2011-2014 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
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.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
16 #ifndef _OPENGL_PRINTERCONTEXT_H
17 #define _OPENGL_PRINTERCONTEXT_H
19 #include <Standard_Type.hxx>
20 #include <TColStd_Array2OfReal.hxx>
21 #include <OpenGl_Vec.hxx>
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
32 OpenGl_PrinterContext();
35 virtual ~OpenGl_PrinterContext();
37 //! Get view projection transformation matrix.
38 inline const TColStd_Array2OfReal& GetProjTransformation() const
40 return myProjTransform;
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);
47 //! Returns projection matrix.
48 OpenGl_Mat4 ProjTransformation();
50 //! Get text/markers scale factor
51 inline void GetScale (Standard_ShortReal& theScaleX,
52 Standard_ShortReal& theScaleY) const
58 //! Set text scale factor
59 void SetScale (const Standard_ShortReal theScaleX,
60 const Standard_ShortReal theScaleY);
62 //! Get layer viewport dimensions
63 inline void GetLayerViewport (Standard_Integer& theViewportX,
64 Standard_Integer& theViewportY) const
66 theViewportX = myLayerViewportX;
67 theViewportY = myLayerViewportY;
70 //! Set layer viewport dimensions
71 void SetLayerViewport (const Standard_Integer theViewportX,
72 const Standard_Integer theViewportY);
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;
85 DEFINE_STANDARD_RTTIEXT(OpenGl_PrinterContext,Standard_Transient) // Type definition
89 DEFINE_STANDARD_HANDLE(OpenGl_PrinterContext, Standard_Transient)