@@ -2,6 +2,7 @@ import { BasePipelineSolver, definePipelineStep } from "@tscircuit/solver-utils"
22import type { SimpleRouteJson } from "./types/srj-types"
33import type { GridFill3DOptions } from "./solvers/rectdiff/types"
44import { RectDiffSolver } from "./solvers/RectDiffSolver"
5+ import { GapFillSolver } from "./solvers/GapFillSolver"
56import type { CapacityMeshNode } from "./types/capacity-mesh-types"
67import type { GraphicsObject } from "graphics-debug"
78import { createBaseVisualization } from "./solvers/rectdiff/visualization"
@@ -13,6 +14,7 @@ export interface RectDiffPipelineInput {
1314
1415export 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