Commit Graph

28 Commits

Author SHA1 Message Date
Mikolaj Wielgus b24578ff35 draw: create new error type, `DrawException` 2023-12-22 17:53:38 +00:00
Mikolaj Wielgus 59024d5e74 layout,math: create some error types
We need this for debugging, as we need some better way to display what
intersects what at what moment. Otherwise it takes a lot of effort to
figure out what is going on.

I had to create some type annotations that appear superfluous. Might be
interference from the `contracts` library. This should be investigated.
2023-12-22 05:39:46 +00:00
Mikolaj Wielgus 84d5f9c49e layout: implement almost working reworked squeezing-under
I've temporarily removed collision/infringement detection in
`.move_dot()` because it was a lot of effort to get it right. We'll deal
with this later.

There's a panic due to mesh edges not being generated properly from
loose bends. But this commit is already very large, so I'm going to fix
this in the next one.

There's also some nomenclature changes.
2023-12-19 02:22:55 +00:00
Mikolaj Wielgus 92834c66c8 graph: Store the offset from the bend immediately below in bend weight 2023-12-16 00:06:13 +00:00
Mikolaj Wielgus 294e6c4f72 graph,layout,primitive: store band index instead of net in loose weights 2023-12-15 01:42:09 +00:00
Mikolaj Wielgus 36710b7a51 tracer: Implement rudimentary wrapping around loose bends
Temporarily disabled bend-seg intersection to make it rudimentarily
work.
2023-11-15 15:42:58 +00:00
Mikolaj Wielgus 961fc02678 primitive: Move `.core()` to a trait only implemented by bends 2023-11-05 13:25:28 +00:00
Mikolaj Wielgus c163716a6a graph,layout,primitive: Use loose primitive variants for traces 2023-10-28 13:18:55 +00:00
Mikolaj Wielgus 4b46b2174b graph,primitive: Remove half-loose seg objects
It was complicating things too much. We would have needed a new `Head`
implementation.
2023-10-27 15:44:36 +00:00
Mikolaj Wielgus 6f5a73759a guide: Take unqualified `{Dot,Seg,Bend}Index` unions as arguments 2023-10-25 15:29:13 +00:00
Mikolaj Wielgus a2531b078d graph,primitive: Split the 3 primitives into 7
`Dot` becomes `FixedDot` and `LooseDot`.
`Seg` becomes `FixedSeg`, `HalfLooseSeg`, and `FullyLooseSeg`.
`Bend` becomes `FixedBend` and `LooseBend`.

The fixed variants differ from the loose variants by being unchangeable
for the router (though probably will be pushable in some cases, but
that's for later). So typically tey're going to be the initial
conditions.

For now only the fixed variants are used even if actually loose, to
split this change into several commits.
2023-10-22 02:05:22 +00:00
Mikolaj Wielgus 4d20362e00 primitive: Move `.weight()` method to a new `GetWeight` trait 2023-10-20 01:08:58 +00:00
Mikolaj Wielgus b52eefb1a3 cleanup: Remove unused imports, formatting 2023-10-19 20:29:31 +00:00
Mikolaj Wielgus 4e21ff754d primitive: Move `.shape()` to a new trait `MakeShape` 2023-10-19 06:38:57 +00:00
Mikolaj Wielgus b7ff507302 shape: Use `enum_dispatch` for `Shape` 2023-10-18 02:33:03 +00:00
Mikolaj Wielgus 177b8cb231 guide: Return Err(...) instead of panicking 2023-10-17 05:17:07 +00:00
Mikolaj Wielgus c9d0b2178e tracer: Add some initial code for squeezing/tucking
Not functional yet.
2023-10-17 03:16:02 +00:00
Mikolaj Wielgus bfbad933e2 debug: Create and use `before_probe` observer for search visualization
Also changed `as_*`s to `into_*`s.
2023-10-13 04:00:01 +00:00
Mikolaj Wielgus 0695b1deab draw: Implement flipping the bend if a shorter one is available 2023-09-19 20:56:40 +02:00
Mikolaj Wielgus efea917cb1 draw: Use `enum_dispatch` to dynamically dispatch `Head` 2023-09-17 16:54:23 +02:00
Mikolaj Wielgus 5f37ff7616 Unroute path whose routing failed in the middle 2023-09-05 02:03:32 +02:00
Mikolaj Wielgus e5ba7401c1 Move routing methods to the `Route` struct
Commented out shove/squeeze features for now.
2023-08-31 20:33:34 +02:00
Mikolaj Wielgus 247b78087c Add methods to unroute or undraw segbends 2023-08-29 21:11:03 +02:00
Mikolaj Wielgus f2346eedb8 Run `cargo fix`
This hasn't cleaned up all the unused import, but it's a good start.
2023-08-29 05:02:45 +02:00
Mikolaj Wielgus 47aadfcdd3 Introduce `Segbend`, a seg-dot-bend triple 2023-08-29 01:49:37 +02:00
Mikolaj Wielgus 14f6b9f870 Implement basic A* routing 2023-08-27 21:14:42 +02:00
Mikolaj Wielgus 8456259b38 Rename `Layout` to `Router`, `Mesh` to `Layout` 2023-08-24 03:32:50 +02:00
Mikolaj Wielgus bbbd2f57fe Add `Guide` struct to generate guide curves 2023-08-23 05:15:16 +02:00