Version: 8.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
GEOM_Engine.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 #ifndef _GEOM_Engine_HXX_
24 #define _GEOM_Engine_HXX_
25 
26 #include "GEOM_Application.hxx"
27 #include "GEOM_Object.hxx"
29 
30 #include <Basics_OCCTVersion.hxx>
31 
32 #include <TColStd_DataMapOfIntegerTransient.hxx>
33 
34 #include <Resource_DataMapOfAsciiStringAsciiString.hxx>
35 #include <TDocStd_Document.hxx>
36 #include <TColStd_HArray1OfInteger.hxx>
37 #include <TColStd_HArray1OfByte.hxx>
38 #include <TColStd_HSequenceOfAsciiString.hxx>
39 #include <TColStd_MapOfInteger.hxx>
40 #include <TDF_Label.hxx>
41 
42 #include <map>
43 #include <list>
44 #include <vector>
45 #include <string>
46 
51 {
52  TCollection_AsciiString _entry;
53  TCollection_AsciiString _studyEntry;
54  TCollection_AsciiString _name;
55  TCollection_AsciiString _pyName;
57 };
58 
59 struct TVariable{
60  TCollection_AsciiString myVariable;
61  bool isVariable;
62 
63  TVariable(const TCollection_AsciiString& theVariable, bool theFlag = true):
64  myVariable(theVariable),
65  isVariable(theFlag){}
66 };
67 
68 typedef std::vector<TVariable> TState;
69 typedef std::vector<TState> TAllStates;
70 
72 {
73 public:
74  Standard_EXPORT ObjectStates();
75  ~ObjectStates();
76 
77  TAllStates GetAllStates() const { return _states; }
78 
79  TState GetCurrectState() const;
80  Standard_EXPORT void AddState(const TState &theState);
81  void IncrementState();
82 
83 private:
86 };
87 
88 typedef std::map<TCollection_AsciiString, ObjectStates* > TVariablesList;
89 
90 typedef std::map<int, std::list<TDF_Label> > TFreeLabelsList;
91 
93 {
94  public:
95  Standard_EXPORT GEOM_Engine();
96  Standard_EXPORT virtual ~GEOM_Engine();
97 
98  //Retuns the engine
99  Standard_EXPORT static GEOM_Engine* GetEngine();
100 
101  //Returns the OCAF document by its ID, if document doesn't exists it will be created
102  Standard_EXPORT Handle(TDocStd_Document) GetDocument(int theDocID, bool force=true);
103 
104  //Returns the ID of the given OCAF document
105  Standard_EXPORT int GetDocID(Handle(TDocStd_Document) theDocument);
106 
107  //Returns the OCAF appliaction
108  Standard_EXPORT Handle(TDocStd_Application) GetApplication() { return _OCAFApp; }
109 
110  //Returns a pointer to GEOM_BaseObject defined by a document and the entry
111  Standard_EXPORT Handle(GEOM_BaseObject) GetObject(int theDocID,
112  const char* theEntry,
113  bool force=true);
114 
115  //Adds a new object of the type theType in the OCAF document
116  Standard_EXPORT Handle(GEOM_BaseObject) AddBaseObject(int theDocID, int theType);
117 
118  //Adds a new object of the type theType in the OCAF document
119  Standard_EXPORT Handle(GEOM_Object) AddObject(int theDocID, int theType);
120 
121  //Removes the object from the OCAF document
122  Standard_EXPORT bool RemoveObject(Handle(GEOM_BaseObject)& theObject);
123 
124  //Saves the OCAF document with ID = theDocID with file with name theFileName
125  Standard_EXPORT bool Save(int theDocID, const char* theFileName);
126 
127  //Loads the OCAF document into the application and assigns to it an ID = theDocID
128  Standard_EXPORT bool Load(int theDocID, const char* theFileName);
129 
130  //Closes the document with ID = theDocID
131  Standard_EXPORT void Close(int theDocID);
132 
133  //Sets the number of Undos (default value = 10)
134  Standard_EXPORT void SetUndoLimit(int theLimit) { _UndoLimit = theLimit; }
135 
136  //Applies an Undo to document with ID = theDocID
137  Standard_EXPORT void Undo(int theDocID);
138 
139  //Applies an Redo to document with ID = theDocID
140  Standard_EXPORT void Redo(int theDocID);
141 
142  //Adds a new sub-shape object of the MainShape object
143  Standard_EXPORT Handle(GEOM_Object) AddSubShape(Handle(GEOM_Object) theMainShape,
144  Handle(TColStd_HArray1OfInteger) theIndices,
145  bool isStandaloneOperation = false);
146 
147  Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID,
148  std::vector<TObjectData>& theObjectData,
149  TVariablesList theVariables,
150  bool isPublished,
151  bool isMultiFile,
152  bool& aValidScript);
153 
154  Standard_EXPORT const char* GetDumpName (const char* theStudyEntry) const;
155 
156  Standard_EXPORT Handle(TColStd_HSequenceOfAsciiString) GetAllDumpNames() const;
157 
158  Standard_EXPORT int addTexture(int theDocID, int theWidth, int theHeight,
159  const Handle(TColStd_HArray1OfByte)& theTexture,
160  const TCollection_AsciiString& theFileName = "");
161 
162  Standard_EXPORT Handle(TColStd_HArray1OfByte) getTexture(int theDocID, int theTextureID,
163  int& theWidth, int& theHeight,
164  TCollection_AsciiString& theFileName);
165 
166  Standard_EXPORT std::list<int> getAllTextures(int theDocID);
167 
168  static const Standard_GUID& GetTextureGUID();
169 
170  Standard_EXPORT void healPyName( TCollection_AsciiString& pyName,
171  const TCollection_AsciiString& anEntry,
172  Resource_DataMapOfAsciiStringAsciiString& aNameToEntry);
173 
174  Standard_EXPORT void DocumentModified(const int theDocId, const bool isModified);
175 
176  Standard_EXPORT bool DocumentModified(const int theDocId);
177 
178  protected:
179  Standard_EXPORT static void SetEngine(GEOM_Engine* theEngine);
180 
181  private:
182 
183  Handle(GEOM_Application) _OCAFApp;
184  TColStd_DataMapOfIntegerTransient _mapIDDocument;
185  TColStd_MapOfInteger _mapModifiedDocs; // keeps the identifiers of the modified document ids
186 
189 
190  Resource_DataMapOfAsciiStringAsciiString _studyEntry2NameMap;
191 
193 };
194 
195 #endif