MantisBT - Open CASCADE
View Issue Details
0031401Open CASCADE[OCCT] OCCT:Visualizationpublic2020-03-04 10:192020-09-21 17:42
normalintegration request 
[OCCT] 7.6.0* 
0031401: Visualization - revise Toolkits dependency graph
Visualization module consists of the following Toolkits:
- TKService
  Key dependencies: TKBRep.
  External: FreeType, FreeImage (optional), FFmpeg (optional).
- TKV3d
  Key dependencies: TKService, TKBRep, TKHLR, TKMesh [implies TKShHealing since 0026106]
- TKOpenGl [depends on TKV3d and OpenGL]
- TKMeshVS [depends on TKV3d]
- TKD3DHost [depends on TKOpenGl and D3D9]
- TKIVtk [depends on TKV3d and VTK]

There are numerous problems in current dependency graph:
- TKOpenGl depends on a bunch of unrelated libraries,
  while it is supposed only to provide OpenGL backend
  to Graphic3d_GraphicDriver interface.
     * Proposition: Move out Graphic3d package from TKV3d to dedicated toolkit TKGraphic3d.
     * Problems: Should be trivial to do?
- TKService depends on TKBRep for implementing Font_BRepFont class
  (previously depending also on TKShHealing, which has been eliminated 0025852).
     * Proposition: Move out Font_BRepFont to another toolkit.
     * Problems: ?.
- TKV3d depends on TKMesh (implying TKShHealing and big set of fat dependencies)
     * Proposition: Move out TKMesh dependency by using plugin interface (IMeshTools_MeshAlgoFactory).
     * Problems: Make sure making porting of existing applications implicit or smooth.
- TKV3d depends on TKHLR
     * Proposition: HLR is a rarely used presentation, which is better being provided via plugin interface.
     * Problems: implement transparent plugin interface and make porting of existing application smooth.
- TKV3d depends on TKBRep
     * Proposition: move out TopoDS_Shape from TKV3d to dedicated toolkit.
     * Problems: AIS, StdPrs and StdSelect are tightly bound/mixed with TopoDS_Shape;
                 separating will require splitting existing packages, renaming classes
                 and probably introduction of new sub-classes
                (how to handle AIS_InteractiveContext - remove deprecated methods?).
- TKService depends on FreeType unconditionally;
  in rare cases, it is acceptable using OCCT 3D Viewer without text output.
     * Proposition: make FreeType dependency optional 0031087.
     * Problems: updating CMake scripts.

This is a meta issue - progress is expected to be done by small steps as child issues.
No tags attached.
related to 0026106closed bugmaster Open CASCADE BRepMesh - revision of data model 
parent of 0025852closed bugmaster Open CASCADE Visualization - Font_BRepFont produces bad faces for circled symbols 
parent of 0031087assigned bugmaster Open CASCADE Configuration - make FreeType dependency optional 
parent of 0031429new kgv Open CASCADE Visualization - move out core AIS packages from TKV3d to TKService 
parent of 0031431closed kgv Open CASCADE Visualization, PrsMgr_PresentableObject - simplify HLR computing interface 
parent of 0031456closed bugmaster Open CASCADE Visualization - move out Dimensions and Relations from package AIS to PrsDims 
parent of 0031458closed bugmaster Open CASCADE Visualization - refine classes across Prs3d and StdPrs packages 
Not all the children of this issue are yet resolved or closed.
Issue History
2020-03-04 10:19kgvNew Issue
2020-03-04 10:19kgvAssigned To => kgv
2020-03-04 10:23kgvDescription Updatedbug_revision_view_page.php?rev_id=22630#r22630
2020-03-04 10:23kgvRelationship addedrelated to 0025852
2020-03-04 10:23kgvRelationship replacedparent of 0025852
2020-03-04 10:24kgvDescription Updatedbug_revision_view_page.php?rev_id=22631#r22631
2020-03-04 10:25kgvDescription Updatedbug_revision_view_page.php?rev_id=22632#r22632
2020-03-04 10:28kgvRelationship addedparent of 0031087
2020-03-04 10:28kgvDescription Updatedbug_revision_view_page.php?rev_id=22633#r22633
2020-03-04 12:18kgvDescription Updatedbug_revision_view_page.php?rev_id=22643#r22643
2020-03-04 20:18pdnNote Added: 0090824
2020-03-04 20:54kgvRelationship addedrelated to 0026106
2020-03-04 20:55kgvDescription Updatedbug_revision_view_page.php?rev_id=22644#r22644
2020-03-04 21:14kgvRelationship addedrelated to 0031070
2020-03-14 13:31kgvRelationship addedparent of 0031429
2020-03-14 21:03kgvRelationship addedparent of 0031431
2020-03-21 16:35kgvRelationship addedparent of 0031456
2020-03-22 13:30kgvRelationship addedparent of 0031458
2020-09-21 17:42kgvTarget Version7.5.0 => 7.6.0*

2020-03-04 20:18   
It is strange that BRepMesh requires ShapeHealing.

Actually it depends on ShapeAnalysis. The dependence of ShapeAnalysis_Edge is easy to avoid.

Concerning ShapeAnalysis_Wire (used for reorder) may be to put this tool in more "core" packages?