View Issue Details

IDProjectCategoryView StatusLast Update
0031401Open CASCADEOCCT:Visualizationpublic2024-01-12 21:23
Reporterkgv Assigned Todpasukhi  
PrioritynormalSeverityintegration request 
Status newResolutionopen 
Target VersionUnscheduled 
Summary0031401: Visualization - revise Toolkits dependency graph
DescriptionVisualization 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.
TagsNo tags attached.
Test case number


related to 0026106 closedbugmaster Open CASCADE BRepMesh - revision of data model 
related to 0023049 closedbugmaster Open CASCADE Optimize packaging and dependencies of visualization libraries 
parent of 0025852 closedbugmaster Open CASCADE Visualization - Font_BRepFont produces bad faces for circled symbols 
parent of 0031087 closedsmoskvin Open CASCADE Configuration - make FreeType dependency optional 
parent of 0031429 newvpozdyayev Open CASCADE Visualization - move out core AIS packages from TKV3d to TKService 
parent of 0031431 closedkgv Open CASCADE Visualization, PrsMgr_PresentableObject - simplify HLR computing interface 
parent of 0031456 closedbugmaster Open CASCADE Visualization - move out Dimensions and Relations from package AIS to PrsDims 
parent of 0031458 closedbugmaster Open CASCADE Visualization - refine classes across Prs3d and StdPrs packages 
parent of 0032286 closedbugmaster Community Configuration, TKService - make Xlib dependency optional 
parent of 0032232 closedbugmaster Open CASCADE Draw Harness - make Tk dependency optional 
parent of 0032308 closedbugmaster Open CASCADE Configuration - make Xlib dependency optional 
related to 0032268 resolvedvpozdyayev Community Configuration, CMake - a proposal for minimal build flag in CMake 
related to 0032488 newjgv Open CASCADE Draw Harness - Repack toolkit TKDraw to avoid possible cyclic dependency 
Not all the children of this issue are yet resolved or closed.



2020-03-04 20:18

reporter   ~0090824

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?

Issue History

Date Modified Username Field Change
2020-03-04 10:19 kgv New Issue
2020-03-04 10:19 kgv Assigned To => kgv
2020-03-04 10:23 kgv Description Updated
2020-03-04 10:23 kgv Relationship added related to 0025852
2020-03-04 10:23 kgv Relationship replaced parent of 0025852
2020-03-04 10:24 kgv Description Updated
2020-03-04 10:25 kgv Description Updated
2020-03-04 10:28 kgv Relationship added parent of 0031087
2020-03-04 10:28 kgv Description Updated
2020-03-04 12:18 kgv Description Updated
2020-03-04 20:18 pdn Note Added: 0090824
2020-03-04 20:54 kgv Relationship added related to 0026106
2020-03-04 20:55 kgv Description Updated
2020-03-14 13:31 kgv Relationship added parent of 0031429
2020-03-14 21:03 kgv Relationship added parent of 0031431
2020-03-21 16:35 kgv Relationship added parent of 0031456
2020-03-22 13:30 kgv Relationship added parent of 0031458
2020-09-21 17:42 kgv Target Version 7.5.0 => 7.6.0
2021-04-06 20:45 kgv Relationship added related to 0032268
2021-04-06 20:50 kgv Relationship added related to 0023049
2021-04-06 21:18 kgv Relationship added parent of 0032286
2021-04-15 12:41 kgv Relationship added parent of 0032232
2021-04-17 20:42 kgv Relationship added parent of 0032308
2021-08-24 15:23 kgv Relationship added related to 0032488
2021-09-09 21:30 kgv Target Version 7.6.0 => 7.7.0
2022-08-17 11:55 kgv Target Version 7.7.0 => 7.8.0
2022-10-19 15:49 smoskvin Assigned To kgv => vpozdyayev
2023-08-01 15:09 dpasukhi Target Version 7.8.0 => Unscheduled
2024-01-12 21:23 dpasukhi Assigned To vpozdyayev => dpasukhi