0025180: Visualization - Homogeneous transformation API in TKV3d
[occt.git] / src / Prs3d / Prs3d_Presentation.hxx
1 // Created on: 1992-08-26
2 // Created by: Jean Louis FRENKEL
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _Prs3d_Presentation_HeaderFile
18 #define _Prs3d_Presentation_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_Type.hxx>
22
23 #include <Graphic3d_Structure.hxx>
24 #include <Standard_Boolean.hxx>
25 #include <Quantity_Length.hxx>
26 class Prs3d_Root;
27 class Graphic3d_StructureManager;
28 class Graphic3d_Structure;
29 class Graphic3d_DataStructureManager;
30 class Geom_Transformation;
31 class Graphic3d_Group;
32
33
34 class Prs3d_Presentation;
35 DEFINE_STANDARD_HANDLE(Prs3d_Presentation, Graphic3d_Structure)
36
37 //! Defines a presentation object which can be displayed,
38 //! highlighted or erased.
39 //! The presentation object stores the results of the
40 //! presentation algorithms as defined in the StdPrs
41 //! classes and the Prs3d classes inheriting Prs3d_Root.
42 //! This presentation object is used to give display
43 //! attributes defined at this level to
44 //! ApplicationInteractiveServices classes at the level above.
45 //! A presentation object is attached to a given Viewer.
46 class Prs3d_Presentation : public Graphic3d_Structure
47 {
48
49 public:
50
51   //! Constructs a presentation object
52   //! if <Init> is false, no color initialization is done.
53   Standard_EXPORT Prs3d_Presentation(const Handle(Graphic3d_StructureManager)& theStructManager, const Standard_Boolean theToInit = Standard_True);
54   
55   //! Constructs a presentation object.
56   Standard_EXPORT Prs3d_Presentation(const Handle(Graphic3d_StructureManager)& theStructManager, const Handle(Prs3d_Presentation)& thePrs);
57   
58   Standard_EXPORT virtual Handle(Graphic3d_Structure) Compute (const Handle(Graphic3d_DataStructureManager)& aProjector) Standard_OVERRIDE;
59   
60   //! Returns the new Structure defined for the new visualization
61   Standard_EXPORT virtual Handle(Graphic3d_Structure) Compute (const Handle(Graphic3d_DataStructureManager)& theProjector,
62                                                                const Handle(Geom_Transformation)& theTrsf) Standard_OVERRIDE;
63
64   //! Returns the new Structure defined for the new visualization
65   Standard_EXPORT virtual void Compute (const Handle(Graphic3d_DataStructureManager)& aProjector, Handle(Graphic3d_Structure)& aStructure) Standard_OVERRIDE;
66   
67   //! Returns the new Structure defined for the new visualization
68   Standard_EXPORT virtual void Compute (const Handle(Graphic3d_DataStructureManager)& theProjector,
69                                         const Handle(Geom_Transformation)& theTrsf,
70                                         Handle(Graphic3d_Structure)& theStructure) Standard_OVERRIDE;
71
72   Standard_EXPORT void Connect (const Handle(Prs3d_Presentation)& aPresentation);
73   
74   Standard_EXPORT void Remove (const Handle(Prs3d_Presentation)& aPresentation);
75   
76   Standard_EXPORT void RemoveAll();
77
78 friend class Prs3d_Root;
79
80   DEFINE_STANDARD_RTTIEXT(Prs3d_Presentation,Graphic3d_Structure)
81
82 private:
83   
84   Standard_EXPORT Handle(Graphic3d_Group) CurrentGroup() const;
85
86 };
87
88 #endif // _Prs3d_Presentation_HeaderFile