Commit Graph

1122 Commits

Author SHA1 Message Date
Mikolaj Wielgus 0cf7c718f3 primitive: Remove Option<...> as loose dot is always adjacent to a seg 2023-10-29 06:54:46 +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 5b2e421493 graph,primitive: Implement new `GetWidth` trait 2023-10-27 09:45:52 +00:00
Mikolaj Wielgus fae2ada334 graph: Remove width from loose seg weights, add it to fixed bend weights 2023-10-27 08:41:03 +00:00
Mikolaj Wielgus 3619c5eab4 layout: Combine primitive creation methods into generics 2023-10-26 14:32:44 +00:00
Mikolaj Wielgus 21ed14ae3d primitive: Implement appropriate `GetEnds` for primitives
Earlier I put a common implementation as a placeholder, now replaced it
with a correct implementation.
2023-10-25 15:29:13 +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 cedc2253ca primitive,layout: Remove methods that assume order
There's should be no previous or next primitive, only this end and the
other end.
2023-10-25 15:29:13 +00:00
Mikolaj Wielgus aaad590870 primitive: Remove `.tagged_prev()`, `.tagged_next()` methods
Temporarily commented out band code which relied on tem.
2023-10-25 15:29:13 +00:00
Mikolaj Wielgus 62579d98ba graph: Merge `FixedEnd` and `LooseEnd` into one `Adjacent` 2023-10-25 15:29:13 +00:00
Mikolaj Wielgus d5acfaccb5 primitive: Remove `.prev_bend()` and `.next_bend()` for now
Commented out the experimental code parts that use tem.
2023-10-25 15:29:09 +00:00
Mikolaj Wielgus 0dac23f018 graph,layout: Add creation methods for new primitives and a new label 2023-10-22 05:07:53 +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 2966df6b2c graph: Move boilerplate `impl`s to a new `impl_type` macro 2023-10-21 06:04:41 +00:00
Mikolaj Wielgus 403e3e4f98 graph: Remove the `untag` macro
To accomplish this, some more methods are moved to traits.
2023-10-21 04:37:18 +00:00
Mikolaj Wielgus 4549de098c primitive: Move `tagged_{prev,next}` to a trait
First step towards getting rid of the `untag` macro.
2023-10-20 23:44:20 +00:00
Mikolaj Wielgus 4d20362e00 primitive: Move `.weight()` method to a new `GetWeight` trait 2023-10-20 01:08:58 +00:00
Mikolaj Wielgus e271c82b7e graph: Remove `Tag` trait
Name `Index` enum variants explicitly instead.
2023-10-19 22:41:53 +00:00
Mikolaj Wielgus b52eefb1a3 cleanup: Remove unused imports, formatting 2023-10-19 20:29:31 +00:00
Mikolaj Wielgus 708fbb98f1 graph,primitive: Use enum_dispatch, rely on generics less 2023-10-19 20:07:26 +00:00
Mikolaj Wielgus 4e21ff754d primitive: Move `.shape()` to a new trait `MakeShape` 2023-10-19 06:38:57 +00:00
Mikolaj Wielgus ae9dd23b7c graph: Move `retag` to an enum-dispatched trait 2023-10-18 22:46:18 +00:00
Mikolaj Wielgus b7ff507302 shape: Use `enum_dispatch` for `Shape` 2023-10-18 02:33:03 +00:00
Mikolaj Wielgus 26778e7d47 draw: Comment out bend-flipping code for now
Was causing panics, so let's keep this out of the way for now.
2023-10-17 22:40:47 +00:00
Mikolaj Wielgus e4e6590b4c segbend: When constructing, don't assume bend before face dot 2023-10-17 22:39:48 +00:00
Mikolaj Wielgus 11c7f7fb12 layout: Don't modify bends while tey're in the R-tree 2023-10-17 22:37:40 +00:00
Mikolaj Wielgus 478f630a73 tracer: Don't tuck under inexistent bend 2023-10-17 19:02:26 +00:00
Mikolaj Wielgus 177b8cb231 guide: Return Err(...) instead of panicking 2023-10-17 05:17:07 +00:00
Mikolaj Wielgus 087d1deea0 router: Don't try to route around target dot
This was causing a panic, as it's not possible to route from *around* a
dot *into* the same dot.
2023-10-17 03:55:21 +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 ce72a2ba4b shape: Fix bend-seg intersection
By making zero-length bends non-intersectable.
2023-10-15 01:15:35 +00:00
Mikolaj Wielgus 4ec32c97ba layout: Move R-tree remove out of `debug_assert`
Because of that release builds were panicking.
2023-10-14 04:47:30 +00:00
Mikolaj Wielgus b1ac987d2f shape: Temporarily disable bend-seg intersection as it's bugged 2023-10-14 04:46:16 +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 4e8e9298e6 astar: Probe neighbors before adding tem to queue 2023-10-12 00:19:38 +00:00
Mikolaj Wielgus af61a6b120 router: Rename `Route` to `Tracer` and simplify related code 2023-10-11 22:23:18 +00:00
Mikolaj Wielgus cc3b537b5c debug: Visualize A* running during interactive routing 2023-10-10 21:09:21 +00:00
Mikolaj Wielgus 7a06a9b02d router: Implement basic cursor following 2023-10-06 22:41:59 +00:00
Mikolaj Wielgus 0e8a6d6e42 Create new `Band` struct to pass around whole bands 2023-10-05 19:52:59 +00:00
Mikolaj Wielgus 894fa654cf contracts: Visit nested expressions
Forgot to add this earlier.
2023-09-20 00:34:48 +02: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 abf92c7f43 contracts: Fix R-tree envelope invariance test
Violations were not detected if shape changed but not the envelope
(which is the case when bends are flipped).
2023-09-19 20:44:05 +02:00
Mikolaj Wielgus 12e37e0e91 contracts: Tell whether invariant was violation was pre or post 2023-09-19 18:04:08 +02:00
Mikolaj Wielgus f36f80537f layout: Add invariant testing R-tree envelope invariance 2023-09-19 15:40:26 +02:00
Mikolaj Wielgus efea917cb1 draw: Use `enum_dispatch` to dynamically dispatch `Head` 2023-09-17 16:54:23 +02:00
Mikolaj Wielgus d7b5640a25 contracts: Improve abstract type detection (i.e. containing impl)
Now it also checks for if there's an impl inside the type, not only on
the outside.
2023-09-16 23:10:54 +02:00
Mikolaj Wielgus 394510de8d layout: Add contracts for node and edge counts 2023-09-16 18:24:57 +02:00
Mikolaj Wielgus 7d2cff9004 route: Add contracts for path length 2023-09-15 22:48:51 +02:00
Mikolaj Wielgus c94a4c716a draw: Add contracts for node counts 2023-09-15 22:10:29 +02:00