Commit Graph

372 Commits

Author SHA1 Message Date
Mikolaj Wielgus 0cb7a015d4 cargo: clean up features and shorten Cargo.toml 2024-02-19 16:43:39 +00:00
Mikolaj Wielgus 320176dd90 license: fill out years and copyright holders 2024-02-19 16:43:20 +00:00
Mikolaj Wielgus f2c2dca4be cargo: introduce topola-gui binary crate 2024-02-19 03:17:38 +00:00
Mikolaj Wielgus 171faec010 cargo,sdl2-demo: move the SDL2 demo to its own module behind a feature 2024-02-19 03:17:03 +00:00
Mikolaj Wielgus 296c2f7bc4 cargo: rename vendor/ to vendored/
Clearer name: it is us who are vendoring, not some external party.
2024-02-18 20:54:35 +00:00
Mikolaj Wielgus cf8a317f24 layout: remove inserted segbend if updating bows fails 2024-02-15 16:47:41 +00:00
Mikolaj Wielgus 4365284d47 layout: don't make abutters infringable as we don't need that anymore
Since we switched from having a long infringables list to using an
epsilon in intersection detection.
2024-02-15 04:01:55 +00:00
Mikolaj Wielgus ff19c252c1 shape: don't inflate seg front and back to prevent false infringements 2024-02-15 03:28:12 +00:00
Mikolaj Wielgus 6fa6ec7527 layout: use epsilons instead of infringable lists to evade abutters 2024-02-15 02:35:25 +00:00
Mikolaj Wielgus 2197017f54 layout: terminology improvements
- "connected" is renamed to "joined" (more local term),
- primitives whose clearance area neighbors another's are now called
  "abutters",
- primitives whose geometries depend on a bend are now called
  "posteriors" of said bend.
2024-02-13 04:45:39 +00:00
Mikolaj Wielgus e1f3d3ede4 layout: move neighborhood-collecting code to a new collect module 2024-02-13 00:46:12 +00:00
Mikolaj Wielgus 12af34d492 layout: make infringables include bends around the source
This fixes some of the routing failures due to rule infringements.
2024-02-11 20:38:58 +00:00
Mikolaj Wielgus d5d2ffd9d8 layout: inflate infringement-testing shapes and bboxes
This results in unintentional infringements of linked traces. I'll fix
this in subsequent commits by increasing the number of
2024-02-10 00:41:46 +00:00
Mikolaj Wielgus b66995b30c shape,layout: restore and fix bend-seg collision detection 2024-02-08 18:11:34 +00:00
Mikolaj Wielgus 7fdf90b126 layout: fix misalignment of shifted bends 2024-02-08 00:00:24 +00:00
Mikolaj Wielgus 850941715e router,layout,draw: remove hardcoded widths 2024-02-07 00:00:57 +00:00
Mikolaj Wielgus fd73531687 layout: store rotation direction as joint order instead of in weights 2024-02-06 05:30:53 +00:00
Mikolaj Wielgus a395da4740 rules: use net as one of the conditions instead of netclass 2024-02-05 23:57:24 +00:00
Mikolaj Wielgus 17209c2a65 draw,layout: create an interface for accessing conditions 2024-02-05 02:53:31 +00:00
Mikolaj Wielgus e5ddf47eb3 draw,guide: construct guides from rules 2024-02-03 23:19:47 +00:00
Mikolaj Wielgus d2ff1826a0 layout: attach `Rules` storing design rules to `Layout` 2024-02-02 23:58:23 +00:00
Mikolaj Wielgus 01d285efb0 layout: move guide, segbend files to layout module 2024-02-01 22:23:04 +00:00
Mikolaj Wielgus 847309adae geometry: make the R-tree private with read-only ref getter 2024-02-01 00:40:06 +00:00
Mikolaj Wielgus 4be2a0ca73 layout,geometry: move R-tree code to a new file in geometry module 2024-01-31 22:15:20 +00:00
Mikolaj Wielgus 39bd393ff7 geometry: make graph private, encapsulate all mutating usage of it 2024-01-30 19:00:16 +00:00
Mikolaj Wielgus 410b029eb3 geometry: move shape to geometry module 2024-01-30 02:06:22 +00:00
Mikolaj Wielgus 8b1d95491d layout: move `GeometryIndex` and `GeometryWeight` to own file 2024-01-30 01:51:19 +00:00
Mikolaj Wielgus 43df065120 layout: move connectivity, band, loose to layout module 2024-01-30 00:43:56 +00:00
Mikolaj Wielgus ca23d45673 geometry: move `Geometry` to a new module that is one level deeper 2024-01-30 00:03:01 +00:00
Mikolaj Wielgus 7f044f018f layout,geometry: move bend reattachment to `Geometry` 2024-01-29 20:46:13 +00:00
Mikolaj Wielgus 67f985c980 geometry,primitive: move code for finding segs and bends to `Geometry` 2024-01-29 02:25:32 +00:00
Mikolaj Wielgus 684d0be641 geometry,primitive: move more code and narrow typing further
We replace all instances of `NodeIndex<usize>` in public interfaces of
`Geometry` except for `.first_rail()`, for which we make a dirty
exception.

