@tscircuit/schematic-trace-solver 0.0.43 → 0.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +17 -3
- package/dist/index.js +809 -86
- package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +0 -1
- package/lib/solvers/TraceCleanupSolver/TraceCleanupSolver.ts +83 -36
- package/lib/solvers/TraceCleanupSolver/hasCollisions.ts +16 -4
- package/lib/solvers/TraceCleanupSolver/is4PointRectangle.ts +17 -0
- package/lib/solvers/TraceCleanupSolver/isSegmentAnEndpointSegment.ts +36 -0
- package/lib/solvers/TraceCleanupSolver/mergeGraphicsObjects.ts +28 -0
- package/lib/solvers/TraceCleanupSolver/minimizeTurnsWithFilteredLabels.ts +18 -1
- package/lib/solvers/TraceCleanupSolver/recognizeStairStepPattern.ts +56 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/UntangleTraceSubsolver.ts +370 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/findAllLShapedTurns.ts +48 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/findIntersectionsWithObstacles.ts +36 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/generateLShapeRerouteCandidates.ts +107 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/generateRectangleCandidates.ts +55 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/getTraceObstacles.ts +25 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/isPathColliding.ts +58 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeCandidates.ts +33 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeCollision.ts +20 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeIntersectionPoints.ts +26 -0
- package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeLSapes.ts +33 -0
- package/lib/solvers/TraceCleanupSolver/turnMinimization.ts +50 -56
- package/lib/solvers/TraceCleanupSolver/visualizeTightRectangle.ts +24 -0
- package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapShiftSolver.ts +83 -0
- package/package.json +1 -1
- package/tests/examples/__snapshots__/example16.snap.svg +4 -4
- package/tests/examples/__snapshots__/example29.snap.svg +7 -7
package/dist/index.d.ts
CHANGED
|
@@ -238,6 +238,7 @@ declare class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
238
238
|
*/
|
|
239
239
|
traceNetIslands: Record<ConnNetId, Array<SolvedTracePath>>;
|
|
240
240
|
correctedTraceMap: Record<MspConnectionPairId, SolvedTracePath>;
|
|
241
|
+
cleanupPhase: "diagonals" | "done" | null;
|
|
241
242
|
constructor(params: {
|
|
242
243
|
inputProblem: InputProblem;
|
|
243
244
|
inputTracePaths: Array<SolvedTracePath>;
|
|
@@ -248,6 +249,8 @@ declare class TraceOverlapShiftSolver extends BaseSolver {
|
|
|
248
249
|
findNextOverlapIssue(): {
|
|
249
250
|
overlappingTraceSegments: Array<OverlappingTraceSegmentLocator>;
|
|
250
251
|
} | null;
|
|
252
|
+
private findNextDiagonalSegment;
|
|
253
|
+
private findAndFixNextDiagonalSegment;
|
|
251
254
|
_step(): void;
|
|
252
255
|
visualize(): graphics_debug.GraphicsObject;
|
|
253
256
|
}
|
|
@@ -514,17 +517,23 @@ declare class LongDistancePairSolver extends BaseSolver {
|
|
|
514
517
|
};
|
|
515
518
|
}
|
|
516
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Defines the input structure for the TraceCleanupSolver.
|
|
522
|
+
*/
|
|
517
523
|
interface TraceCleanupSolverInput {
|
|
518
524
|
inputProblem: InputProblem;
|
|
519
525
|
allTraces: SolvedTracePath[];
|
|
520
|
-
targetTraceIds: Set<string>;
|
|
521
526
|
allLabelPlacements: NetLabelPlacement[];
|
|
522
527
|
mergedLabelNetIdMap: Record<string, Set<string>>;
|
|
523
528
|
paddingBuffer: number;
|
|
524
529
|
}
|
|
525
530
|
/**
|
|
526
|
-
*
|
|
527
|
-
*
|
|
531
|
+
* The TraceCleanupSolver is responsible for improving the aesthetics and readability of schematic traces.
|
|
532
|
+
* It operates in a multi-step pipeline:
|
|
533
|
+
* 1. **Untangling Traces**: It first attempts to untangle any overlapping or highly convoluted traces using a sub-solver.
|
|
534
|
+
* 2. **Minimizing Turns**: After untangling, it iterates through each trace to minimize the number of turns, simplifying their paths.
|
|
535
|
+
* 3. **Balancing L-Shapes**: Finally, it balances L-shaped trace segments to create more visually appealing and consistent layouts.
|
|
536
|
+
* The solver processes traces one by one, applying these cleanup steps sequentially to refine the overall trace layout.
|
|
528
537
|
*/
|
|
529
538
|
declare class TraceCleanupSolver extends BaseSolver {
|
|
530
539
|
private input;
|
|
@@ -533,8 +542,13 @@ declare class TraceCleanupSolver extends BaseSolver {
|
|
|
533
542
|
private tracesMap;
|
|
534
543
|
private pipelineStep;
|
|
535
544
|
private activeTraceId;
|
|
545
|
+
activeSubSolver: BaseSolver | null;
|
|
536
546
|
constructor(solverInput: TraceCleanupSolverInput);
|
|
537
547
|
_step(): void;
|
|
548
|
+
private _runUntangleTracesStep;
|
|
549
|
+
private _runMinimizeTurnsStep;
|
|
550
|
+
private _runBalanceLShapesStep;
|
|
551
|
+
private _processTrace;
|
|
538
552
|
getOutput(): {
|
|
539
553
|
traces: SolvedTracePath[];
|
|
540
554
|
};
|