- Introduce BRepFont with planar glyph regularization and TopoDS/BRepGraph builders.
- Add glyph outline identities and direct outline loading to Font_FTFont.
- Consolidate glyph and text conversion in StdPrs_BRepFont with
bounded thread-safe caching and per-call contour concatenation.
- Remove legacy Font_BRepFont and BRep text builders and migrate existing callers.
- Add focused tests and update the 8.1.0 migration documentation.
Some *trace* old debug classes existed for long time.
Their purpose is accumulte some trace logic for TopOpe or BRepFeat packages.
The problem is that that functionality is no longer used by active developers.
And the functionality in some cases changes behavior and make more complicated to debug.
Lack of documentation how to work with and impact on behavior and
usage of global/static variables make these classes heavy legacy.
ChFi3d_Debug and OCCT_DEBUG definitions sometimes impact on
algorihm behavior and have lack of documentation to use.
- Remove unused ChFi3d trace and context switches
- Remove global performance counters and chronometers
- Remove cross-toolkit timing code from BiTgte_Blend
- Remove obsolete ChFi3d_Debug source file
- Replace raw rejection-cache arrays with locally owned NCollection_LinearVector storage
- Manage the rejection cache through std::unique_ptr and make destruction idempotent
- Replace mutable masks and numeric globals with constexpr calculations and Precision::Angular()
- Remove obsolete HLRBRep_InternalAlgo debug state, counters, traces, and the hdebug command
- Simplify dead interference-handling branches
- Add exact HLR tests for empty storage, reversed edge ordering, 32-bit word boundaries, and empty algorithms
- Replace handled parameter arrays and sequence-based interval fusion
with direct Array1 and LinearVector APIs, and migrate all callers.
- Reuse LinearVector and Array buffers in surface extension and use
LocalArray views for fixed small curve workspaces.
- Adopt size_t zero-based access and EvalD methods while narrowing
temporary lifetimes and using structured bindings where clearer.
- Centralize numerical policy constants and preserve parameter ranges
during repeated denominator-derivative cancellation.
- Correct affine line directions, isoline degeneration checks, and
rational Bezier and BSpline boundary comparisons.
- Add focused GTests for array bounds, interval fusion, curve and
surface extension, rational closedness, and normal estimation.
- Make Value(), D0-D3(), and DN() non-virtual wrappers delegating to EvalD*().
- Move evaluation logic to EvalD*() in Adaptor2d_Line2d and Adaptor2d_OffsetCurve.
- Remove redundant legacy evaluation overrides from Geom2dAdaptor_Curve.
- Migrate ProjLib_CompProjectedCurve evaluation logic to EvalD*().
- Remove unimplemented evaluation overrides from ProjLib_ProjectedCurve.
- Update related documentation for the Eval-based API.
- Introduce consistent zero-based APIs using size_t for dimensions and indices.
- Add explicit result statuses, optional outputs, and callback error handling.
- Improve scaling, validation, and convergence checks in numerical solvers.
- Strengthen polynomial root isolation, multiplicity reporting, and deflation.
- Improve integration, optimization, root-finding, and nonlinear-system methods.
- Keep fixed-size Newton solvers allocation-free in their iteration loops.
- Add zero-based accessors to math_Vector, math_Matrix, and NCollection_Array2.
- Expand GTests and comparisons with equivalent legacy math_* algorithms.
- Document indexing, failure behavior, tolerances, and convergence contracts.
- Restore ShapeFix_EdgeConnect for rebuilding shared vertices
between connected edges.
- Restore ShapeFix_FaceConnect for sewing selected face boundaries
and rebuilding affected shells.
- Restore ShapeUpgrade_ShellSewing for sewing individual shells and
correcting solid orientation.
- Register all restored classes in the TKShHealing source manifests.
- Add focused GTests covering connectivity, tolerances,
orientation, topology, repeated use, and failure cases.
- Validate resulting edge lengths and surface areas against input
properties and analytical references.
- Refactor the restored implementations into smaller, maintainable
phases while preserving the original algorithms.
- Modernize NCollection containers, lookup APIs, and iteration
according to ordering and storage requirements.
- Synchronize declaration and definition argument names.
- Promote allocation-size operands to size_t before multiplication in
BSplCLib, BSplSLib, PLib, ApproxInt, GeomEval, and OpenGl
- Compute AdvApp2Var workspace offsets in intptr_t to avoid intermediate
integer overflow
- Evaluate quadric and manipulator coordinates in double before storing
them in gp_Pnt
- Use widened OpenGl row offsets consistently for buffer allocation and
indexing.
- Mark immutable geometry values and buffer sizes as const.
- Restore compatibility headers for removed typedef-only declarations.
- Mark restored headers and aliases deprecated since OCCT 8.1.0.
- Group legacy typedefs under Deprecated/TypeAliases.
- Keep aliases of fully removed classes excluded.
- Replace UTL path, environment, file-access, string,
and storage helpers with OSD, TCollection.
- Remove the UTL package from TKCDF.
- Share document-reference parsing between binary and XML retrieval drivers.
- Validate malformed reference records without introducing new exceptions.
- Handle extensionless document paths without querying an invalid resource key.
- Simplify path decomposition using OSD_Path::FolderAndFileFromPath().
- Replace handled math_Vector buffers with NCollection_Array1 and
NCollection_LocalArray storage.
- Reuse Gauss and knot buffers across integration iterations.
- Use zero-based size_t indexing and standard algorithms for interval
construction and error selection.
- Convert the Gauss integration type to enum class.
- Simplify inertia initialization and remove obsolete helper methods.
- introduce StepData_Field::FieldKind and remove duplicated numeric kind macros
- preserve compact field storage while correcting 2D dimensions and bounds
- fix integer access and independent copying of one-dimensional lists
- preserve false, true, and unknown logical select values
- iterate entity fields from their actual array lower bounds
- validate StepData_FieldListN sizes
- handle null and unsupported values safely in StepData_StepWriter
- support arbitrary lower bounds when writing real arrays
- Transform geometry and polygonal data in their representation frames.
- Correct triangulation winding and normals for mirrored and general transformations.
- Stabilize normal transformation for very small, large, and singular scales.
- Preserve absent and parameterless polygonal representations correctly.
- Keep the cached general-transformation scale synchronized through the restricted API.
- Add configurable search and Graphviz settings.
- Use the selected Doxygen executable for documentation targets.
- Simplify the Windows documentation build workflow.
- Update Doxygen-related CMake option descriptions.
- Replace sequence storage with linear vectors and paired orientation data.
- Reuse GeomAdaptor_Surface for EvalD1-based quasi-punctual checks.
- Use LocalArray-backed buffers with At()/ChangeAt() access.
- Sample geometry-driven intervals without fixed floating-point loops.
- Preserve initialization failure cleanup with RAII.
Use stream APIs instead of temporary files in migrated GTests.
Restore DRAW cases whose serialized data or file-bound behavior is part of the regression.
Keep incomplete cases as explicit TODO skips and tighten deterministic storage expectations.
- Preserve carriage returns embedded within fixed-width 80-column IGES records.
- Support CR, LF, CRLF, and delimiter-free record boundaries.
- Restore legacy handling of physical preambles, encoded FNES records, and shifted D-exponent values.
- Serialize IGES provider tests because the legacy reader uses global state.
- Add exact regression expectations for parsed entities, topology, and corrupted input.
- Correct KPartCircle() handling when an offset collapses a circular edge.
- Prevent fallback to the generic MAT algorithm after the circular special case has been recognized.
- Add GTests for circular wires at, above, and below the 2 mm diameter boundary.
- Cover negative taper, positive offset, and collapsed-circle cases.
Migrate some DRAW tests which do not use external
CAD files and which do not use visualisation/image dump.
Some tests were modified, but the original idea was preserved
- Detect complete coincidence between fillet and chamfer intersection curves.
- Preserve orientation relationships between equivalent intersection curves.
- Reuse existing restriction edges instead of constructing duplicate topology.
- Merge coincident curve endpoints into shared topological vertices.
- Exclude fully consumed faces and their obsolete boundary edges during reconstruction.
- Mark edges collapsed to a single vertex as degenerated during construction.
- Accept tangential contacts while rejecting transversal intersections.
- Preserve generated and modified shape history in the resulting topology.
- Add GTests for convex, concave, opposing-edge, chamfer, and history cases.
- Add IGES stream reading and writing to DEIGES providers.
- Extend IFSelect, XSControl, and work libraries with generic stream output.
- Keep STEP work-library output aligned with the shared stream interface.
- Convert the legacy IGES parser from C to modern C++.
- Introduce buffered parsing of fixed 80-column IGES records.
- Support LF, CRLF, CR-only, and delimiter-free record layouts.
- Preserve FNES preamble detection and encoded record handling.
- Handle stream errors, enabled exceptions, partial reads, and cleanup safely.
- Isolate mutable parser data with thread-local storage.
- Serialize access to process-wide IGES configuration and restore it on exit.
- Preserve supplied work sessions, transferred models, and selected modifiers.
- Apply modern OCCT naming, casting, documentation, and control-flow style.
- Add tests for shape and document stream I/O, record layouts, and failures.
- Add a thread-safe lazy grid to CSLib_Class2d for constant-time
classification away from polygon boundaries while preserving the exact
tolerance path for boundary cells.
- Normalize coordinates and explicit tolerances robustly, handle invalid and
extreme input values, and preserve cache state correctly across copy and
move operations.
- Cache face wires, edge occurrences, pcurves, parameter ranges, and optional
2D bounding boxes in BRepClass_FaceExplorer to avoid repeated topology and
geometry traversal during exact classification.
- Introduce explicit cached-geometry and bounding-box states in
BRepClass_Edge, invalidate derived data on topology changes, and isolate
bounding-box construction failures per edge.
- Reuse a lazily constructed exact face explorer in
BRepTopAdaptor_FClass2d, cache periodic surface properties, and serialize
access to mutable exact-classification traversal state.
- Replace node-based classifier and point sequences with contiguous linear
vectors, remove intermediate polygon copies, and make tighter wire
discretization transactional.
- Consolidate Perform() and TestOnRestriction() through a shared
classification path while preserving their boundary and periodic
recadrement semantics.
Removed adm/scripts which were no longer actual and not validated.
Removed adm/templates which were no longer used and not validated.
Fixed the issue with the mixing FreeType/FreeImage inside env.bat
Guard invalid edges, faces, adaptors, and missing pcurves before they
are passed to BRepAdaptor_Curve2d or dereferenced during chamfer construction.
When the topology does not provide a valid curve-on-surface, preserve
the existing state where possible and return false.
This makes an oversized or otherwise invalid chamfer finish with IsDone() == false
instead of crashing in BRep_Tool::CurveOnSurface.
Use Adaptor3d_CurveOnSurface composed-curve recognition to handle
provable elementary cases directly:
- compute the exact maximum at interval endpoints for line pairs;
- Compute exact maxima for line pairs and use trigonometric roots for
circle and ellipse pairs.
- preserve the existing PSO/Newton pipeline for all other cases.
---------
CLA ID 1148
Co-authored-by: dpasukhi <dpasukhi@opencascade.com>
Correct obsolete API references, code examples, terminology, links, and
contribution workflow instructions across the documentation.
Generate Doxygen example paths from OCCT package metadata and fix license
markup. Remove obsolete documentation CMake, layout, and unused PDF
generation files.
Enable system TBB discovery on Windows when no explicit third-party
installation is selected. Support MinGW FreeType import libraries and
versioned runtime DLLs.
Preserve imported CMake targets during CSF processing and validate
MSYS2 GCC and Clang dependency artifacts in master validation.