0028599: Replacement of old Boolean operations with new ones in BRepProj_Projection...
[occt.git] / dox / dev_guides / upgrade / upgrade.md
index bed7f90..2029e70 100644 (file)
@@ -58,7 +58,7 @@ for (Standard_Integer aGr = 1; aGr <= aLen; ++aGr)
 Porting of user applications from an earlier OCCT version to version 6.5.2 requires taking into account the following major changes:
 * Any code that has been generated by WOK from CDL generic classes *Tcollection_DataMap* and *Tcollection_IndexedDataMap* needs to be regenerated by WOK to take into account the change in the interface of these classes.
 * The enumerations *CDF_StoreStatus* and *CDF_RetrievableStatus* have been replaced by the enumerations *PCDM_StoreStatus* and *PCDM_ReaderStatus*. Correspondingly, the methods *Open, Save* and *SaveAs* of the class *TDocStd_Application* have changed their return value. Any code, which uses these enumerations, needs to be updated.
-* *BRepLib_MakeFace* has been modified to accept tolerance value for resolution of degenerated edges. This tolerance parameter has no default value to ensure that the client code takes care of passing a meaningful value, not just *Precision::Confusion*, so some porting overheads are expected. 
+* *BRepLib_MakeFace* has been modified to receive tolerance value for resolution of degenerated edges. This tolerance parameter has no default value to ensure that the client code takes care of passing a meaningful value, not just *Precision::Confusion*, so some porting overheads are expected. 
 * If the callback mechanism in call_togl_redraw function was used in the application code, it is necessary to revise it to take into account the new callback execution and provide a check of reason value of Aspect_GraphicCallbackStruct in callback methods to confirm that the callback code is executed at the right moment. Now the callbacks are executed before redrawing the underlayer, before redrawing the overlayer and at the end of redrawing. The information about the moment when the callback is invoked is provided with the reason value in form of an additional bit flag <i>(OCC_PRE_REDRAW, OCC_PRE_OVERLAY)</i>. The state of OpenGl changed in callback methods will not be restored automatically, which might lead to unwanted behavior in redrawing procedure.
 * The print method used in the application code might need to be revised to take into account the ability to choose between print algorithms: tile and stretch. The stretch algorithm will be selected by default during porting.
 * It is recommended to *BRepMesh_DiscretFactory* users, to check *BRepMesh_DiscretFactory::SetDefault()* return value to determine plugin availability / validity. *BRepMesh_DiscretFactory::Discret()* method now returns handle instead of pointer. The code should be updated in the following manner:
@@ -82,7 +82,7 @@ Porting of user applications from an earlier OCCT version to version 6.5.3 requi
 * Method *HashCode()* has been removed from class *Standard_Transient*. It is advisable to use global function <i>HashCode()</i> for Handle objects instead. 
 * Declaration of operators new/delete for classes has become consistent and is encapsulated in macros.
 * Memory management has been changed to use standard heap <i>(MMGT_OPT=0)</i> and reentrant mode <i>(MMGT_REENTRANT=1)</i> by default.
-* Map classes in *NCollection* package now accept one more argument defining a hash tool.
+* Map classes in *NCollection* package now receive one more argument defining a hash tool.
 
 @section upgrade_654 Upgrade to OCCT 6.5.4
 
@@ -251,6 +251,7 @@ Porting of user applications from an earlier OCCT version to version 6.9.0 requi
 
 3D Viewer now uses GLSL programs for managing frame buffer and stereoscopic output.
 For proper initialization, application should configure **CSF_ShadersDirectory** environment variable pointing to a folder with GLSL resources - files from folder **CASROOT**/src/Shaders.
+*Note that **CSF_ShadersDirectory** become optional since OCCT 7.1.0 release*.
 
 @subsection upgrade_690_selection Changes in Selection
 
@@ -323,6 +324,15 @@ The methods *V3d_View::Convert* and *V3d_View::ConvertWithProj()* have ceased to
 
 Porting of user applications from an earlier OCCT version to version 7.0.0 requires taking into account the following major changes.
 
+Building OCCT now requires compiler supporting some C++11 features.
+The supported compilers are:
+- MSVC: version 10 (Visual Studio 2010) or later
+- GCC: version 4.3 or later
+- CLang: version 3.6 or later
+- ICC: version XE 2013 SP 1 or later
+
+When compiling code that uses OCCT with GCC and CLang compilers, it is necessary to use compiler option -std=c++0x (or its siblings) to enable C++11 features.
+
 @subsection upgrade_700_persist Removal of legacy persistence
 
 Legacy persistence for shapes and OCAF data based on *Storage_Schema* (toolkits *TKPShape*, *TKPLCAF*, *TKPCAF*, *TKShapeShcema, TLStdLSchema, TKStdSchema*, and *TKXCAFSchema*) has been removed in OCCT 7.0.0.
@@ -332,6 +342,8 @@ The applications that used these data persistence tools need to be updated to us
 
 The existing data files in standard formats can be converted using OCCT 6.9.1 or a previous version, as follows.
 
+@note Reading / writing custom files capability from OCCT 6.9.1 is restored in OCCT 7.2.0. See details in @ref upgrade_720_persistence section.
+
 #### CSFDB files
 
 Files in *CSFDB* format (usually with extension .csfdb) contain OCCT shape data that can be converted to BRep format. 
@@ -507,7 +519,7 @@ This will eliminate the need to include the header *A* in each source file where
 
 #### Ambiguity of calls to overloaded functions
 
-This issue appears in the compilers that do not support default arguments in template functions (known cases are Visual C++ 10 and 11): the compiler reports an ambiguity error if a handle is used in the argument of a call to the function that has two or more overloaded versions, accepting handles to different types. 
+This issue appears in the compilers that do not support default arguments in template functions (known cases are Visual C++ 10 and 11): the compiler reports an ambiguity error if a handle is used in the argument of a call to the function that has two or more overloaded versions, receiving handles to different types. 
 The problem is that operator  <i> const handle<T2>& </i> is defined for any type *T2*, thus the compiler cannot make the right choice.
 
 Example:
@@ -886,7 +898,7 @@ void UserDrawObject::Compute (const Handle(PrsMgr_PresentationManager3d)& thePrs
   aGroup->AddElement(anElem);
 
   // invalidate bounding box of the scene
-  thePrsMgr->StructureManager()->Update (thePrsMgr->StructureManager()->UpdateMode());
+  thePrsMgr->StructureManager()->Update();
 }
 ~~~~~
 
