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
Mikolaj Wielgus
1f55e92026
refactor(geometry): move edit code to its own file
2024-11-25 22:42:25 +01:00
Alain Emilia Anna Zscheile
2d1af33204
build: put egui and cli into separate crates
...
* build(ci): try to fix CI
* build: use workspace dependencies for deduplication / drift avoidance
2024-11-20 15:44:02 +01:00
Alain Emilia Anna Zscheile
9dad83d221
fix(contracts,drawing): geometry_with_rtree -> recording_geometry_with_rtree
...
Fixes #105 .
2024-11-20 15:41:22 +01:00
Mikolaj Wielgus
fd22413057
feat(egui): set title to filename of opened DSN file
2024-11-20 00:57:03 +01:00
Mikolaj Wielgus
20e682243d
feat(egui,wasm): set `lang` attribute to current language
2024-11-19 23:14:04 +01:00
Alain Emilia Anna Zscheile
98d237270d
chore: fix cargo fmt
2024-11-16 16:10:54 +01:00
Szpachlarz
c528265f1a
docs(interactor): document activity.rs
2024-11-15 21:55:31 +00:00
Szpachlarz
6f2e6bd70e
docs(interactor): document interactor.rs
2024-11-15 21:55:31 +00:00
hakki
566ce37a6b
invoker: resolves ' https://codeberg.org/topola/topola/pulls/101#issuecomment-2438542 '
2024-11-15 21:55:08 +00:00
hakki
63804a0297
invoker: added trait description
2024-11-15 21:55:08 +00:00
hakki
7a01a76738
docs: resolved https://codeberg.org/fogti notes
2024-11-15 21:55:08 +00:00
hakki
aae99a9656
docs: Invoker initial docs
2024-11-15 21:55:08 +00:00
Alain Emilia Anna Zscheile
ddbaf2abe5
chore: fix cargo fmt
2024-11-15 20:46:29 +01:00
Mikolaj Wielgus
d6fe67a373
feat(board,layout,drawing): implement edit recording
...
Not stored in the undo/redo objects yet.
2024-11-13 00:00:56 +00:00
Mikolaj Wielgus
ad1b43b806
feat(geometry): implement recording geometry changes to edit objects
2024-11-13 00:00:56 +00:00
hakki
c1271e570e
docs: navigation mesh documented
2024-10-29 19:53:47 +01:00
hakki
75d41f983a
docs: add general description
2024-10-29 19:14:33 +01:00
Tomasz Cichoń
509e032dbc
specctra: echo the imported units when exporting
2024-10-28 23:30:10 +01:00
Tomasz Cichoń
77c0fa2272
specctra: various fixes to import
2024-10-27 07:19:12 +01:00
hakki
de0ba42e18
layout: general info about the module
2024-10-22 15:39:27 +00:00
Mikolaj Wielgus
2ef645bbaf
fix(cli,tests): set routed_band_width to 100.0 where I forgot
...
This was making the CLI build and tests fail because my second previous
commit was botched.
For future reference, I fixed the *.cmd files by running the following
in Fish shell:
```
for f in tests/**.cmd
jq ".done?.[].Autoroute[1].router_options.routed_band_width |= 100.0" $f | sponge $f
end
```
2024-10-22 14:58:20 +02:00
Mikolaj Wielgus
7d75f918e7
feat(autorouter): add pointroute execution, which routes to a point
...
Not available as a command (for now?). Hasn't been tested yet.
2024-10-22 00:40:40 +02:00
Mikolaj Wielgus
dc11b5d8ff
feat(egui,autorouter): make it possible to set routed band width
2024-10-21 02:48:04 +02:00
Mikolaj Wielgus
e62bac69ef
refactor(interactor,egui): pass pointer position down to interactions
2024-10-19 02:10:41 +02:00
Mikolaj Wielgus
1638a289ed
fix(egui): rename "Properties" to "Preferences"
...
I managed to conflate these two because both start with "Pr".
2024-10-17 23:41:37 +02:00
Mikolaj Wielgus
ac92623454
refactor(egui): move Properties menu to its own method
2024-10-14 23:24:13 +02:00
Mikolaj Wielgus
941a271339
fix(egui): show language display names instead of codes
2024-10-14 04:26:12 +02:00
Mikolaj Wielgus
4b66e585c5
feat(egui): add radio buttons to choose language
2024-10-14 02:50:05 +02:00
Mikolaj Wielgus
90afd70f2a
refactor(egui): move action definitions to a separate file
2024-10-14 01:34:59 +02:00
Mikolaj Wielgus
894326e3d5
fix(egui): actually impl. F1 keyboard shortcut for opening doc
2024-10-13 22:38:00 +02:00
Mikolaj Wielgus
2bc090b132
feat(egui): add `Help > Online Documentation` menu button
2024-10-13 16:25:04 +02:00
Mikolaj Wielgus
c1df3ba8ad
refactor: move `Interactor<...>` and friends to new module dir, `interactor`
2024-10-12 17:21:34 +02:00
Mikolaj Wielgus
23d1eaa722
refactor: make `Step::step(...)` return `ControlFlow<...>`
...
This is an iteration on what was suggested in
https://codeberg.org/topola/topola/pulls/79 .
This removes the need to create a new status type for steppers that
have only one intermediate state, and removes unidiomatic `TryInto<...>`
usage to determine if a stepper has finished.
2024-10-12 05:38:57 +02:00
Mikolaj Wielgus
a9e42eef17
refactor: make `Step`'s error an associated type
...
This was suggested in https://codeberg.org/topola/topola/pulls/79 .
2024-10-12 05:38:57 +02:00
Mikolaj Wielgus
6104e761d2
refactor: autogenerate getters with `derive-getters` crate
2024-10-11 18:43:15 +02:00
Mikolaj Wielgus
bdc021cb6e
refactor: destruct with `.dissolve()` autogenerated with `derive-getters` crate
...
Introduces `derive-getters` as a dependency.
2024-10-11 16:54:53 +02:00
Mikolaj Wielgus
3766ade270
refactor(egui): report invoker error one outside of `Interactor`
2024-10-11 03:20:36 +02:00
Mikolaj Wielgus
489f55a8b0
refactor(egui): split out some activity code to new module, `interactor`
2024-10-11 02:50:42 +02:00
Mikolaj Wielgus
3e9e3c69c9
refactor(egui): make `ActivityContext` generic over mesadata type
2024-10-11 00:05:40 +02:00
Alain Emilia Anna Zscheile
5c377e805b
general refactor: omit unnecessary clones
2024-10-10 12:21:54 +00:00
Alain Emilia Anna Zscheile
4f40c26bac
chore(autorouter): let ExecutionStepper::step_catch_err take Autorouter as context
2024-10-10 12:21:54 +00:00
Mikolaj Wielgus
8559734336
refactor: rename "trace" to "navcord", "tracer" to "navcorder"
...
Navcord stands for "navigation cord". I try to prefix anything that is
specific to the navmesh with the "nav-" prefix. I chose the word "cord"
as analogy to the terms "umbilical cord" (and by extension, umbilical
cable), and "power cord".
Calling this "trace" was misleading, as this term has other meanings
that are relevant to Topola: "trace" may refer to a debugging trace, and
more importantly, to a PCB track.
I've also shortened two comments that I found to mention the navcord as
"traces" during substitution.
2024-10-10 03:00:27 +02:00
Alain Emilia Anna Zscheile
911c974cfc
fix(egui/MenuBar): temporarily comment out all partial conditional enabled UIs
...
This is workaround for https://github.com/emilk/egui/issues/4774
(and can be reverted once that bug is fixed).
Here, we comment out all `ui.add_enabled_ui(..., |ui| ...);` wrappers
which don't cover whole menus (the bug above should only affect menus
in which only some items are disabled).
2024-10-09 19:43:23 +02:00
Alain Emilia Anna Zscheile
ae66a35b8f
egui: reset activity on error
2024-10-08 19:52:12 +02:00
Alain Emilia Anna Zscheile
e26b1c13ed
feat(egui): also disable activity buttons if some activity hasn't finished yet
2024-10-08 19:52:12 +02:00