@clarify/edge-router 0.1.0

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/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @clarify/edge-router
2
+
3
+ ```ts
4
+ let router = new Router();
5
+ ```
@@ -0,0 +1,423 @@
1
+ //#region src/geomtypes.d.ts
2
+ declare class Point {
3
+ x: number;
4
+ y: number;
5
+ vn: number;
6
+ constructor(x?: number, y?: number);
7
+ eq(rhs: Point): boolean;
8
+ at(dimension: number): number;
9
+ setAt(dimension: number, value: number): void;
10
+ }
11
+ declare class Box {
12
+ min: Point;
13
+ max: Point;
14
+ constructor();
15
+ length(dimension: number): number;
16
+ width(): number;
17
+ height(): number;
18
+ }
19
+ declare class Polygon {
20
+ ps: Point[];
21
+ checkpointsOnRoute: Array<[number, Point]>;
22
+ constructor(n?: number);
23
+ clone(): Polygon;
24
+ clear(): void;
25
+ empty(): boolean;
26
+ size(): number;
27
+ at(index: number): Point;
28
+ simplify(): Polygon;
29
+ checkpointsOnSegment(segmentLowerIndex: number, indexModifier?: number): Point[];
30
+ offsetBoundingBox(offset: number): Box;
31
+ }
32
+ declare class Rect extends Polygon {
33
+ private _origin;
34
+ private _size;
35
+ constructor(origin: {
36
+ x: number;
37
+ y: number;
38
+ }, size: {
39
+ width: number;
40
+ height: number;
41
+ });
42
+ offsetPolygon(bufferSpace: number): Rect;
43
+ }
44
+ //#endregion
45
+ //#region src/obstacle.d.ts
46
+ declare class Obstacle {
47
+ readonly router: Router;
48
+ readonly polygon: Rect;
49
+ _active: boolean;
50
+ _firstVert: VertInf;
51
+ _lastVert: VertInf;
52
+ constructor(router: Router, poly: Rect);
53
+ centreVertex(): VertInf | null;
54
+ isFreeJunction(): boolean;
55
+ firstVert(): VertInf | null;
56
+ lastVert(): VertInf | null;
57
+ routingBox(): Box;
58
+ routingPolygon(bufferSpace: number): Rect;
59
+ /** @internal */
60
+ isActive(): boolean;
61
+ /** @internal */
62
+ makeActive(): void;
63
+ /** @internal */
64
+ makeInactive(): void;
65
+ /** @internal */
66
+ removeFromGraph(): void;
67
+ }
68
+ //#endregion
69
+ //#region src/junction.d.ts
70
+ declare class Junction extends Obstacle {
71
+ followingConns: Set<Endpoint>;
72
+ private _position;
73
+ private _positionFixed;
74
+ readonly _centreVertex: VertInf;
75
+ _centreConnectionCost: number;
76
+ constructor(router: Router, position: Point);
77
+ position(): Point;
78
+ centreVertex(): VertInf;
79
+ /** @internal */
80
+ centreConnectionCost(): number;
81
+ setPositionFixed(fixed: boolean): void;
82
+ positionFixed(): boolean;
83
+ isFreeJunction(): boolean;
84
+ static makeRectangle(router: Router, position: Point): Rect;
85
+ preferOrthogonalDimension(dim: number): void;
86
+ makeInactive(): void;
87
+ addFollowingConnEnd(connEnd: Endpoint): void;
88
+ removeFollowingConnEnd(connEnd: Endpoint): void;
89
+ attachedConnectors(): Edge[];
90
+ }
91
+ //#endregion
92
+ //#region src/edge.d.ts
93
+ declare class Edge {
94
+ router: Router;
95
+ /** @internal */
96
+ _id: number;
97
+ private _needsRerouteFlag;
98
+ private _active;
99
+ private _hateCrossings;
100
+ _route: Polygon;
101
+ private _displayRoute;
102
+ private _srcVert;
103
+ private _dstVert;
104
+ private _startVert;
105
+ private _srcConnend;
106
+ private _dstConnend;
107
+ private _checkpoints;
108
+ private _checkpointVertices;
109
+ get srcConnEnd(): Endpoint | null;
110
+ get dstConnEnd(): Endpoint | null;
111
+ constructor(router: Router, src: Endpoint, dst: Endpoint);
112
+ route(): Polygon;
113
+ displayRoute(): Polygon;
114
+ endpointConnEnds(): [Endpoint, Endpoint] | null;
115
+ endpointAnchors(): [Junction | null, Junction | null];
116
+ setRoutingCheckpoints(checkpoints: Checkpoint[]): void;
117
+ routingCheckpoints(): Checkpoint[];
118
+ possibleDstPinPoints(): Point[];
119
+ setHateCrossings(val: boolean): void;
120
+ doesHateCrossings(): boolean;
121
+ set_route(route: Polygon): void;
122
+ generatePath(): boolean;
123
+ /** @internal */
124
+ makeActive(): void;
125
+ /** @internal */
126
+ makeInactive(): void;
127
+ /** @internal */
128
+ src(): VertInf | null;
129
+ /** @internal */
130
+ dst(): VertInf | null;
131
+ /** @internal */
132
+ makePathInvalid(): void;
133
+ /** @internal */
134
+ updateEndPoint(type: 'src' | 'tar', connEnd: Endpoint): void;
135
+ /** @internal */
136
+ getConnEndForEndpointVertex(vertex: VertInf | null): Endpoint | null;
137
+ /** @internal */
138
+ assignConnectionPinVisibility(connect: boolean): [boolean, boolean];
139
+ private _wirePinVisibility;
140
+ /** @internal */
141
+ generateStandardPath(path: Point[], vertices: VertInf[]): void;
142
+ /** @internal */
143
+ generateCheckpointsPath(path: Point[], vertices: VertInf[]): void;
144
+ }
145
+ //#endregion
146
+ //#region src/utilities/option-set.d.ts
147
+ declare class OptionSet {
148
+ private rawValue;
149
+ constructor(value: number | OptionSet[]);
150
+ has(value: OptionSet): boolean;
151
+ add(value: typeof this): typeof this;
152
+ equal(other: typeof this): boolean;
153
+ static zero: OptionSet;
154
+ }
155
+ //#endregion
156
+ //#region src/endpoint.d.ts
157
+ declare class Direction extends OptionSet {
158
+ static blockStart: Direction;
159
+ static blockEnd: Direction;
160
+ static block: Direction;
161
+ static inlineStart: Direction;
162
+ static inlineEnd: Direction;
163
+ static inline: Direction;
164
+ static all: Direction;
165
+ }
166
+ declare enum ConnEndType {
167
+ ConnEndPoint = 0,
168
+ ConnEndJunction = 1
169
+ }
170
+ declare class Checkpoint {
171
+ point: Point;
172
+ arrivalDirections: Direction;
173
+ departureDirections: Direction;
174
+ constructor(point: Point, arrivalDirections?: Direction, departureDirections?: Direction);
175
+ }
176
+ declare class Endpoint {
177
+ /** @internal */
178
+ _type: ConnEndType;
179
+ /** @internal */
180
+ _point: Point;
181
+ directions: Direction;
182
+ _anchorObj: Junction | null;
183
+ /** @internal */
184
+ _connRef: Edge | null;
185
+ constructor(point: Point);
186
+ constructor(point: Point, visDirs: Direction);
187
+ constructor(junctionRef: Junction);
188
+ type(): ConnEndType;
189
+ position(): Point;
190
+ junction(): Junction | null;
191
+ /** @internal */
192
+ isPinConnection(): boolean;
193
+ /** @internal */
194
+ endpointType(): 'src' | 'tar';
195
+ /** @internal */
196
+ connect(conn: Edge): void;
197
+ /** @internal */
198
+ disconnect(shapeDeleted?: boolean): void;
199
+ }
200
+ //#endregion
201
+ //#region src/graph.d.ts
202
+ declare class EdgeInf {
203
+ lstPrev: EdgeInf | null;
204
+ lstNext: EdgeInf | null;
205
+ private _router;
206
+ private _added;
207
+ private _isHyperedgeSegment;
208
+ private _disabled;
209
+ private _vert1;
210
+ private _vert2;
211
+ private _dist;
212
+ private _mtstDist;
213
+ constructor(v1: VertInf, v2: VertInf, router: Router);
214
+ getDist(): number;
215
+ isOrthogonal(): boolean;
216
+ isDummyConnection(): boolean;
217
+ isDisabled(): boolean;
218
+ setDisabled(disabled: boolean): void;
219
+ isHyperedgeSegment(): boolean;
220
+ setHyperedgeSegment(hyperedge: boolean): void;
221
+ mtstDist(): number;
222
+ setMtstDist(joinCost: number): void;
223
+ otherVert(vert: VertInf): VertInf;
224
+ vert1(): VertInf;
225
+ vert2(): VertInf;
226
+ setDist(dist: number): void;
227
+ makeActive(): void;
228
+ makeInactive(): void;
229
+ destroy(): void;
230
+ rotationLessThan(lastV: VertInf | null, rhs: EdgeInf): boolean;
231
+ private isBetween;
232
+ static existingEdge(i: VertInf, j: VertInf): EdgeInf | null;
233
+ }
234
+ declare class EdgeList {
235
+ private _firstEdge;
236
+ private _lastEdge;
237
+ private _count;
238
+ constructor();
239
+ size(): number;
240
+ begin(): EdgeInf | null;
241
+ end(): null;
242
+ addEdge(edge: EdgeInf): void;
243
+ removeEdge(edge: EdgeInf): void;
244
+ clear(): void;
245
+ }
246
+ //#endregion
247
+ //#region src/vertex.d.ts
248
+ interface ANode {}
249
+ interface VertInfRoles {
250
+ isConnPoint?: boolean;
251
+ isOrthShapeEdge?: boolean;
252
+ isJunctionCentre?: boolean;
253
+ isConnCheckpoint?: boolean;
254
+ isDummyPinHelper?: boolean;
255
+ isSrcEndpoint?: boolean;
256
+ isTarEndpoint?: boolean;
257
+ isDimensionChangePartner?: boolean;
258
+ }
259
+ declare class VertInf {
260
+ objID: number;
261
+ vn: number;
262
+ readonly _seq: number;
263
+ point: Point;
264
+ isConnPoint: boolean;
265
+ isOrthShapeEdge: boolean;
266
+ isJunctionCentre: boolean;
267
+ isConnCheckpoint: boolean;
268
+ isDummyPinHelper: boolean;
269
+ isSrcEndpoint: boolean;
270
+ isTarEndpoint: boolean;
271
+ isDimensionChangePartner: boolean;
272
+ lstPrev: VertInf | null;
273
+ lstNext: VertInf | null;
274
+ shPrev: VertInf | null;
275
+ shNext: VertInf | null;
276
+ orthogVisList: EdgeInf[];
277
+ orthogVisListSize: number;
278
+ pathNext: VertInf | null;
279
+ aStarDoneNodes: ANode[];
280
+ aStarPendingNodes: ANode[];
281
+ orthogonalPartner: VertInf | null;
282
+ _treeRootBox: {
283
+ value: VertInf | null;
284
+ } | null;
285
+ _sptfRoot: VertInf | null;
286
+ sptfDist: number;
287
+ visDirections: Direction;
288
+ orthogVisPropFlags: number;
289
+ constructor(objID: number, vn: number, point: Point, roles?: VertInfRoles);
290
+ private applyRoles;
291
+ resetIdAndPoint(objID: number, vn: number, point: Point, roles?: VertInfRoles): void;
292
+ resetPoint(point: Point): void;
293
+ removeFromGraph(_isConnVert?: boolean): void;
294
+ directionFrom(other: VertInf): Direction;
295
+ setVisibleDirections(directions: Direction): void;
296
+ pathLeadsBackTo(start: VertInf): number;
297
+ hasNeighbour(target: VertInf): EdgeInf | null;
298
+ makeTreeRootPointer(root: VertInf): {
299
+ value: VertInf | null;
300
+ };
301
+ treeRoot(): VertInf | null;
302
+ treeRootPointer(): {
303
+ value: VertInf | null;
304
+ } | null;
305
+ setTreeRootPointer(pointer: {
306
+ value: VertInf | null;
307
+ } | null): void;
308
+ clearTreeRootPointer(): void;
309
+ setSPTFRoot(root: VertInf): void;
310
+ sptfRoot(): VertInf | null;
311
+ }
312
+ declare class VertInfList {
313
+ private _firstShapeVert;
314
+ private _firstConnVert;
315
+ private _lastShapeVert;
316
+ private _lastConnVert;
317
+ private _shapeVertices;
318
+ private _connVertices;
319
+ constructor();
320
+ addVertex(vert: VertInf): void;
321
+ removeVertex(vert: VertInf | null): VertInf | null;
322
+ getVertexByPos(p: Point): VertInf | null;
323
+ shapesBegin(): VertInf | null;
324
+ connsBegin(): VertInf | null;
325
+ end(): null;
326
+ connsSize(): number;
327
+ shapesSize(): number;
328
+ }
329
+ //#endregion
330
+ //#region src/hyperedge.d.ts
331
+ interface HyperedgeNewAndDeletedObjectLists {
332
+ newJunctionList: Junction[];
333
+ newConnectorList: Edge[];
334
+ deletedJunctionList: Junction[];
335
+ deletedConnectorList: Edge[];
336
+ changedConnectorList: Edge[];
337
+ }
338
+ type Hyperedge = {
339
+ type: 'terminals';
340
+ connEnds: Endpoint[];
341
+ } | {
342
+ type: 'junction';
343
+ junction: Junction;
344
+ } | {
345
+ type: 'invalid';
346
+ };
347
+ declare class HyperedgeRerouter {
348
+ router: Router;
349
+ hyperedges: Hyperedge[];
350
+ private m_new_junctions_vector;
351
+ private m_deleted_junctions_vector;
352
+ private m_new_connectors_vector;
353
+ private m_deleted_connectors_vector;
354
+ private m_terminal_vertices_vector;
355
+ private m_added_vertices;
356
+ /** @internal */
357
+ addedVertexCount(): number;
358
+ constructor(router: Router, hyperedges: Hyperedge[]);
359
+ count(): number;
360
+ newAndDeletedObjectLists(index: number): HyperedgeNewAndDeletedObjectLists;
361
+ /** @internal */
362
+ private findAttachedFromConnector;
363
+ /** @internal */
364
+ private findAttachedFromJunction;
365
+ /** @internal */
366
+ calcHyperedgeConnectors(): Set<Edge>;
367
+ /** @internal */
368
+ private findExistingConnectorsForTerminals;
369
+ /** @internal */
370
+ performRerouting(): void;
371
+ }
372
+ //#endregion
373
+ //#region src/router.d.ts
374
+ type RoutingParams = {
375
+ segmentPenalty: number;
376
+ crossingPenalty: number;
377
+ fixedSharedPathPenalty: number;
378
+ portDirectionPenalty: number;
379
+ shapeBufferDistance: number;
380
+ idealNudgingDistance: number;
381
+ reverseDirectionPenalty: number;
382
+ };
383
+ type RoutingOptions = {
384
+ nudgeOrthogonalSegmentsConnectedToShapes: boolean;
385
+ improveHyperedgeRoutesMovingJunctions: boolean;
386
+ penaliseOrthogonalSharedPathsAtConnEnds: boolean;
387
+ nudgeOrthogonalTouchingColinearSegments: boolean;
388
+ performUnifyingNudgingPreprocessingStep: boolean;
389
+ improveHyperedgeRoutesMovingAddingAndDeletingJunctions: boolean;
390
+ nudgeSharedPathsWithCommonEndPoint: boolean;
391
+ };
392
+ declare class Router {
393
+ m_obstacles: Obstacle[];
394
+ connRefs: Edge[];
395
+ visOrthogGraph: EdgeList;
396
+ vertices: VertInfList;
397
+ params: RoutingParams;
398
+ options: RoutingOptions;
399
+ hyperedgesForRerouting: Hyperedge[];
400
+ private _nextObjectId;
401
+ private m_in_crossing_rerouting_stage;
402
+ constructor(params?: Partial<RoutingParams>, options?: Partial<RoutingOptions>);
403
+ /** @internal */
404
+ _assignObjectId(): number;
405
+ createObstacle(rect: Rect): Obstacle;
406
+ /** @internal */
407
+ addObstacle(obstacle: Obstacle): void;
408
+ /** @internal */
409
+ removeObstacle(obstacle: Obstacle): void;
410
+ addJunction(junction: Junction): void;
411
+ deleteConnector(connector: Edge): void;
412
+ deleteJunction(junction: Junction): void;
413
+ isInCrossingPenaltyReroutingStage(): boolean;
414
+ regenerateStaticBuiltGraph(): void;
415
+ registerHyperedgeForRerouting(hyperedge: Hyperedge): number;
416
+ route(): {
417
+ anyChange: boolean;
418
+ hyperedgeRerouter: HyperedgeRerouter | null;
419
+ };
420
+ }
421
+ //#endregion
422
+ export { Checkpoint, Direction, Edge, Endpoint, Junction, Point, Rect, Router };
423
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/geomtypes.ts","../src/obstacle.ts","../src/junction.ts","../src/edge.ts","../src/utilities/option-set.ts","../src/endpoint.ts","../src/graph.ts","../src/vertex.ts","../src/hyperedge.ts","../src/router.ts"],"mappings":"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"}