0031918: Application Framework - New binary format for fast reading part of OCAF...
[occt.git] / src / TDocStd / TDocStd_FormatVersion.hxx
1 // Copyright (c) 2020 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #ifndef _TDocStdFormatVersion_HeaderFile
15 #define _TDocStdFormatVersion_HeaderFile
16
17 //! Storage format versions of OCAF documents in XML and binary file formats.
18 //!
19 //! OCAF document file format evolves and a new version number indicates each improvement of the format.
20 //! This enumeration lists all versions of an OCAF document. TDocStd_FormatVersion_CURRENT value refers to the last file format version.
21 //! By default, Open CASCADE Technology writes new documents using the last file format version.
22 //! The last version of Open CASCADE Technology is able to read old documents of any version.
23 //! However, a previous version of Open CASCADE Technology may not be able to read a new document.
24 //! In this case use the method ChangeStorageFormatVersion() from TDocStd_Document to change the file format version.
25 //! Then, save the document by means of SaveAs() from TDocStd_Application.
26 //!
27 //! If it is necessary to improve an XML or binary file format of OCAF document, follow please the next steps:
28 //! - increment the file format version in this enumeration. Put a reference to the last file format version by means of TDocStd_FormatVersion_CURRENT.
29 //! - introduce the improvement in OCAF attribute storage and retrieval drivers, if necessary.
30 //!   As an example, please consider the file XmlMDataStd_TreeNodeDriver.cxx.
31 //! - test the improvement on current file format version and on the previous one.
32 enum TDocStd_FormatVersion
33 {
34   TDocStd_FormatVersion_VERSION_2 = 2, //!< First supported version
35
36   TDocStd_FormatVersion_VERSION_3,     //!< OCCT 6.3.0
37                                        //!< * XML: Adding DeltaOnModification functionality to set of Standard attributes [#0019403]
38                                        //!< * BIN: Add Delta to numbers data, changes in ShapeSection [#0019986, #0019403]
39
40   TDocStd_FormatVersion_VERSION_4,     //!< OCCT 6.3.1
41                                        //!< * XML: Naming mechanism improvement [#0021004]
42                                        //!< * BIN: entry, ContextLabel for tree [#0021004]
43
44   TDocStd_FormatVersion_VERSION_5,     //!< OCCT 6.3.1
45                                        //!< * XML: Separation of OCAF to Lite and Standard parts completion [#0021093]
46                                        //!< * BIN: Convert old format to new [#0021093]
47
48   TDocStd_FormatVersion_VERSION_6,     //!< OCCT 6.5.0
49                                        //!< * XML: Add location [#0022192]
50                                        //!< * BIN: Add location [#0022192]
51
52   TDocStd_FormatVersion_VERSION_7,     //!< OCCT 6.7.0
53                                        //!< * XML: Add orientation [#0023766]
54                                        //!< * BIN: Add orientation, type migration [#0023766]
55
56   TDocStd_FormatVersion_VERSION_8,     //!< OCCT 7.0.0
57                                        //!< * XML: Replace TPrsStd_AISPresentation attribute with TDataXtd_Presentation [#0026290]
58                                        //!< * BIN: Stop convert old format [#0026290]
59
60   TDocStd_FormatVersion_VERSION_9,     //!< OCCT 7.1.0
61                                        //!< * BIN: Add GUIDs, Process user defined guid [#0027932]
62
63   TDocStd_FormatVersion_VERSION_10,    //!< OCCT 7.2.0
64                                        //!< * BIN: ReadTOC changed to handle 64-bit file length [#0028736]
65
66   TDocStd_FormatVersion_VERSION_11,    //!< OCCT 7.6.0
67                                        //!< * BIN, XML: TopTools_FormatVersion_CURRENT changed to 3 and 
68                                        //!< BinTools_FormatVersion_CURRENT changed to 4 to preserve per-vertex normal 
69                                        //!< information in case of triangulation-only Faces [#0031136]
70   TDocStd_FormatVersion_VERSION_12,    //!< OCCT 7.6.0
71                                        //!< * BIN: New binary format for fast reading of part of OCAF document [#0031918]
72
73   TDocStd_FormatVersion_CURRENT = TDocStd_FormatVersion_VERSION_12 //!< Current version
74 };
75
76 enum
77 {
78   TDocStd_FormatVersion_LOWER   = TDocStd_FormatVersion_VERSION_2,
79   TDocStd_FormatVersion_UPPER   = TDocStd_FormatVersion_VERSION_12
80 };
81
82
83 #endif // _TDocStdFormatVersion_HeaderFile