Commit Graph

1204 Commits

Author SHA1 Message Date
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
Mikolaj Wielgus 2d5de212d2 primitive: slightly reduce code duplication by calling `.adjacents()` 2024-01-17 11:09:31 +00:00
Mikolaj Wielgus 3978802512 geometry: create new module, "loose", for traversal of loose nodes 2024-01-16 22:30:28 +00:00
Mikolaj Wielgus 46b50439c8 geometry: move wraparoundables to new module 2024-01-16 12:32:51 +00:00
Mikolaj Wielgus 9007b850c4 geometry: rename `Index` to `GeometryIndex` 2024-01-16 01:31:36 +00:00
Mikolaj Wielgus d9b94742e4 geometry: split loose segs into lone and sequential (seq) types 2024-01-15 15:56:37 +00:00
Mikolaj Wielgus 8f8f47a41d layout: store component instead of net in weight of each fixed primitive 2024-01-14 14:08:17 +00:00
Mikolaj Wielgus 0c6190e235 cleanup,layout: make connectivity and geometry private and clean up 2024-01-13 22:55:54 +00:00
Mikolaj Wielgus 1af5b96768 deps,graph: split out to new geometry and connectivity graph modules
The geometry graph is where the layout's dots, segs, and bends are
stored. The connectivity graph is where information about connected
components and relations between tem (e.g. which ones are connected with
bands) and information common to all band primitives are stored.

This removes dependency on the Slab library. We may go back to it
sometime in the future if we decide to phase out usage of Petgraph's
`StableDiGraph`.
2024-01-13 20:36:25 +00:00
Tomasz Cichoń 9a4e8357e7 deps: add thiserror and anyhow, reduce boilerplate
This adds rudimentary error messages and unsilences some errors.
2024-01-13 18:58:20 +01:00
Mikolaj Wielgus 51c02a9f7f readme: add NLnet and NGI0 banners
(using HTML tags to limit logo widths to 200 px)
2024-01-12 11:52:57 +00:00
mikolaj 0554b91dde readme: add info about NLnet funding 2024-01-04 19:05:42 +00:00
mikolaj 2fbdce12f1 readme: add IRC channel info 2024-01-04 17:01:13 +00:00
Mikolaj Wielgus 0b3fe216db layout: restore infringability in `.move_dot()`
It was temporarily disabled earlier.
2023-12-27 21:56:55 +00:00
Mikolaj Wielgus 90972136da layout: create `.remove_segbend()`, new and now only way to remove
`.remove()` is now private. The dot that terminates a segbend is renamed to "face".
2023-12-27 20:39:04 +00:00
Mikolaj Wielgus 4596ec6a7d githooks: add pre-commit hook with dry `cargo fmt` 2023-12-25 01:58:58 +01:00
Mikolaj Wielgus 81e316397f layout,main: display attempted shapes that caused probe to fail 2023-12-23 02:32:43 +00:00
Mikolaj Wielgus da8af817bf main: highlight nodes that made the probe fail 2023-12-23 01:03:43 +00:00
Mikolaj Wielgus 9a005c8ba3 main: only color edge if nodes are immediately subsequent in path 2023-12-22 23:36:24 +00:00