Ellen Emilia Anna Zscheile
bbd8d78089
refactor(math/polygon_tangents): Reduce code duplication
2025-06-12 23:33:30 +02:00
Mikolaj Wielgus
3ec15db5bc
docs(router/thetastar): Add some explanatory comments
2025-06-12 16:45:07 +02:00
Mikolaj Wielgus
1630ed1a45
refactor(router/thetastar): Store edge ids in `Vec<...>` instead of `VecDeque<...>`
2025-06-12 16:45:07 +02:00
Mikolaj Wielgus
437e2f96d1
fix(router/navcord): Correctly take into account length of final termseg
2025-06-12 16:45:07 +02:00
Mikolaj Wielgus
d0c304adbd
feat(router/thetastar): Implement Theta* search algorithm
...
Closes https://codeberg.org/topola/topola/issues/121
2025-06-12 16:45:07 +02:00
Mikolaj Wielgus
1fea359a40
refactor(router/astar): Rewrite A* like a more typical state machine
2025-06-12 16:45:07 +02:00
Mikolaj Wielgus
0702b7eb8c
refactor(router/astar): Use getters instead of `pub` members
2025-06-12 16:45:07 +02:00
Ellen Emilia Anna Zscheile
cfd20ed381
feat: Implement line (segment) intersection check
2025-06-11 16:37:57 +02:00
Ellen Emilia Anna Zscheile
1505513552
feat(drawing/drawing): Store boundaries in Drawing
2025-06-10 15:37:47 +02:00
Ellen Emilia Anna Zscheile
3c807b5078
refactor(specctra/design): Resolve image once per component
2025-06-02 22:57:45 +02:00
Ellen Emilia Anna Zscheile
2e84380344
chore(router/draw): Make API of 'extend_head' more ergonomic
2025-06-01 14:02:28 +02:00
Ellen Emilia Anna Zscheile
3ae298e4e9
feat(topola-egui): AppearancePanel active_layer selection should be explicit
2025-06-01 02:16:41 +02:00
Ellen Emilia Anna Zscheile
d1bcf22e96
feat(math/polygon_tangents): Add unit tests for triangle case
2025-05-30 21:32:13 +02:00
Ellen Emilia Anna Zscheile
c41627b023
chore(math/polygon_tangents): Fix clippy warnings
2025-05-30 21:04:43 +02:00
Ellen Emilia Anna Zscheile
42cf8f3a69
fix(math/cyclic_search): Use classic binary search instead
...
It is unnecessary to use exponential search here, and the
computation complexity of binary search is easier to understand
and obvious O(log n).
This degrades performance minimally in biased edge cases,
and improves performance in the hopefully common
"roughly half of values are false, and other half is true" case.
2025-05-30 21:04:30 +02:00
Ellen Emilia Anna Zscheile
864cf9085a
fix(drawing/band): BandTermsegIndex computation should be fallible
...
Fixes #221 .
2025-05-26 14:51:23 +02:00
Ellen Emilia Anna Zscheile
56cc737b82
fix(autorouter/autoroute): Only route each pin-pin connection at most once
...
Fixes #219 .
2025-05-26 14:17:11 +02:00
Mikolaj Wielgus
8647df026d
refactor(geometry/edit): "merge" instead of "apply" edit on another edit
...
This is just a small terminological distinction.
2025-05-26 02:44:26 +02:00
Mikolaj Wielgus
e92864d58b
fix(router/astar): Do not panic if navnode visit fails, just skip it
...
I have renamed some trait functions to make it clearer what they do, and
clarified some comments.
2025-05-25 18:04:18 +02:00
Mikolaj Wielgus
24d119ad04
refactor(router/navmesh): Rename "navvertex" to "navnode"
...
Easier to pronounce.
2025-05-25 18:01:26 +02:00
Ellen Emilia Anna Zscheile
8d0681c07d
fix(topola-egui): Fix click-based selection of pins
...
- Do intersection calculation between DotShape and Rect=AABB properly
2025-05-21 01:02:12 +02:00
Mikolaj Wielgus
464e8abb89
docs(router/astar): Make some small improvements to docs
2025-05-21 00:29:13 +02:00
Mikolaj Wielgus
e79078e971
fix(router/router): Calculate A* navedge cost correctly
...
The length of the past head depends on what was previously in the same
scan, so it can't be relied on. Instead, we just add the length of the
bend that is immediately before the probe.
2025-05-21 00:29:13 +02:00
Mikolaj Wielgus
b75101cb83
fix(router/router): Replace LoS-based A* termination with correctly searched one
2025-05-21 00:29:13 +02:00
Ellen Emilia Anna Zscheile
ded1ec8ece
fix(router/draw): Undo modification of old cane head on failure
2025-05-20 01:05:05 +02:00
Ellen Emilia Anna Zscheile
ee19ae934f
fix(drawing/bend): Improve handling of almost equal points in perp_dot_product
2025-05-20 00:13:07 +02:00
Ellen Emilia Anna Zscheile
d553fd6ba7
fix(router): attempt to fix autorouter
2025-05-17 16:32:15 +02:00
Ellen Emilia Anna Zscheile
bdebdacd8a
chore: Fix 'unused' imports/code warnings
2025-05-17 12:45:03 +02:00
Ellen Emilia Anna Zscheile
2394fa6256
feat(geometry/geometry): Add convenience GetPetgraphIndex impls
2025-05-17 02:43:19 +02:00
Mikolaj Wielgus
f9b1cc2cbf
refactor(autorouter/invoker): Add default impls. to invoker's stepper traits
2025-05-16 17:28:10 +00:00
Mikolaj Wielgus
97b1315eee
refactor(autorouter/invoker): Expose getter for whole A* stepper, not just navmesh
...
Besides owning the navmesh, the A* stepper stores g-scores and f-scores,
displaying which will be helpful for debugging, so we want to be able to
access the whole A* stepper instead of only the navmesh.
2025-05-16 17:28:10 +00:00
Mikolaj Wielgus
7d5da2c797
docs(router/astar): Explain the meaning of every continue status
2025-05-16 17:28:10 +00:00
Mikolaj Wielgus
a0ab7e2818
refactor(router/astar): Have separate statuses for discarded probes and skipped visits
...
This is mostly to improve readability. Since we don't check the values
of the continue statuses anywhere anyway, this doesn't result in any
changes to code outside of the router/astar module.
2025-05-16 17:28:10 +00:00
Ellen Emilia Anna Zscheile
5f19624d4e
docs(stepper): fix broken internal link in docs
2025-05-12 19:08:12 +02:00
Mikolaj Wielgus
7dc275969c
refactor(router/astar): Rename `Astar<...>` to `AstarStepper<...>`
...
Since it is a stepper, and we append -`Stepper` to identifiers denoting
types that are steppers.
2025-05-12 16:58:06 +02:00
Mikolaj Wielgus
0df68ee80c
docs(stepper): Explain how stepper traits and navcord work
...
Navcord is special because we advance its state in a way that is similar
to how steppers are stepped but it actually is not a stepper.
2025-05-12 16:58:02 +02:00
Mikolaj Wielgus
47371fdf3f
refactor(router/navcord): Make it clear that navcord is not a stepper
...
Rename `NavcordStepper<...>` to `Navcord<...>. Since the navcord is not
actually considered a true stepper, having the word "stepper" in its
identifier would confuse anyone new to source-diving Topola's code.
Rename Navcord's `.step(...)` to `.step_to(...)` to make it clear
that this is not just a step like in a stepper, but a step to a some
specified position.
2025-05-12 00:45:51 +02:00
Ellen Emilia Anna Zscheile
e448f86374
refactor(drawing): make traits more strict
2025-05-06 22:22:57 +00:00
Mikolaj Wielgus
873d9a84ab
fix(drawing/drawing): Prevent self-intersecting loops on band draw finish
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
c849b6ff1d
fix(drawing/drawing): Don't check initial canes for same-net collision
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
9bfed2d28e
docs(drawing/drawing): Explain difference between infringements and collisions
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
680a813a33
fix(drawing/drawing): Prevent self-intersecting band loops from forming
...
Fixes https://codeberg.org/topola/topola/issues/205
2025-05-05 22:38:06 +00:00
Mikolaj Wielgus
6175f7aec2
refactor(drawing/drawing): Ignore infringees using filter predicate instead of slice
2025-05-05 22:38:06 +00:00
Ellen Emilia Anna Zscheile
14287ca814
fix(interactor/interaction): fix warnings about unused arguments
2025-05-02 14:32:00 +02:00
Ellen Emilia Anna Zscheile
48efd5d3d9
feat(geometry/geometry): provide lookup of all rails around a core
2025-05-02 14:31:18 +02:00
Ellen Emilia Anna Zscheile
573f49f56f
chore(autorouter): fix warnings about unused RemoveBandsExecutionStepper
2025-05-02 01:53:49 +02:00
Ellen Emilia Anna Zscheile
46d3d0e4a0
feat(math): add cached variant of polygonal tangent calculation
2025-05-01 15:28:20 +02:00
Ellen Emilia Anna Zscheile
7799c50829
feat(math): implement search for boundaries of partitions in cyclic partitioned lists.
...
e.g. find the bounds of false, true in [false, true, true, false, false]
under the condition that the blocks in partitions of a single value are connected,
meaning when considering the list as cyclic, there are at most 2 blocks (for value true, false).
This implements only the binary case.
Exponential search was suggested by Harold Aptroot <@harold@mastodon.gamedev.place>
Example/motivating use case: detecting which parts of the exterior of a Polygon
face towards a point, and which parts don't, in particular finding the (extremal) points
contained in the tangents. This use case is implemented in `poly_ext_tangent_points`.
Signed-off-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2025-05-01 15:28:20 +02:00
Mikolaj Wielgus
f7cd817457
feat(autorouter/invoker): Create trait to display debug information on navmesh
2025-05-01 01:59:31 +02:00
Ellen Emilia Anna Zscheile
83d9fce38c
fix(geometry/compound): rename CompoundEntryKind -> CompoundEntryLabel
2025-04-30 14:18:22 +02:00
Ellen Emilia Anna Zscheile
e74f5e009a
fix(layout/poly): merge all the iterations over nodes in 'add_poly_with_nodes_intern'
2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile
187f06a9ac
chore(layout): move most of 'add_poly_with_nodes' method into poly.rs
2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile
8a66ece14c
feat(layout): cache convex hull on polygon initialization
2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile
f416958936
refactor(geometry): use more ergonomic petgraph methods where appropriate
2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile
861869ab7c
refactor(geometry): introduce CompoundEntryKind to suppport entry metadata
...
example usages would be marking the apex of a polygon explicitly,
or marking the nodes of a polygon which are part of the convex hull
- make ManageCompounds more generic
- removes unnecessary bounds on handles/refs
2025-04-30 14:11:31 +02:00
Mikolaj Wielgus
b000f2b7d8
refactor(math): Replace `cw` booleans with `RotationSense` enums
...
The term "cw" (clockwise) was somewhat cryptic, using a more verbose
term improves readability.
2025-04-29 13:58:49 +02:00
Ellen Emilia Anna Zscheile
c2bdeb61e4
fix(interactor): reliably, properly stop activity
2025-04-25 22:21:00 +02:00
Ellen Emilia Anna Zscheile
92e8600452
chore(autorouter): remove unnecessary mutability
2025-04-25 21:37:37 +02:00
Mikolaj Wielgus
368caa268f
docs(math): add some function docstrings
2025-04-25 02:16:10 +02:00
Ellen Emilia Anna Zscheile
346477f498
chore(layout): remove unused 'add_poly_fixed_*' methods
2025-04-22 22:51:51 +02:00
Mikolaj Wielgus
b736aa2d7d
refactor(layout::poly): use `MakeRef<...>` to obtain poly's ref-struct
2025-04-22 21:59:45 +02:00
Mikolaj Wielgus
4bf3611bb7
style: rename `src/geometry/poly.rs` to `src/geometry/polygon.rs`
2025-04-22 20:42:14 +02:00
Ellen Emilia Anna Zscheile
f6a196aeca
fix(drawing): make update_this_and_outward_bows fail graceful (with temporary fix)
2025-04-17 22:36:10 +00:00
Ellen Emilia Anna Zscheile
a56628e250
fix(specctra/design): handle polygon seg between first and last dot properly
2025-04-17 18:51:29 +02:00
Ellen Emilia Anna Zscheile
122ff0122f
fix(board): make Poly' apex generation non-lazy
...
- insert polygon parts before polygon compound
2025-04-17 15:03:14 +02:00
Ellen Emilia Anna Zscheile
77969952ff
refactor(geometry/edit): GeometryEdit shouldn't know about PrimitiveIndex
2025-04-08 02:06:57 +00:00
Ellen Emilia Anna Zscheile
cdee22d63e
feat(geometry/edit): impl ApplyGeometryEdit for GeometryEdit
2025-04-08 02:06:57 +00:00
Ellen Emilia Anna Zscheile
e20c9aa3d6
feat(specctra-core/mesadata, layout): make `Layout` clonable
...
This change also propagates to `SpecctraMesadata`, which is a bit unfortunate,
because the code that needs this will never mutate the mesadata,
wrapping it in an `Arc` would be a possible alternative.
2025-03-31 02:30:26 +02:00
Ellen Emilia Anna Zscheile
22460c75f7
refactor(DrawingException): factor out extraction of ghost+obstacle
2025-03-31 02:27:56 +02:00
Ellen Emilia Anna Zscheile
566949d4c1
refactor(interactor): use enum_dispatch for ActivityStepper
2025-03-31 02:27:06 +02:00
Ellen Emilia Anna Zscheile
822bba8fde
refactor(drawing): more aggressive out-factoring in update_this_and_outward_bows
2025-03-29 16:00:24 +01:00
Ellen Emilia Anna Zscheile
da6b825ee7
refactor(drawing): deduplicate code in update_this_and_outward_bows
2025-03-29 15:53:19 +01:00
Ellen Emilia Anna Zscheile
c01c8046bb
chore: cargo fmt
2025-03-25 23:06:04 +01:00
Ellen Emilia Anna Zscheile
670ddbe1f7
chore: apply clippy fixes
2025-03-25 00:17:57 +01:00
Ellen Emilia Anna Zscheile
13f2400c45
refactor(drawing): simplify traits
2025-03-22 04:06:27 +00:00
Ellen Emilia Anna Zscheile
a836189086
refactor: simplify interface of NavcordStepper
2025-03-22 04:06:27 +00:00
Ellen Emilia Anna Zscheile
da3be763c6
feat(overlay,viewport): generation and rendering of topological navmesh
2025-03-04 02:47:04 +01:00
Ellen Emilia Anna Zscheile
6eb941a137
feat: merge planar-brute-embed into the topola monorepo
...
- feat: use OrderedPair instead of custon BandName/BandUid (note: changes ordering of BandUid)
- fix(crates): rename planar-brute-embed to planar-incr-embed
2025-02-16 18:31:31 +01:00
Ellen Emilia Anna Zscheile
a39546f0c9
fix(RouteStepper): borrowing mixup
2025-02-15 13:46:16 +01:00
Ellen Emilia Anna Zscheile
a7c8474153
fix(RouteStepper): proper undo in case of failure
...
Fixes #116
(hopefully)
2025-02-15 13:36:32 +01:00
Ellen Emilia Anna Zscheile
bb86aaed2a
minimal backend for `planar-brute-embed` topological navmesh generation ( #161 )
...
Reviewed-on: https://codeberg.org/topola/topola/pulls/161
Co-authored-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
Co-committed-by: Ellen Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2025-02-15 00:00:15 +00:00
Ellen Emilia Anna Zscheile
0fde34204f
refactor(drawing,geometry): move GetLayer from drawing::graph to geometry
2025-02-10 11:30:54 +01:00
Ellen Emilia Anna Zscheile
61c7b5450f
refactor(Retag): only implement trait once, Index should be associated type
2025-02-10 11:29:08 +01:00
Ellen Emilia Anna Zscheile
1e690ace11
refactor(drawing): factor out common {Bend,Dot,Seg}Weight fields
2025-02-10 11:29:08 +01:00
Ellen Emilia Anna Zscheile
2e4b3b52ab
chore: cargo fmt
2025-02-10 11:28:19 +01:00
Ellen Emilia Anna Zscheile
e1d875ae72
chore: fix most warnings
2025-02-10 11:25:55 +01:00
Ellen Emilia Anna Zscheile
758677970a
chore: allow unused_must_use (we didn't yet get around to fix that)
2025-02-10 11:14:13 +01:00
Ellen Emilia Anna Zscheile
67c4933b09
docs(drawing::loose): document how 'prev_loose' works
2025-02-02 23:53:21 +00:00
Ellen Emilia Anna Zscheile
5dab7d9100
refactor(navcord): inline 'binavvertex', 'maybe_cw' helpers
2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile
ba8aa2fe5a
refactor(NavcordStepper): struct already stores 'width', don't pass it as argument
2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile
cf36177097
refactor: don't export modules only containing a single item
2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile
2087e76dfe
refactor(drawing::guide): turn Guide into a trait
2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile
bcb0c4ad5c
refactor(drawing::collect): turn Collect into a trait
2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile
90544c12ed
refactor(router::navcorder): turn Navcorder into a trait
2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile
1d11011133
refactor(router::draw): turn Draw into a trait
2025-02-02 22:03:12 +00:00
Ellen Emilia Anna Zscheile
869d63f7c0
fix(navmesh): NavvertexIndex debug output should state what it is
2025-02-02 22:30:37 +01:00
Ellen Emilia Anna Zscheile
f2969decd0
feat/debug: make core::fmt::Debug output easier to read
2025-02-02 22:01:25 +01:00
Ellen Emilia Anna Zscheile
ea6df23b95
feat(selection): BBox selection should span all currently visible layers
...
In Via, is_in_layer, `from_layer` and `to_layer` were swapped,
this has been also fixed here.
2025-01-09 18:59:07 +00:00
Ellen Emilia Anna Zscheile
3201df50bd
Revert "feat(math): introduce dedicated data type for normalized angles"
...
This reverts commit b4fe7006b7 .
The reverted commit introduced an autorouter regression, observable
in 4x_3rd_order_smd_lc_filters test using egui (see Matrix chat).
2025-01-09 01:05:23 +01:00
Alain Emilia Anna Zscheile
344d892ae0
chore,docs(math): rename 'cross_product' to 'perp_dot_product', add some documentation
2025-01-08 16:19:24 +00:00
Alain Emilia Anna Zscheile
b4fe7006b7
feat(math): introduce dedicated data type for normalized angles
2025-01-08 16:19:24 +00:00
Alain Emilia Anna Zscheile
4529ac1ba3
refactor(math): put tangents stuff into separate module
2025-01-08 16:19:24 +00:00
Alain Emilia Anna Zscheile
c9b5c39b3d
refactor(geometry): reduce unnecessary trait bounds on Geometry impl, and don't use Getter
2025-01-07 21:11:51 +00:00
Alain Emilia Anna Zscheile
17ea07ab7b
refactor(geometry): Access*Weight shouldn't take a generic arg; impl automatically
2025-01-07 21:11:51 +00:00
Alain Emilia Anna Zscheile
a67f8ea052
refactor(geometry): SetOffset should inherit from GetOffset
2025-01-07 21:11:51 +00:00
Alain Emilia Anna Zscheile
699bd58949
refactor(geometry): merge GetPos and SetPos
2025-01-07 21:11:51 +00:00
Alain Emilia Anna Zscheile
9bb0d34bc8
refactor(layout): Poly & Via only use Drawing (instead of Layout), so only pass that
2025-01-05 22:14:00 +00:00
Alain Emilia Anna Zscheile
0cbd3c398a
refactor(drawing,layout): move 'is_node_in_layer' from Layout to Drawing
2025-01-05 22:14:00 +00:00
Alain Emilia Anna Zscheile
59154c380f
fix(BboxSelection): make intersection calculations against Polygons more accurate
2025-01-05 22:14:00 +00:00
Alain Emilia Anna Zscheile
c7d50fd79f
refactor(geometry::poly): PolyShape should be equal to Polygon
2025-01-05 22:14:00 +00:00
Alain Emilia Anna Zscheile
fae1f4d7bc
refactor(layout,geometry): Layout::node_bbox(...) → AccessShape::bbox(Layout::node_shape(...), 0.0)
2025-01-05 22:14:00 +00:00
Alain Emilia Anna Zscheile
740019e2e5
feat(selection): BboxSelectionKind (completely inside vs. merely intersects)
2025-01-05 22:14:00 +00:00
Mikolaj Wielgus
9664f1a31a
fix: get rid of some indeterminism by using B-trees instead of hash maps
...
I have replaced all instances of `HashMap<...>` with `BTreeMap<...>`,
of `HashSet<...>` with `BTreeSet<...>`, and all the uses of the `Hash`
trait with `Ord`.
I have done a few manual tests and found the behavior to be
deterministic between the GUI application launches. However, undoing an
autoroute command and then manually executing it once again continues to
produce variable results. I suppose this is because of some bug in the
code where edits are applied. Hence, the issue
https://codeberg.org/topola/topola/issues/46
is only partially resolved.
2025-01-04 01:56:00 +01:00
Alain Emilia Anna Zscheile
d88ba19e2b
feat(graph): make indices serializable
2025-01-03 00:49:00 +01:00
Alain Emilia Anna Zscheile
53b964b865
feat: implement bounding box selection ( #139 )
...
Fixes #138
Reviewed-on: https://codeberg.org/topola/topola/pulls/139
Co-authored-by: Alain Emilia Anna Zscheile <fogti+devel@ytrizja.de>
Co-committed-by: Alain Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2025-01-02 22:12:11 +00:00
Mikolaj Wielgus
44c30caafe
chore(licensing): add REUSE license headers to `**.{rs,md,toml}` files
...
I ran the following command in Fish shell:
```
reuse annotate --skip-unrecognised --copyright="Topola contributors" --license="MIT" **.{rs,md,toml}
```
The choice of year 2024 in the copyright statements is intentional.
2024-12-29 22:47:00 +01:00
Mikolaj Wielgus
1567a9a83e
style: rename "squeeze through under bands" to "(...) bends"
...
Everywhere except in translatable strings. I'm not changing these
because I prefer this to be done via Weblate.
2024-12-29 01:43:36 +01:00
Alain Emilia Anna Zscheile
82bf647bc5
doc(router/navmesh): document maybe_cw
...
Doc Comment content taken from @mikolaj, Topola Matrix Chat.
2024-12-14 19:56:29 +01:00
Alain Emilia Anna Zscheile
ba41ff6837
refactor: get rid of unnecessary bounds on struct generics
2024-12-12 16:38:26 +01:00
Alain Emilia Anna Zscheile
8a724dc5d2
chore: fix deprecation warnings about geo::EuclideanDistance
2024-12-12 06:54:37 +00:00
Alain Emilia Anna Zscheile
35b2958c8d
chore(geometry): run cargo fmt
2024-12-11 23:31:08 +01:00
Alain Emilia Anna Zscheile
41aeb97c16
fix(geometry/rwr): Fix missing pads due to buggy `add_to_compound`
...
The origin of this bug was found via git-bisect, commit
d6fe67a373
is buggy, which switches from GeometryWithRtree to RecordingGeometryWithRtree.
In PR #128 , it was discovered that `add_to_compound` appears to
be missing the part that actually invokes the function that performs
the underlying action that is supposed to be diffed.
Fixes #127
2024-12-11 23:11:35 +01:00
Alain Emilia Anna Zscheile
9e0bdb5bc7
refactor: various further refactorings ( #128 )
...
These optimize out unnecessary code duplication, reserve vector capacity beforehand by leveraging `Iterator`s and avoid unnecessary double-lookups into HashMaps.
Reviewed-on: https://codeberg.org/topola/topola/pulls/128
Co-authored-by: Alain Emilia Anna Zscheile <fogti+devel@ytrizja.de>
Co-committed-by: Alain Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2024-12-11 14:13:21 +00:00
Alain Emilia Anna Zscheile
1fd61f773c
feat: improve Selection API (BREAKS HISTORY)
...
Test command files were rewritten using:
```
for f in tests/**/*.cmd; do jq ".done?.[].Autoroute[0] |= .selectors" "$f" | sponge "$f"; done
```
(compatible with bash/zsh/...)
2024-12-08 16:20:05 +00:00
Alain Emilia Anna Zscheile
5a26c02b4e
refactor(ApplyGeometryEdit): make 'apply' take 'GeometryEdit' by reference
2024-12-08 16:20:05 +00:00
Alain Emilia Anna Zscheile
27a4b61c4d
refactor(topola): get rid of unnecessary clones and lookups
2024-12-08 16:20:05 +00:00
Mikolaj Wielgus
c87224e99a
docs(router): add and rewrite some navmesh and navcord docstrings
2024-12-07 05:53:39 +01:00
Alain Emilia Anna Zscheile
0fe23c9c71
build: put `specctra` module into separate crate
2024-12-06 14:38:00 +01:00
Alain Emilia Anna Zscheile
3bd6a927b9
refactor(specctra/mesadata): more idiomatic Option handling
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
5b7f4588a0
feat(specctra/mesadata): deduplicate net names
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
0b9d3c0a00
fix(specctra/design): invalid references shouldn't panic during serialization
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
0a862a7e5f
refactor(specctra/structure): get rid of code duplication in Vec<Point>
2024-12-04 15:39:41 +00:00
Alain Emilia Anna Zscheile
da72118255
fix(specctra): return error when point fails to parse first f64
2024-12-04 15:39:41 +00:00
Mikolaj Wielgus
b8adfec817
fix(geometry): fix bend joint order and correct tangent clockwiseness
...
Now bends should cease to seemingly randomly invert their order.
2024-12-04 04:45:39 +01:00
Mikolaj Wielgus
2703f662ac
fix(autorouter): have band removal and via placement in undo/redo
2024-12-03 23:54:18 +01:00
Mikolaj Wielgus
c2daf9fbfe
feat(autorouter): use recorded edit applying for undo/redo
2024-12-03 08:35:11 +01:00
Mikolaj Wielgus
d17a34c0f6
fix(geometry,router,autorouter): some more fixes for edit recording
2024-12-03 00:39:02 +01:00
Alain Emilia Anna Zscheile
5aae676fb8
refactor(specctra/read): put read_quoted into a separate function again
2024-12-02 22:45:32 +01:00
Alain Emilia Anna Zscheile
e493c16053
fix(specctra/read): panic when return_token would override cached token
2024-12-02 22:41:23 +01:00
Alain Emilia Anna Zscheile
9ddc83e72a
feat(specctra/read): separate function to discard peeked char
...
This is useful to get rid of the pattern "self.next_char().unwrap();",
which makes it harder to assess panic safety of parsing code
(which should never panic via its public interface)
2024-12-02 22:41:23 +01:00
Alain Emilia Anna Zscheile
1d0c2cf953
fix(specctra): less (possible) panic!s in read_string
2024-12-02 22:41:23 +01:00
Mikolaj Wielgus
fe8fd3909f
fix(autorouter,router): actually propagate the edit out of route steppers
...
I forgot to do this earlier, and didn't notice because I didn't test
it. There are still a few changes to be done before recording and edit
applying is functional.
2024-12-02 05:56:37 +01:00
Mikolaj Wielgus
0760fb2da3
docs(drawing,router): rephrase docstrings some more
2024-12-02 01:25:45 +01:00
Mikolaj Wielgus
638979364c
docs(drawing): rephrase docstrings
2024-12-01 23:42:40 +01:00
Mikolaj Wielgus
db9d897315
refactor(autorouter): store edits in history entries
2024-11-29 03:45:48 +01:00
Mikolaj Wielgus
66cdf6fe4e
fix(geometry): don't check invariants on R-tree bbox init methods
2024-11-28 06:34:49 +01:00
Mikolaj Wielgus
9b1b135715
feat(board,layout,drawing): implement edit applying interface
2024-11-28 06:17:29 +01:00
Mikolaj Wielgus
847654b5c3
refactor(geometry): move edit application to new trait
2024-11-28 05:36:13 +01:00
Mikolaj Wielgus
a838310ecb
feat(geometry): add interface to apply edits
2024-11-28 05:15:39 +01:00
Mikolaj Wielgus
f17c8ce756
refactor(geometry): split out some initialization from node creation
...
This code will be shared with the routines implementing edit
application, which I will be implementing soon.
2024-11-26 03:06:16 +01:00