We also improve terminology a bit:

- "joint" is renamed to "connection",
- "end" is renamed to "joint",
- "leg" is renamed to "limb".
2024-01-29 01:34:06 +00:00
Mikolaj Wielgus 87705653bd geometry: use narrower types for returned adjacents 2024-01-28 20:53:36 +00:00
Mikolaj Wielgus 4c3d0062b0 geometry,primitive: move first rail, core, inner, outer to `Geometry` 2024-01-28 18:25:02 +00:00
Mikolaj Wielgus 4bb513ee08 cleanup: remove unused imports and traits 2024-01-28 15:01:13 +00:00
Mikolaj Wielgus 59180cc600 primitive,geometry: move bend shape-making code to `Geometry` too 2024-01-28 14:53:26 +00:00
Mikolaj Wielgus c855853a79 primitive,geometry: move dot, seg shape-making code to `Geometry`
We still need to move the code for bends -- but that's for tomorrow.
2024-01-28 00:35:16 +00:00
Mikolaj Wielgus d35d8cd8dc geometry: parameterize `Geometry` with general weights and dot weights 2024-01-27 20:09:13 +00:00
Mikolaj Wielgus 3fe54290c6 geometry: rename geometry submodule to layout, small typing changes 2024-01-27 16:20:04 +00:00
Mikolaj Wielgus 9f42991032 layout,geometry: move some code from `Layout` to new `Geometry` struct 2024-01-27 15:33:17 +00:00
Mikolaj Wielgus 8c1b7d1e7e geometry: move into own module, move dot, seg, bend to separate files 2024-01-27 13:42:33 +00:00
Mikolaj Wielgus 5d1b3dff9a primitive: rename "dependents" to "legs" 2024-01-25 21:57:32 +00:00
Mikolaj Wielgus cded5eda7f router: calculate lengths and estimate costs for A* search 2024-01-24 00:25:53 +00:00
Mikolaj Wielgus bc72aa62d0 router: reimplement interactive routing 2024-01-23 18:06:41 +00:00
Mikolaj Wielgus 35d713b5e6 layout: allow moving fixed dots 2024-01-22 23:59:36 +00:00
Mikolaj Wielgus 8bd0f20ee0 primitive: create trait for getting primitives with dependent bbox
I'm calling these "dependents" for now, but there may be a better word.
2024-01-20 00:40:56 +00:00
Mikolaj Wielgus 37fa62a4c2 layout,connectivity: add band edges when adding terminating segs 2024-01-18 22:02:02 +00:00
Mikolaj Wielgus 644d648f71 layout: use `.update_edge()` instead of `.add_edge()`
We never want to end up with a parallel edge. Lack of edge creation is
likely to trigger an assertion, so a bug is more likely to be
immediately caught this way.
2024-01-18 21:06:06 +00:00
Mikolaj Wielgus 16e6162b74 layout: hide band weights, split out to new band module 2024-01-18 19:14:08 +00:00
Mikolaj Wielgus afe4c586b5 layout: implement removal of bands 2024-01-18 00:48:04 +00:00