Skip to content

Commit 63fc173

Browse files
committed
add gapfill and test to add gapfill
1 parent 1d56481 commit 63fc173

File tree

6 files changed

+666
-3
lines changed

6 files changed

+666
-3
lines changed

lib/RectDiffPipeline.ts

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { BasePipelineSolver, definePipelineStep } from "@tscircuit/solver-utils"
22
import type { SimpleRouteJson } from "./types/srj-types"
33
import type { GridFill3DOptions } from "./solvers/rectdiff/types"
44
import { RectDiffSolver } from "./solvers/RectDiffSolver"
5+
import { GapFillSolver } from "./solvers/GapFillSolver"
56
import type { CapacityMeshNode } from "./types/capacity-mesh-types"
67
import type { GraphicsObject } from "graphics-debug"
78
import { createBaseVisualization } from "./solvers/rectdiff/visualization"
@@ -13,6 +14,7 @@ export interface RectDiffPipelineInput {
1314

1415
export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput> {
1516
rectDiffSolver?: RectDiffSolver
17+
gapFillSolver?: GapFillSolver
1618

1719
override pipelineDef = [
1820
definePipelineStep(
@@ -30,6 +32,28 @@ export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput>
3032
},
3133
},
3234
),
35+
definePipelineStep(
36+
"gapFillSolver",
37+
GapFillSolver,
38+
(instance) => {
39+
const rectDiffSolver =
40+
instance.getSolver<RectDiffSolver>("rectDiffSolver")!
41+
const rectDiffState = (rectDiffSolver as any).state
42+
43+
return [
44+
{
45+
simpleRouteJson: instance.inputProblem.simpleRouteJson,
46+
placedRects: rectDiffState.placed || [],
47+
obstaclesByLayer: rectDiffState.obstaclesByLayer || [],
48+
},
49+
]
50+
},
51+
{
52+
onSolved: () => {
53+
// Gap fill completed
54+
},
55+
},
56+
),
3357
]
3458

3559
override getConstructorParams() {
@@ -41,9 +65,17 @@ export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput>
4165
}
4266

4367
override visualize(): GraphicsObject {
44-
const solver = this.getSolver<RectDiffSolver>("rectDiffSolver")
45-
if (solver) {
46-
return solver.visualize()
68+
// Show the currently active solver's visualization
69+
const gapFillSolver = this.getSolver<GapFillSolver>("gapFillSolver")
70+
if (gapFillSolver && !gapFillSolver.solved) {
71+
// Gap fill is running, show its visualization
72+
return gapFillSolver.visualize()
73+
}
74+
75+
const rectDiffSolver = this.getSolver<RectDiffSolver>("rectDiffSolver")
76+
if (rectDiffSolver) {
77+
// RectDiff is running or finished, show its visualization
78+
return rectDiffSolver.visualize()
4779
}
4880

4981
// Show board and obstacles even before solver is initialized

0 commit comments

Comments
 (0)