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_DefineHandle.hxx>
20 #include <TColStd_Array2OfReal.hxx>
21 #include <Handle_Standard_Transient.hxx>
22 #include <OpenGl_Vec.hxx>
24 //! Class provides specific information for redrawing view to offscreen buffer
25 //! on printing. The information is: projection matrixes for tiling,
26 //! scaling factors for text/markers and layer viewport dimensions.
27 class OpenGl_PrinterContext : public Standard_Transient
33 OpenGl_PrinterContext();
36 virtual ~OpenGl_PrinterContext();
38 //! Get view projection transformation matrix.
39 inline const TColStd_Array2OfReal& GetProjTransformation() const
41 return myProjTransform;
44 //! Set view projection transformation matrix for printing/tiling purposes
45 //! theProjTransform parameter should be an 4x4 array.
46 bool SetProjTransformation (const TColStd_Array2OfReal& theProjTransform);
48 //! Returns projection matrix.
49 OpenGl_Mat4 ProjTransformation();
51 //! Get text/markers scale factor
52 inline void GetScale (Standard_ShortReal& theScaleX,
53 Standard_ShortReal& theScaleY) const
59 //! Set text scale factor
60 void SetScale (const Standard_ShortReal theScaleX,
61 const Standard_ShortReal theScaleY);
63 //! Get layer viewport dimensions
64 inline void GetLayerViewport (Standard_Integer& theViewportX,
65 Standard_Integer& theViewportY) const
67 theViewportX = myLayerViewportX;
68 theViewportY = myLayerViewportY;
71 //! Set layer viewport dimensions
72 void SetLayerViewport (const Standard_Integer theViewportX,
73 const Standard_Integer theViewportY);
77 TColStd_Array2OfReal myProjTransform;
78 Standard_ShortReal myProjMatrixGl[16];
79 Standard_ShortReal myScaleX;
80 Standard_ShortReal myScaleY;
81 Standard_Integer myLayerViewportX;
82 Standard_Integer myLayerViewportY;
86 DEFINE_STANDARD_RTTI(OpenGl_PrinterContext) // Type definition
90 DEFINE_STANDARD_HANDLE(OpenGl_PrinterContext, Standard_Transient)