@@ -949,6 +961,11 @@ The related classes, e.g. *AIS_LocalContext*, and methods ( <i>AIS_InteractiveCo
 
 The main functionality provided by Local Context - selection of object subparts - can be now used within Neutral Point without opening any Local Context.
 
+The property *SelectionMode()* has been removed from the class *AIS_InteractiveObject*.
+This property contradicts to selection logic, since it is allowed to activate several Selection modes at once.
+Therefore keeping one selection mode as object field makes no sense.
+Applications that used this method should implement selection mode caching at application level, if it is necessary for some reason.
+
 @subsection upgrade_occt700_separate_caf_visualisation Separation of visualization part from TKCAF
 
 Visualization CAF attributes have been moved into a new toolkit *TKVCAF*. 
@@ -982,34 +999,33 @@ Textured objects now have the priority over the environment mapping.
 Redundant enumerations *V3d_TypeOfSurface* and *Graphic3d_TypeOfSurface*, class *OpenGl_SurfaceDetailState*, the corresponding methods from *Graphic3d_CView, OpenGl_ShaderManager, OpenGl_View, V3d_View* and *V3d_Viewer* have been deleted.
 Draw command *VSetTextureMode* has been deleted.
 
-@section upgrade_occt710 Upgrade to OCCT 7.1.0
-
-@subsection upgrade_occt710_correction_of_Parab2d Correction in *gp_Parab2d, gce_MakeParab2d* and *GCE2d_MakeParabola* classes:
-
-1. Constructors *GCE2d_MakeParabola(const gp_Ax22d& D, const gp_Pnt2d& F)*, *gce_MakeParab2d(const gp_Ax22d& D, const gp_Pnt2d& F)* and *gp_Parab2d(const gp_Ax22d& D, const gp_Pnt2d& F)* have been deleted. 
+@subsection upgrade_occt700_wfshape Shape presentation builders
 
-2. Objects created with some constructors of *gp_Parab2d* class may differ from the previous version. Please see the updated documentation for *gp_Parab2d* class (file *gp_Parab2d.hxx*).
+Presentation tools for building Wireframe presentation have been refactored to eliminate duplicated code and interfaces.
+Therefore, the following classes have been modified:
+* *StdPrs_WFDeflectionShape* and *Prs3d_WFShape* have been removed. *StdPrs_WFShape* should be used instead.
+* *StdPrs_ToolShadedShape* has been renamed to *StdPrs_ToolTriangulatedShape*.
 
-3. Result returned by gp_Parab2d::Directrix() method has another direction in compare with previous OCCT-version.
+@section upgrade_occt710 Upgrade to OCCT 7.1.0
 
 @subsection upgrade_710_aspects Presentation attributes
 
-This section should be considered if application defines custom presentations (inherited from AIS_InteractiveObject).
-Previous versions of OCCT have three levels for defining presentation properties (e.g. colors, materials):
+This section should be considered if application defines custom presentations, i.e. inherited from *AIS_InteractiveObject*.
+The previous versions of OCCT have three levels for defining presentation properties (e.g. colors, materials, etc.):
 
-1. For entire structure (Graphic3d_Structure / Prs3d_Presentation).
-2. For specific group of primitives (Graphic3d_Group::SetGroupPrimitivesAspect()) overriding structure aspects.
-3. For specific primitive array within graphic group (Graphic3d_Group::SetPrimitivesAspect()).
+1. For the entire structure - *Graphic3d_Structure* / *Prs3d_Presentation*.
+2. For a specific group of primitives - *Graphic3d_Group::SetGroupPrimitivesAspect()* overriding structure aspects.
+3. For a specific primitive array within the graphic group - *Graphic3d_Group::SetPrimitivesAspect()*.
 
-The first one is de facto not used for a long time since OCCT presentations always define aspects at graphic group level (overriding any structure aspects).
-Within this OCCT release, this first level of aspects has been completely removed. In most cases application code should just remove missing methods; in rare cases where this functionality was intentionally used - application should explicitly define aspects to appropriate graphic groups.
+The structure level has de facto not been used for a long time since OCCT presentations always define aspects at the graphic group level (overriding any structure aspects).
+Within this OCCT release, structure level of aspects has been completely removed. In most cases the application code should just remove missing methods. In those rare cases, when this functionality was intentionally used, the application should explicitly define aspects to the  appropriate graphic groups.
 
-Note that the 3rd level (defining several different aspects within the same graphic group) is also should be avoided in application code since it is deprecated functionality which can be removed in further releases.
-Graphic3d_Group::SetGroupPrimitivesAspect() should be the main method defining presentation attributes.
+Note that defining several different aspects within the same graphic group should also be avoided in the application code since it is a deprecated functionality which can be removed in further releases.
+*Graphic3d_Group::SetGroupPrimitivesAspect()* should be the main method defining presentation attributes.
 
-The implementation of Graphic3d_Group::SetGroupPrimitivesAspect() has been changed from copying aspect values to keeping passed object.
-Although it was not documented, previosly it was possible to modify single aspects instance (like Graphic3d_AspectFillArea3d) and set it to multiple groups.
-Now such code would produce unexpected result and therefore should be updated to create dedicated aspect instance.
+The implementation of *Graphic3d_Group::SetGroupPrimitivesAspect()* has been changed from copying aspect values to keeping the passed object.
+Although it was not documented, previously it was possible to modify a single aspect instance, like *Graphic3d_AspectFillArea3d* and set it to multiple groups.
+Now such code would produce an unexpected result and therefore should be updated to create the dedicated aspect instance.
 
 @subsection upgrade_710_types Typedefs
 
@@ -1020,71 +1036,499 @@ The following type definitions in OCCT has been modified to use C++11 types:
 - *Standard_Utf16Char* is now *char16_t* (previously *uint16_t* for compatibility with old compilers).
 - *Standard_Utf32Char* is now *char32_t* (previously *uint32_t* for compatibility with old compilers).
 
-For most applications this change should be transparent, since the size of types have not been changed.
+For most applications this change should be transparent on the level of source code. Binary compatibility is not maintained, as *bool* has a different size in comparison with *unsigned int*.
 
 @subsection upgrade_710_ffp Programmable Pipeline
 
 Fixed-function pipeline has been already deprecated since OCCT 7.0.0.
 Release 7.1.0 disables this functionality by default in favor of Programmable Pipeline (based on GLSL programs).
 
-This also means that method *V3d_View::Export()* based on gl2ps library and requiring disabled by default functionality has been deprecated as well.
-Applications should explicitly enable deprecated functionality by setting OpenGl_Caps::ffpEnable flag to TRUE within OpenGl_GraphicDriver::ChangeOptions() before creating the viewer to use V3d_View::Export(),
-but being aware that this functionality is likely to be removed in a next OCCT release.
-Thus the recommended way to generate vector image of a 3D model or scene is to use application-level solution independent from OpenGL.
+Method *V3d_View::Export()*, based on *gl2ps* library, requires fixed pipeline and will return error if used with default settings.
+Applications should explicitly enable fixed pipeline by setting *OpenGl_Caps::ffpEnable* flag to TRUE within *OpenGl_GraphicDriver::ChangeOptions()* before creating the viewer to use *V3d_View::Export()*.
+This method is declared as deprecated and will be removed in one of the the next OCCT releases.
+The recommended way to generate a vector image of a 3D model or scene is to use an application-level solution independent from OpenGL.
 
 @subsection upgrade_710_trsfpers Transformation persistence
 
-The behavior of transformation persistence flags *Graphic3d_TMF_ZoomPers* and *Graphic3d_TMF_TriedronPers* have been changed to be consistent with textured fixed-size 2D text.
-Object with these flags is considered to be defined in pixel units, and presentation is no more scaled depending on view height.
-Applications that need to scale such objects depending on viewport size should update them manually.
+The behavior of transformation persistence flags *Graphic3d_TMF_ZoomPers* and *Graphic3d_TMF_TriedronPers* has been changed for consistency with a textured fixed-size 2D text.
+An object with these flags is considered as defined in pixel units, and the presentation is no more scaled depending on the view height.
+The applications that need to scale such objects depending on viewport size should update them manually.
 
-Flags *Graphic3d_TMF_PanPers* and *Graphic3d_TMF_FullPers* has been removed.
-*Graphic3d_TMF_TriedronPers* or *Graphic3d_TMF_2d* can be used instead depending on context.
+Flags *Graphic3d_TMF_PanPers* and *Graphic3d_TMF_FullPers* have been removed.
+*Graphic3d_TMF_TriedronPers* or *Graphic3d_TMF_2d* can be used instead depending on the context.
 
 *Graphic3d_TransModeFlags* is not an integer bitmask anymore - enumeration values should be specified instead.
-Several transformation persistence methods in PrsMgr_PresentableObject have been marked deprecated.
-Transformation persistence should be defined using directly Graphic3d_TransformPers constructor and passed by a handle, not value.
+Several transformation persistence methods in *PrsMgr_PresentableObject* have been marked deprecated.
+Transformation persistence should be defined using  *Graphic3d_TransformPers* constructor directly and passed by a handle, not value.
 
-@subsection_upgrade_710_selprops Dynamic highlight and selection properties
+@subsection upgrade_710_selprops Dynamic highlight and selection properties
 
-Release 7.1.0 introduces *Graphic3d_HighlightStyle* - an entity that allows flexible customization of highlighting parameters (such as method, highlight color and transparency). Therefore, API of methods related to highlighting in the following core classes:
-- *AIS_InteractiveContext* (methods HilightWithColor(), Hilight());
-- *PrsMgr_PresentationManager* (method Color());
-- *SelectMgr_EntityOwner* (method HilightWithColor())
-was changed to process Graphic3d_HighlightStyle instead of Quantity_Color.
+Release 7.1.0 introduces *Graphic3d_HighlightStyle* - an entity that allows flexible customization of highlighting parameters (such as highlighting method, color, and transparency). Therefore, the signatures of the following methods related to highlighting:
+- *AIS_InteractiveContext::Hilight()*;
+- *AIS_InteractiveContext::HilightWithColor()*;
+- *PrsMgr_PresentationManager::Color()*;
+- *SelectMgr_EntityOwner::HilightWithColor()*;
+have been changed to receive *Graphic3d_HighlightStyle* instead of *Quantity_Color*.
 
-Method AIS_InteractiveContext::Hilight is now deprecated and highlights interactive object with selection style.
+Method *AIS_InteractiveContext::Hilight* is now deprecated and highlights the interactive object with selection style.
 
-Group of methods AIS_InteractiveContext::IsHilighted changed behavior - now they only check object's or owner's highlight flags in global status. If highlight color is required on application level, overloaded methods AIS_InteractiveContext::HighlightStyle for owner and object must be used instead.
+A group of methods *AIS_InteractiveContext::IsHilighted* has changed its behavior - now they only check highlight flags of the object or the owner in the global status. If the highlight color is required on the application level, it is necessary to use overloaded methods *AIS_InteractiveContext::HighlightStyle* for the owner and the object.
 
-The following methods were replaced in AIS_InteractiveContext API:
-- *HilightColor*, *SetHilightColor* were replaced by *HighlightStyle*, *ChangeHighlightStyle*;
-- *SelectionColor* setter and getter were replaced by *SelectionStyle*, *ChangeSelectionStyle*.
+The following methods have been replaced in *AIS_InteractiveContext* class:
+- *HilightColor* and *SetHilightColor* by *HighlightStyle* and *SetHighlightStyle*;
+- *SelectionColor* setter and getter by *SelectionStyle* and *SetSelectionStyle*.
 
-API of Prs3d_Drawer was extended to allow setting up styles for both dynamic selection and highlighting. Therefore, on application level changing highlight style for particular object must be implemented via SelectMgr_SelectableObject::HilightAttributes() and processed in entity owner.
+The API of *Prs3d_Drawer* has been extended to allow setting up styles for both dynamic selection and highlighting. Therefore, it is possible to change the highlight style of a particular object on the application level via *SelectMgr_SelectableObject::HilightAttributes()* and process it in the entity owner.
+
+@subsection upgrade_occt710_correction_of_TObj_Model Correction in TObj_Model class
+
+Methods *TObj_Model::SaveAs* and *TObj_Model::Load* now receive *TCollection_ExtendedString* filename arguments instead of char*. UTF-16 encoding can be used to pass file names containing Unicode symbols.
+
+@subsection upgrade_710_env Redundant environment variables
+
+The following environment variables have become redundant:
+
+* *CSF_UnitsLexicon* and *CSF_UnitsDefinition* are no more used.  Units definition (*UnitsAPI/Lexi_Expr.dat* and *UnitsAPI/Units.dat*) is now embedded into source code.
+* *CSF_XSMessage* and *CSF_XHMessage* are now optional.
+  English messages (XSMessage/*XSTEP.us* and SHMessage/*SHAPE.us*) are now embedded into source code
+  and automatically loaded when environment variables are not set.
+* *CSF_ShadersDirectory* is not required any more, though it still can be used to load custom shaders.
+  Mandatory GLSL resources are now embedded into source code.
+* *CSF_PluginDefaults* and other variables pointing to OCAF plugin resources (*CSF_StandardDefaults*, *CSF_XCAFDefaults*, *CSF_StandardLiteDefaults* and *CSF_XmlOcafResource*) are not necessary if method *TDocStd_Application::DefineFormat()* is used to enable persistence of OCAF documents.
+
+Other environment variables still can be used to customize behavior of relevant algorithms but are not necessary any more (all required resources are embedded).
 
 @subsection upgrade_710_removed Removed features
 
 The following obsolete features have been removed:
-
-* Obsolete Antialiasing API *V3d_View::SetAntialiasingOn()*. This method was intended to activate deprecated OpenGL functionality (GL_POLYGON_SMOOTH, GL_LINE_SMOOTH, GL_POINT_SMOOTH).
-  Instead of old API, application should request MSAA buffers for antialiasing by assigning *Graphic3d_RenderingParams::NbMsaaSamples* property of structure returned by *V3d_View::ChangeRenderingParams()*.
-* *Prs3d_Drawer::ShadingAspectGlobal()* flag has been removed as not used. Corresponding calls can be removed safely from the application code.
-* ZClipping planes and ZCueing (methods *V3d_View::SetZClippingType()*, *::SetZCueingOn()* and V3d_View::others).
-  ZClipping planes can be replaced by general-purpose clipping planes (application should update plane definion manually).
-* 3D viewer printing API *V3d_View::Print()* has been removed. This functionality was available on Windows platforms only.
-  Applications should use general image dump API *V3d_View::ToPixMap()* and manage printing using platform-specific API at application level.
+* Anti-aliasing API *V3d_View::SetAntialiasingOn()*. This method was intended to activate deprecated OpenGL functionality *GL_POLYGON_SMOOTH, GL_LINE_SMOOTH* and *GL_POINT_SMOOTH*.
+  Instead of the old API, the application should request MSAA buffers for anti-aliasing by assigning *Graphic3d_RenderingParams::NbMsaaSamples* property of the structure returned by *V3d_View::ChangeRenderingParams()*.
+* *Prs3d_Drawer::ShadingAspectGlobal()* flag has been removed as not used. The corresponding calls can be removed safely from the application code.
+* The methods managing ZClipping planes and ZCueing: *V3d_View::SetZClippingType()*, *V3d_View::SetZCueingOn()*, etc. have been removed.  ZClipping planes can be replaced by general-purpose clipping planes (the application should update plane definition manually).
+* The 3D viewer printing API *V3d_View::Print()* has been removed. This functionality was available on Windows platforms only. The applications should use the general image dump API *V3d_View::ToPixMap()* and manage printing using a platform-specific API at the application level.
   Text resolution can be managed by rendering parameter *Graphic3d_RenderingParams::Resolution*, returned by *V3d_View::ChangeRenderingParams()*.
-* Methods PrsMgr_PresentationManager::BoundBox, PrsMgr_PresentationManager::Hilight and SelectMgr_EntityOwner::Hilight were removed as not used.
-  Corresponding method in custom implementations of SelectMgr_EntityOwner can be removed safely. PrsMgr_PresentationManager::Color with corresponding style must be used instead of removed presentation manager's methods.
+* Methods *PrsMgr_PresentationManager::BoundBox*, *PrsMgr_PresentationManager::Hilight* and *SelectMgr_EntityOwner::Hilight* have been removed as not used. The corresponding method in custom implementations of *SelectMgr_EntityOwner* can be removed safely. *PrsMgr_PresentationManager::Color* with the corresponding style must be used instead.
+* Class *NCollection_QuickSort* has been removed. The code that used the tools provided by that class should be corrected manually. The recommended approach is to use sorting algorithms provided by STL (std::sort). See also @ref upgrade_occt700_sorttools above.
 
-@subsection upgrade_occt710_correction_of_TObj_Model Correction in TObj_Model class
+* Package *Dico*. The code that used the tools provided by that package should be corrected manually.  The recommended approach is to use *NCollection_DataMap* and *NCollection_IndexedDataMap* classes.
 
-Methods *TObj_Model::SaveAs* and *TObj_Model::Load* receive *TCollection_ExtendedString* filename arguments instead of char*. This shows that the filename may be not-ASCII explicitly. Also it makes OCAF API related to this functionality more conform.
+@subsection upgrade_710_changed_methods Other changes
 
+The following classes have been changed:
 
-@subsection upgrade_occt710_sorttools Removal of NCollection_QuickSort class
+* *BVH_Sorter* class has become abstract. The list of arguments of both  *Perform* methods has been changed and the methods became pure virtual.
+* *Extrema_FuncExtPS* has been renamed to *Extrema_FuncPSNorm*.
+* The default constructor and the constructor taking a point and a surface have been removed from class *Extrema_GenLocateExtPS*. Now the only constructor takes the surface and optional tolerances in U and V directions. The new method *Perform* takes the point with the start solution and processes it. The class has become not assignable and not copy-constructable.
+* Constructors with arguments *(const gp_Ax22d& D, const gp_Pnt2d& F)* have been removed from *GCE2d_MakeParabola*, *gce_MakeParab2d* and *gp_Parab2d*.  The objects created with some constructors of class *gp_Parab2d*  may differ from the previous version (see the comments in *gp_Parab2d.hxx*). The result returned by *gp_Parab2d::Directrix()* method has an opposite direction in comparison with the previous OCCT versions.
+* *BRepTools_Modifier* class now has two modes of work. They are defined by the boolean parameter *MutableInput*, which is turned off by default. This means that the algorithm always makes a copy of a sub-shape (e.g. vertex) if its tolerance is to be increased in the output shape. The old mode corresponds to *MutableInput* turned on. This change may impact an application if it implements a class derived from *BRepTools_Modifier*.
+* The second parameter *theIsOuterWire* of method *ShapeAnalysis_Wire::CheckSmallArea* has been removed.
+* In class *GeomPlate_CurveConstraint*, two constructors taking boundary curves of different types have been replaced with one constructor taking the curve of an abstract type.
+*  The last optional argument *RemoveInvalidFaces* has been removed from the constructor of class  *BRepOffset_MakeOffset* and method *Initialize*.
+* The public method *BOPDS_DS::VerticesOnIn* has been renamed into *SubShapesOnIn* and the new output parameter *theCommonPB* has been added.
 
-Class *NCollection_QuickSort* has been removed.
-The code that used the tools provided by that class should be corrected manually.
-The recommended approach is to use sorting algorithms provided by STL.
+@section upgrade_occt720 Upgrade to OCCT 7.2.0
+
+@subsection upgrade_720_removed Removed features
+
+The following obsolete features have been removed:
+* *AIS_InteractiveContext::PreSelectionColor()*, *DefaultColor()*, *WasCurrentTouched()*, *ZDetection()*.
+  These properties were unused, and therefore application should remove occurrences of these methods.
+* *AIS_InteractiveObject::SelectionPriority()*.
+  These property was not implemented.
+* The class *LocOpe_HBuilder* has been removed as obsolete.
+* The package *TestTopOpe* has been removed;
+* The package *TestTopOpeDraw* has been removed;
+* The package *TestTopOpeTools* has been removed.
+* The packages *QANewModTopOpe*, *QANewBRepNaming* and *QANewDBRepNaming* have been removed as containing obsolete features.
+* The following methods of the *IntPolyh_Triangle* class have been removed as unused:
+  - *CheckCommonEdge*
+  - *SetEdgeandOrientation*
+  - *MultipleMiddleRefinement2*.
+* The method *IntPolyh_Triangle::TriangleDeflection* has been renamed to *IntPolyh_Triangle::ComputeDeflection*.
+* The following methods of the *IntPolyh_MaillageAffinage* class have been removed as unused:
+  - *LinkEdges2Triangles*;
+  - *TriangleEdgeContact2*;
+  - *StartingPointsResearch2*;
+  - *NextStartingPointsResearch2*;
+  - *TriangleComparePSP*;
+  - *StartPointsCalcul*.
+* The method PerformAdvanced of the *ShapeConstruct_ProjectCurveOnSurface* class has been removed as unused.
+* The method Perform of the *ShapeConstruct_ProjectCurveOnSurface* class is modified:
+  - input arguments *continuity*, *maxdeg*, *nbinterval* have been removed as unused;
+  - input arguments *TolFirst*, *TolLast* have been added at the end of arguments' list.
+* Typedefs Quantity_Factor, Quantity_Parameter, Quantity_Ratio, Quantity_Coefficient, Quantity_PlaneAngle, Quantity_Length, V3d_Parameter and V3d_Coordinate have been removed; Standard_Real should be used instead.
+
+@subsection upgrade_occt720_reshape_oriented_removed Corrections in BRepOffset API
+
+In classes *BRepTools_ReShape* and *ShapeBuild_ReShape*, the possibility to process shapes different only by orientation in different ways has been removed.
+Thus methods *Remove()* and *Replace()* do not have any more the last argument 'oriented'; they work always as if *Standard_False* was passed before (default behavior).
+Methods *ModeConsiderLo()* and *Apply()* with three arguments have been removed.
+
+@subsection upgrade_occt720_correction_of_Offset_API Corrections in BRepOffset API
+
+Class *BRepOffsetAPI_MakeOffsetShape*:
+* *BRepOffsetAPI_MakeOffsetShape::BRepOffsetAPI_MakeOffsetShape()* - constructor with parameters has been deleted.
+* *BRepOffsetAPI_MakeOffsetShape::PerformByJoin()* - method has been added. This method is old algorithm behaviour. 
+
+The code below shows new calling procedure:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+    BRepOffsetAPI_MakeOffsetShape OffsetMaker;
+    OffsetMaker.PerformByJoin(Shape, OffsetValue, Tolerance);
+    NewShape = OffsetMaker.Shape();
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Class *BRepOffsetAPI_MakeThickSolid*:
+* *BRepOffsetAPI_MakeThickSolid::BRepOffsetAPI_MakeThickSolid()* - constructor with parameters has been deleted.
+* *BRepOffsetAPI_MakeThickSolid::MakeThickSolidByJoin()* - method has been added. This method is old algorithm behaviour. 
+
+The code below shows new calling procedure:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
+    BRepOffsetAPI_MakeThickSolid BodyMaker;
+    BodyMaker.MakeThickSolidByJoin(myBody, facesToRemove, -myThickness / 50, 1.e-3);
+    myBody = BodyMaker.Shape();
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+@subsection upgrade_720_highlight Highlight style
+
+Management of highlight attributes has been revised and might require modifications from application side:
+* New class *Graphic3d_PresentationAttributes* defining basic presentation attributes has been introduced.
+  It's definition includes properties previously defined by class Graphic3d_HighlightStyle (*Color*, *Transparency*),
+  and new properties (*Display mode*, *ZLayer*, optional *FillArea aspect*).
+* Class *Prs3d_Drawer* now inherits class *Graphic3d_PresentationAttributes*.
+  So that overall presentation attributes are now split into two parts - Basic attributes and Detailed attributes.
+* Class *Graphic3d_HighlightStyle* has been dropped.
+  It is now defined as a typedef to *Prs3d_Drawer*.
+  Therefore, highlight style now also includes not only Basic presentation attributes, but also Detailed attributes
+  which can be used by custom presentation builders.
+* Highlighting style defined by class *Graphic3d_PresentationAttributes* now provides more options:
+  - *Graphic3d_PresentationAttributes::BasicFillAreaAspect()* property providing complete Material definition.
+    This option, when defined, can be used instead of the pair Object Material + Highlight Color.
+  - *Graphic3d_PresentationAttributes::ZLayer()* property specifying the Layer where highlighted presentation should be shown.
+    This property can be set to Graphic3d_ZLayerId_UNKNOWN, which means that ZLayer of main presentation should be used instead.
+  - *Graphic3d_PresentationAttributes::DisplayMode()* property specifying Display Mode for highlight presentation.
+* Since Highlight and Selection styles within *AIS_InteractiveContext* are now defined by *Prs3d_Drawer* inheriting from *Graphic3d_PresentationAttributes*,
+  it is now possible to customize default highlight attributes like *Display Mode* and *ZLayer*, which previously could be defined only on Object level.
+* Properties *Prs3d_Drawer::HighlightStyle()* and *Prs3d_Drawer::SelectionStyle()* have been removed.
+  Instead, *AIS_InteractiveObject* now defines *DynamicHilightAttributes()* for dynamic highlighting in addition to *HilightAttributes()* used for highlighting in selected state.
+  Note that *AIS_InteractiveObject::HilightAttributes()* and *AIS_InteractiveObject::DynamicHilightAttributes()* override highlighting properties for both - entire object and for part coming from decomposition.
+  This includes Z-layer settings, which will be the same when overriding properties through AIS_InteractiveObject, while *AIS_InteractiveContext::HighlightStyle()* allows customizing properties for local and global selection independently
+  (with Graphic3d_ZLayerId_Top used for dynamic highlighting of entire object and Graphic3d_ZLayerId_Topmost for dynamic highlighting of object part by default).
+* The following protected fields have been removed from class *AIS_InteractiveObject*:
+  - *myOwnColor*, replaced by *myDrawer->Color()*
+  - *myTransparency*, replaced by *myDrawer->Transparency()*
+  - *myZLayer*, replaced by *myDrawer->ZLayer()*
+* The method *PrsMgr_PresentationManager::Unhighlight()* taking Display Mode as an argument has been marked deprecated.
+  Implementation now performs unhighlighting of all highlighted presentation mode.
+* The methods taking/returning *Quantity_NameOfColor* (predefined list of colors) and duplicating methods operating with *Quantity_Color* (definition of arbitrary RGB color) in AIS have been removed.
+  *Quantity_Color* should be now used instead.
+
+@subsection upgrade_720_implicit_viewer_update Elimination of implicit 3D Viewer updates
+
+Most AIS_InteractiveContext methods are defined with a flag to update viewer immediatly or not.
+Within previous version of OCCT, this argument had default value TRUE.
+While immediate viewer updates are useful for beginners (the result is displayed as soon as possible),
+this approach is inefficent for batch viewer updates, and having default value as TRUE
+leaded to non-intended accidential updates which are difficult to find.
+
+To avoid such issues, the interface has been modified and default value has been removed.
+Therefore, old application code should be updated to set the flag theToUpdateViewer explicitly
+to desired value (TRUE to preserve old previous behavior), if it was not already set.
+
+The following AIS_InteractiveContext methods have been changed:
+  Display, Erase, EraseAll, DisplayAll, EraseSelected, DisplaySelected, ClearPrs, Remove, RemoveAll, Hilight,
+  HilightWithColor, Unhilight, Redisplay, RecomputePrsOnly, Update, SetDisplayMode, UnsetDisplayMode, SetColor,
+  UnsetColor, SetWidth, UnsetWidth, SetMaterial, UnsetMaterial, SetTransparency, UnsetTransparency,
+  SetLocalAttributes, UnsetLocalAttributes, SetPolygonOffsets, SetTrihedronSize, SetPlaneSize, SetPlaneSize,
+  SetDeviationCoefficient, SetDeviationAngle, SetAngleAndDeviation, SetHLRDeviationCoefficient,
+  SetHLRDeviationAngle, SetHLRAngleAndDeviation, SetSelectedAspect, MoveTo, Select, ShiftSelect, SetSelected,
+  UpdateSelected, AddOrRemoveSelected, HilightSelected, UnhilightSelected, ClearSelected, ResetOriginalState,
+  SubIntensityOn, SubIntensityOff, FitSelected, EraseGlobal, ClearGlobal, ClearGlobalPrs.
+
+In addition, the API for immediate viewer update has been removed from V3d_View and Graphic3d_StructureManager classes
+(enumerations *Aspect_TypeOfUpdate* and *V3d_TypeOfUpdate*):
+  V3d::SetUpdateMode(), V3d::UpdateMode(), Graphic3d_StructureManager::SetUpdateMode(), Graphic3d_StructureManager::UpdateMode().
+
+The argument theUpdateMode has been removed from methods Graphic3d_CView::Display(), Erase(), Update().
+Method Graphic3d_CView::Update() does not redraw the view and does not re-compute structures anymore.
+
+The following Grid management methods within class V3d_Viewer do not implicitly redraw the viewer:
+  ActivateGrid, DeactivateGrid, SetRectangularGridValues, SetCircularGridValues,
+  RectangularGridGraphicValues, CircularGridGraphicValues, SetPrivilegedPlane, DisplayPrivilegedPlane.
+
+@subsection upgrade_720_v3d_colorname Elimination of Quantity_NameOfColor from TKV3d interface classes
+
+The duplicating interface methods accepting *Quantity_NameOfColor* (in addition to methods accepting *Quantity_Color*) of TKV3d toolkit have been removed.
+In most cases this change should be transparent, however applications implementing such interface methods should also remove them
+(compiler will automatically highlight this issue for methods marked with Standard_OVERRIDE keyword).
+
+@subsection upgrade_720_Result_Of_BOP_On_Containers Result of Boolean operations on containers
+
+* The result of Boolean operations on arguments of collection types (WIRE/SHELL/COMPSOLID) is now filtered from duplicating containers.
+
+@subsection upgrade_720_changes_methods Other changes
+
+* *MMgt_TShared* class definition has been removed - Standard_Transient should be used instead (MMgt_TShared is marked as deprecated typedef of Standard_Transient for smooth migration).
+* Class GeomPlate_BuildPlateSurface accepts base class Adaptor3d_HCurve (instead of inherited Adaptor3d_HCurveOnSurface accepted earlier).
+* Types GeomPlate_Array1OfHCurveOnSurface and GeomPlate_HArray1OfHCurveOnSurface have been replaced with GeomPlate_Array1OfHCurve and GeomPlate_HArray1OfHCurve correspondingly (accept base class Adaptor3d_HCurve instead of Adaptor3d_HCurveOnSurface).
+* Enumeration *Image_PixMap::ImgFormat*, previously declared as nested enumeration within class *Image_PixMap*, has been moved to global namespace as *Image_Format* following OCCT coding rules.
+  The enumeration values have suffix Image_Format_ and preserve previous name scheme for easy renaming of old values - e.g. Image_PixMap::ImgGray become Image_Format_Gray.
+  Old definitions are preserved as depreacated aliases to the new ones;
+* Methods *Image_PixMap::PixelColor()* and *Image_PixMap::SetPixelColor()* now take/return Quantity_ColorRGBA instead of Quantity_Color/NCollection_Vec4.
+* The method BOPAlgo_Builder::Origins() returns BOPCol_DataMapOfShapeListOfShape instead of BOPCol_DataMapOfShapeShape.
+* The methods BOPDS_DS::IsToSort(const Handle(BOPDS_CommonBlock)&, Standard_Integer&) and BOPDS_DS::SortPaveBlocks(const Handle(BOPDS_CommonBlock)&) have been removed. The sorting is now performed during the addition of the Pave Blocks into Common Block.
+* The methods BOPAlgo_Tools::MakeBlocks() and BOPAlgo_Tools::MakeBlocksCnx() have been replaced with the single template method BOPAlgo_Tools::MakeBlocks(). The chains of connected elements are now stored into the list of list instead of data map.
+* The methods BOPAlgo_Tools::FillMap() have been replaced with the single template method BOPAlgo_Tools::FillMap().
+* Package BVH now uses opencascade::handle instead of NCollection_Handle (for classes BVH_Properties, BVH_Builder, BVH_Tree, BVH_Object).
+  Application code using BVH package directly should be updated accordingly.
+* AIS_Shape now computes UV texture coordinates for AIS_Shaded presentation in case if texture mapping is enabled within Shaded Attributes.
+  Therefore, redundant class *AIS_TexturedShape is now deprecated* - applications can use *AIS_Shape* directly (texture mapping should be defined through AIS_Shape::Attributes()).
+* Methods for managing active texture within OpenGl_Workspace class (ActiveTexture(), DisableTexture(), EnableTexture()) have been moved to *OpenGl_Context::BindTextures()*.
+
+@subsection upgrade_720_BOP_DataStructure BOP - Pairs of interfering indices
+
+* The classes *BOPDS_PassKey* and *BOPDS_PassKeyBoolean* are too excessive and not used any more in Boolean Operations. To replace them the new *BOPDS_Pair* class has been implemented. Thus:
+  - The method *BOPDS_DS::Interferences()* now returns the *BOPDS_MapOfPair*;
+  - The method *BOPDS_Iterator::Value()* takes now only two parameters - the indices of interfering sub-shapes.
+
+@subsection upgrade_720_Removal_Of_Old_Boolean_Operations_Draw Removal of the Draw commands based on old Boolean operations
+
+* The commands *fubl* and *cubl* have been removed. The alternative for these commands are the commands *bfuseblend* and *bcutblend* respectively.
+* The command *ksection* has been removed. The alternative for this command is the command *bsection*.
+
+@subsection upgrade_720_Change_Of_FaceFace_Intersection Change of Face/Face intersection in Boolean operations
+
+* Previously, the intersection tolerance for all section curves between pair of faces has been calculated as the maximal tolerance among all curves.
+  Now, each curve has its own valid tolerance calculated as the maximal deviation of the 3D curve from its 2D curves or surfaces in case there are no 2D curves.
+* The methods *IntTools_FaceFace::TolReached3d()*, *IntTools_FaceFace::TolReal()* and *IntTools_FaceFace::TolReached2d()* have been removed.
+* Intersection tolerances of the curve can be obtained from the curve itself:
+  - *IntTools_Curve::Tolerance()* - returns the valid tolerance for the curve;
+  - *IntTools_Curve::TangentialTolerance()* - returns the tangential tolerance, which reflects the size of the common between faces.
+* 2d tolerance (*IntTools_FaceFace::TolReached2d()*) has been completely removed from the algorithm as unused.
+
+
+@subsection upgrade_720_persistence Restore OCCT 6.9.1 persistence
+
+The capability of reading / writing files in old format using *Storage_ShapeSchema* functionality from OCCT 6.9.1 has been restored in OCCT 7.2.0.
+
+One can use this functionality in two ways:
+- invoke DRAW Test Harness commands *fsdread / fsdwrite* for shapes;
+- call *StdStorage* class *Read / Write* functions in custom code.
+
+The code example below demonstrates how to read shapes from a storage driver using *StdStorage* class.
+
+~~~~
+// aDriver should be created and opened for reading
+Handle(StdStorage_Data) aData;
+
+// Read data from the driver
+// StdStorage::Read creates aData instance automatically if it is null
+Storage_Error anError = StdStorage::Read(*aDriver, aData);
+if (anError != Storage_VSOk)
+{
+  // Error processing
+}
+
+// Get root objects
+Handle(StdStorage_RootData) aRootData = aData->RootData();
+Handle(StdStorage_HSequenceOfRoots) aRoots = aRootData->Roots();
+if (!aRoots.IsNull())
+{
+  // Iterator over the sequence of root objects
+  for (StdStorage_HSequenceOfRoots::Iterator anIt(*aRoots); anIt.More(); anIt.Next())
+  {
+    Handle(StdStorage_Root)& aRoot = anIt.ChangeValue();
+       // Get a persistent root's object
+    Handle(StdObjMgt_Persistent) aPObject = aRoot->Object();
+    if (!aPObject.IsNull())
+    {
+      Handle(ShapePersistent_TopoDS::HShape) aHShape = Handle(ShapePersistent_TopoDS::HShape)::DownCast(aPObject);
+      if (aHShape) // Downcast to an expected type to import transient data
+      {
+        TopoDS_Shape aShape = aHShape->Import();
+        shapes.Append(aShape);
+      }
+    }
+  }
+}
+~~~~
+
+The following code demonstrates how to write shapes in OCCT 7.2.0 using *StdStorage* class.
+
+~~~~
+// Create a file driver
+NCollection_Handle<Storage_BaseDriver> aFileDriver(new FSD_File());
+
+// Try to open the file driver for writing
+try
+{
+  OCC_CATCH_SIGNALS
+  PCDM_ReadWriter::Open (*aFileDriver, TCollection_ExtendedString(theFilename), Storage_VSWrite);
+}
+catch (Standard_Failure& e)
+{
+  // Error processing
+}
+
+// Create a storage data instance
+Handle(StdStorage_Data) aData = new StdStorage_Data();
+// Set an axiliary application name (optional)
+aData->HeaderData()->SetApplicationName(TCollection_ExtendedString("Application"));
+
+// Provide a map to track sharing
+StdObjMgt_TransientPersistentMap aMap;
+// Iterator over a collection of shapes
+for (Standard_Integer i = 1; i <= shapes.Length(); ++i)
+{
+  TopoDS_Shape aShape = shapes.Value(i);
+  // Translate a shape to a persistent object
+  Handle(ShapePersistent_TopoDS::HShape) aPShape =
+    ShapePersistent_TopoDS::Translate(aShape, aMap, ShapePersistent_WithTriangle);
+  if (aPShape.IsNull())
+  {
+    // Error processing
+  }
+
+  // Construct a root name
+  TCollection_AsciiString aName = TCollection_AsciiString("Shape_") + i;
+
+  // Add a root to storage data
+  Handle(StdStorage_Root) aRoot = new StdStorage_Root(aName, aPShape);
+  aData->RootData()->AddRoot(aRoot);
+}
+
+// Write storage data to the driver
+Storage_Error anError = StdStorage::Write(*aFileDriver, aData);
+if (anError != Storage_VSOk)
+{
+  // Error processing
+}
+~~~~
+
+@subsection upgrade_720_Change_In_BRepLib_MakeFace_Algo Change in BRepLib_MakeFace algorithm
+
+Previously, *BRepLib_MakeFace* algorithm changed orientation of the source wire in order to avoid creation of face as a hole (i.e. it is impossible to create the entire face as a hole; the hole can be created in context of another face only). New algorithm does not reverse the wire if it is open. Material of the face for the open wire will be located on the left side from the source wire.
+
+@subsection upgrade_720_Change_In_BRepFill_OffsetWire Change in BRepFill_OffsetWire algorithm
+
+From now on, the offset  will always be directed to the outer region in case of positive offset value and to the inner region in case of negative offset value.
+Inner/Outer region for an open wire is defined by the following rule:
+when we go along the wire (taking into account edges orientation) the outer region will be on the right side, the inner region will be on the left side.
+In case of a closed wire, the inner region will always be inside the wire (at that, the edges orientation is not taken into account).
+
+@subsection upgrade_720_Change_In_GeomAdaptor_Curve Change in Geom(2d)Adaptor_Curve::IsPeriodic
+
+Since 7.2.0 version, method *IsPeriodic()* returns the corresponding status of periodicity of the basis curve regardless of closure status of the adaptor curve (see method *IsClosed()*).
+Method *IsClosed()* for adaptor can return false even on periodic curve, in the case if its parametric range is not full period, e.g. for adaptor on circle in range [0, @f$ \pi @f$].
+In previous versions, *IsPeriodic()* always returned false if *IsClosed()* returned false.
+
+@subsection upgrade_720_UnifySameDomain Change in algorithm ShapeUpgrade_UnifySameDomain
+
+The history of the changing of the initial shape was corrected:
+* all shapes created by the algorithm are considered as modified shapes instead of generated ones;
+* method Generated was removed and its calls should be replaced by calls of method History()->Modified.
+
+@subsection upgrade_720_Change_In_RWStl Changes in STL Reader / Writer
+
+Class RWStl now uses class Poly_Triangulation for storing triangular mesh instead of StlMesh data classes; the latter have been removed.
+
+@subsection upgrade_720_New_Error_Warning_system_in_BOA Refactoring of the Error/Warning reporting system in Boolean Component
+
+The Error/Warning reporting system of the algorithms in Boolean Component (in all BOPAlgo_* and BRepAlgoAPI_* algorithms) has been refactored.
+The methods returning the status of errors and warnings of the algorithms (ErrorStatus() and WarningStatus()) have been removed.
+Instead use methods HasErrors() and HasWarnings() to check for presence of errors and warnings, respectively.
+The full list of errors and warnings, with associated data such as problematic sub-shapes, can be obtained by method GetReport().
+
+@section upgrade_occt721 Upgrade to OCCT 7.2.1
+
+@subsection upgrade_721_Changes_In_USD Changes in ShapeUpgrade_UnifySameDomain
+
+The following public methods in the class ShapeUpgrade_UnifySameDomain became protected:
+* *UnifyFaces*
+* *UnifyEdges*
+
+The following public method has been removed:
+* *UnifyFacesAndEdges*
+
+@subsection upgrade_721_Move_BuildPCurveForEdgeOnPlane Moving BuildPCurveForEdgeOnPlane from BOPTools_AlgoTools2D to BRepLib
+
+The methods BuildPCurveForEdgeOnPlane and BuildPCurveForEdgesOnPlane have been moved from the class BOPTools_AlgoTools2D
+to the more lower level class BRepLib.
+
+@subsection upgrade_721_removed Removed features
+
+The following obsolete features have been removed:
+* The package BOPCol has been fully removed:
+  - *BOPCol_BaseAllocator* is replaced with *Handle(NCollection_BaseAllocator)*;
+  - *BOPCol_BoxBndTree* is replaced with *BOPTools_BoxBndTree*;
+  - *BOPCol_Box2DBndTree* is removed as unused;
+  - *BOPCol_DataMapOfIntegerInteger* is replaced with *TColStd_DataMapOfIntegerInteger*;
+  - *BOPCol_DataMapOfIntegerListOfInteger* is replaced with *TColStd_DataMapOfIntegerListOfInteger*;
+  - *BOPCol_DataMapOfIntegerListOfShape* is replaced with *TopTools_DataMapOfIntegerListOfShape*;
+  - *BOPCol_DataMapOfIntegerMapOfInteger.hxx* is removed as unused;
+  - *BOPCol_DataMapOfIntegerReal* is replaced with *TColStd_DataMapOfIntegerReal*;
+  - *BOPCol_DataMapOfIntegerShape* is replaced with *TopTools_DataMapOfIntegerShape*;
+  - *BOPCol_DataMapOfShapeBox* is replaced with *TopTools_DataMapOfShapeBox*;
+  - *BOPCol_DataMapOfShapeInteger* is replaced with *TopTools_DataMapOfShapeInteger*;
+  - *BOPCol_DataMapOfShapeListOfShape* is replaced with *TopTools_DataMapOfShapeListOfShape*;
+  - *BOPCol_DataMapOfShapeReal* is replaced with *TopTools_DataMapOfShapeReal*;
+  - *BOPCol_DataMapOfShapeShape* is replaced with *TopTools_DataMapOfShapeShape*;
+  - *BOPCol_DataMapOfTransientAddress* is removed as unused;
+  - *BOPCol_IndexedDataMapOfIntegerListOfInteger* is removed as unused;
+  - *BOPCol_IndexedDataMapOfShapeBox* is removed as unused;
+  - *BOPCol_IndexedDataMapOfShapeInteger* is removed as unused;
+  - *BOPCol_IndexedDataMapOfShapeListOfShape* is replaced with *TopTools_IndexedDataMapOfShapeListOfShape*;
+  - *BOPCol_IndexedDataMapOfShapeReal* is removed as unused;
+  - *BOPCol_IndexedDataMapOfShapeShape* is replaced with *TopTools_IndexedDataMapOfShapeShape*;
+  - *BOPCol_IndexedMapOfInteger* is replaced with *TColStd_IndexedMapOfInteger*;
+  - *BOPCol_IndexedMapOfOrientedShape* is replaced with *TopTools_IndexedMapOfOrientedShape*;
+  - *BOPCol_IndexedMapOfShape* is replaced with *TopTools_IndexedMapOfShape*;
+  - *BOPCol_ListOfInteger* is replaced with *TColStd_ListOfInteger*;
+  - *BOPCol_ListOfListOfShape* is replaced with *TopTools_ListOfListOfShape*;
+  - *BOPCol_ListOfShape* is replaced with *TopTools_ListOfShape*;
+  - *BOPCol_MapOfInteger* is replaced with *TColStd_MapOfInteger*;
+  - *BOPCol_MapOfOrientedShape* is replaced with *TopTools_MapOfOrientedShape*;
+  - *BOPCol_MapOfShape* is replaced with *TopTools_MapOfShape*;
+  - *BOPCol_PListOfInteger* is removed as unused;
+  - *BOPCol_PInteger* is removed as unused
+  - *BOPCol_SequenceOfPnt2d* is replaced with *TColgp_SequenceOfPnt2d*;
+  - *BOPCol_SequenceOfReal* is replaced with *TColStd_SequenceOfReal*;
+  - *BOPCol_SequenceOfShape* is replaced with *TopTools_SequenceOfShape*;
+  - *BOPCol_Parallel* is replaced with *BOPTools_Parallel*;
+  - *BOPCol_NCVector* is replaced with *NCollection_Vector*;
+* The class *BOPDS_PassKey* and containers for it have been removed as unused.
+* The unused containers from *IntTools* package have been removed:
+  - *IntTools_DataMapOfShapeAddress* is removed as unused;
+  - *IntTools_IndexedDataMapOfTransientAddress* is removed as unused;
+* The container *BiTgte_DataMapOfShapeBox* is replaced with *TopTools_DataMapOfShapeBox*;
+* The class *BOPTools* has been removed as duplicate of the class *TopExp*;
+* The method *BOPAlgo_Builder::Splits()* has been removed as excessive. The method *BOPAlgo_Builder::Images()* can be used instead.
+
+@section upgrade_occt730 Upgrade to OCCT 7.3.0
+
+@subsection upgrade_730_lights Light sources
+
+Multiple changes have been applied to lights management within TKV3d and TKOpenGl:
+* V3d_Light class is now an alias to Graphic3d_CLight.
+  Graphic3d_CLight is now a Handle class with refactored methods for managing light source parameters
+  (preserving most methods of V3d_Light sub-classes to simplify porting).
+* Obsolete debugging functionality for drawing lights source has been removed from V3d_Light.
+  Methods and constructors taking parameters for this drawing and not affecting light definition itself has been also removed.
+* Light constructors taking V3d_Viewer has been marked deprecated.
+  Application may call V3d_Viewer::AddLight() explicitly to register new light sources created by new constructors within V3d_Viewer, but this step is now optional.
+* The upper limit of 8 light sources has been removed.
+* Dedicated classes per light source type V3d_AmbientLight, V3d_DirectionalLight, V3d_PositionalLight and V3d_SpotLight have been preserved,
+  but it is now possible defining light of any type by creating base class Graphic3d_CLight directly.
+  Dedicated classes only hides visibility of unrelated light properties depending on its type.
+* Calling V3d_Viewer::UpdateLights() is no more required after modifying light sources properties (color, position, etc.).
+
+@subsection upgrade_730_BOPAlgo_Section Changes in BOPAlgo_Section
+
+The public method *BuildSection()* in the class *BOPAlgo_Section* has became protected. The methods *Perform()* or *PerformWithFiller()* should be called for construction of the result of SECTION operation.
+
+@subsection upgrade_730_BRepAdaptor_CompCurve Changes in BRepAdaptor_CompCurve
+
+The method BRepAdaptor_CompCurve::SetPeriodic has been eliminated.
+Since new version, the method BRepAdaptor_CompCurve::IsPeriodic() will always return FALSE. Earlier, it could return TRUE in case if the wire contained only one edge based on periodic curve. 
+
+@subsection upgrade_730_removed Removed features
+* The methods *SetDeflection*, *SetEpsilonT*, *SetDiscretize* of the class *IntTools_EdgeFace* have been removed as excessive.