Commit Graph

1247 Commits

Author SHA1 Message Date
Mikolaj Wielgus b7a5d2ccb8 fix(specctra-core): Rotate components placed on back by 180 degrees 2025-08-11 20:21:45 +02:00
Mikolaj Wielgus ac7b24f939 refactor(autorouter/autoroute): Store vecs of edits instead of large edits
This results in a large copy, but it should be possible to refactor the
code later to get rid of this.
2025-08-10 11:30:50 +02:00
Mikolaj Wielgus 5bff83ecbd refactor: Add method to join iterable of edits into one edit 2025-08-09 22:55:45 +02:00
Ellen Emilia Anna Zscheile 6f7586227c feat(board/edit): Edit structures should implement Default trait 2025-08-09 22:44:33 +02:00
Mikolaj Wielgus 791291b82e feat(router/draw): Try to add canes before trying to squeeze them through 2025-08-09 21:08:10 +02:00
Mikolaj Wielgus 83285dde6d feat(drawing/drawing): Make it possible to have multiple outers for each gear 2025-08-09 21:08:10 +02:00
Mikolaj Wielgus 6317d8b08a feat(geometry/geometry): Create outward bend walker, use it for R-tree updates
Drawing and above abstraction layers do not use it yet, but this will
change soon.
2025-08-09 21:08:10 +02:00
Outbreak2096 8cf26d1799 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (61 of 61 strings)

Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/zh_Hans/
2025-07-23 18:50:16 +02:00
fogti f136884de8 Translated using Weblate (German)
Currently translated at 100.0% (61 of 61 strings)

Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/de/
2025-07-23 18:50:16 +02:00
Ellen Emilia Anna Zscheile 8732ee7fbb refactor(geometry/edit): Put reverse and merge functionality into trait (DRY) 2025-07-20 12:40:56 +02:00
Mikolaj Wielgus 2b95832cf7 test: Test tht_de9_to_tht_de9 with permuted autorouting as well 2025-07-19 21:42:53 +02:00
Mikolaj Wielgus 09c98f2d17 feat(autorouter/autoroute): Add option to toggle permutation
Updated with the following command in Fish shell:

```
for f in tests/**.cmd; jq ".done?.[].Autoroute[1].permutate |= false" $f | sponge $f; end
```
2025-07-19 21:42:47 +02:00
Mikolaj Wielgus d181c7df1b feat(autorouter/autoroute): Implement basic brute-force permutator
Permutates if and until a solution is found. Does not do optimization
so far.

Thanks to this, it is now possible to route the DE-9 to DE-9 test
without having to find the correct sequence of autorouting jobs.
2025-07-19 21:31:31 +02:00
Mikolaj Wielgus f09aa053b6 test: Make tests attempt re-autoroute after undoing all 2025-07-17 21:08:46 +02:00
Mikolaj Wielgus d7129354a1 feat(autorouter/autoroute): Record band assigns so undo actually works
Aborting the autoroute stepper was unimplemented and it would make the
autorouting job finish instead. This is fixed now.
2025-07-17 21:08:42 +02:00
Mikolaj Wielgus 1cc75a79e8 feat(autorouter/autoroute): Make it possible to abort autoroute stepper
Aborting the autoroute stepper was unimplemented and it would make the
autorouting job finish instead. This is fixed now.
2025-07-17 12:50:51 +02:00
Mikolaj Wielgus 2f4dac223c fix(geometry/with_rtree): Do not remove only-modified dots when applying edit
This fixes a panic when undoing some bands.

180952c94f1c7c56c2ce5d2bdd3ab672aa0ccfec did not fix this problem
because we did not stop removing modified dots.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus d6a82d5264 fix(drawing/drawing): Remove temporary recorder in outward bow updating code
I'm skeptical if this actually works, and I see no difference with this
removed. If this breaks the topo-navmesh code, it may be a better option
to just disable squeezing through under bends in it.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 4d5fc25ae3 refactor(drawing/drawing): Some minor changes to method naming, comments, contracts 2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 3c9ce32ff2 fix(geometry/edit): Remove `(None, None)` pairs when merging edits 2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 6dc1ea601c fix(geometry/with_rtree): Add edit apply special handling for modified dots
This does not fix the problems I'm encountering, but is an edge case I
should try to cover anyway.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 21dd6ffd39 fix(geometry/with_rtree): Debug-assert instead of returning `Err(())` 2025-07-17 12:49:25 +02:00
Mikolaj Wielgus a9c4456a54 fix(geometry/geometry): Debug-assert against failed node and edge removals 2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 42c788063b fix(geometry/edit): Find first gear correctly, don't rely on edge order 2025-07-17 12:49:25 +02:00
Ellen Emilia Anna Zscheile 4fea23c9ac chore: Fix warnings about lifetime annotations 2025-07-17 12:33:31 +02:00
Outbreak2096 4851342fd8
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (60 of 60 strings)

Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/zh_Hans/
2025-07-16 23:08:15 +00:00
Mikolaj Wielgus 5a0fec9618 fix(geometry/recording_with_rtree): Some more fixes against bend bbox invalidation
1f8ace9c77 did not fix all the bbox
invalidation problems, hopefully this gets this right now.
2025-07-16 19:35:51 +02:00
Mikolaj Wielgus f75bae0666 fix(geometry/recording_with_rtree): Attach bends applied from edit
This was unimplemented, which made both redo and cane removal not work
correctly.
2025-07-16 15:27:56 +02:00
Mikolaj Wielgus 1f8ace9c77 fix(geometry/recording_with_rtree): Do not inadvertedly invalidate bend bboxes
This fixes a crash that was happening when undoing autoroutings.

Bends are still not restored correctly, I will fix that soon.
2025-07-16 00:22:57 +02:00
Mikolaj Wielgus 48fe63a387 feat(geometry/with_rtree): Assert R-tree element removal to be always successful 2025-07-15 23:04:35 +02:00
Mikolaj Wielgus ab4ba4e0b8 refactor(topola-egui): Split out some display code to new file, displayer.rs 2025-07-15 15:40:45 +02:00
Mikolaj Wielgus 800db3d4c0 refactor(topola-egui): Split some parts of `Viewport` code to methods 2025-07-15 02:13:56 +02:00
Mikolaj Wielgus 6f1abeebd9 test: Fix test failures due to latest commit being botched 2025-07-14 13:40:40 +02:00
Mikolaj Wielgus 43005eb864 feat(autorouter/autorouter): Add presorting by ratline intersection count and length
Sadly, this does not work well for the DE-9 to DE-9 test, but it is a
step forward.
2025-07-14 13:26:38 +02:00
Mikolaj Wielgus 0752817538 refactor(autorouter/ratsnest): Split out ratline code to new file, ratline.rs 2025-07-14 13:26:38 +02:00
fogti bf44fe1e71
Translated using Weblate (German)
Currently translated at 100.0% (58 of 58 strings)

Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/de/
2025-07-10 20:51:57 +00:00
Mikolaj Wielgus ef78c92506 feat(autorouter/autoroute): Track progress of also past and future ratlines 2025-07-10 22:38:50 +02:00
Mikolaj Wielgus 68d9844d0d feat(topola-egui): Add progress bar for the currently routed ratline
The capability to measure progress will later be useful to choose slower
but better optimization strategies if more time is available.
2025-07-10 22:38:46 +02:00
Mikolaj Wielgus 29dc59df04 refactor(router/navmesh): Split out navmesh triangulation into "prenavmesh" module 2025-07-09 14:55:40 +02:00
Mikolaj Wielgus 9742740b9e refactor(router/navmesh): Factor out some repeating code 2025-07-09 14:55:40 +02:00
Mikolaj Wielgus ebd115c3dd test: Add `tht_de9_to_tht_de9` test to automated testing 2025-07-09 14:55:40 +02:00
Mikolaj Wielgus 5fbb226d08 feat(router/navmesh): Make sure there are quadrinavedges for each trianedge
The problems I noticed in 8095b700167c7445b0bd7c55991f0b6b1c7e2f3d are
resolved now.
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus 3e322d7b34 feat(topola-egui): Add showing of triangulation constraints to debug overlay 2025-07-09 14:55:40 +02:00
Mikolaj Wielgus f3245b9607 feat(router/navmesh): Add constraint edges for loose segs
This does not work entirely correctly. I will investigate in subsequent
commits.
2025-07-09 14:55:40 +02:00
Mikolaj Wielgus 274ad166c1 feat(router/navmesh): Add constraint edges for fixed segs 2025-07-09 14:55:40 +02:00
fogti 742c5e770f
Translated using Weblate (German)
Currently translated at 100.0% (56 of 56 strings)

Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/de/
2025-07-08 09:08:15 +00:00
Mikolaj Wielgus b25ad863ba refactor(autorouter/invoker): Merge debug overlay data traits into one trait
The name of this new trait shall be `GetDebugOverlayData`.
2025-07-06 23:09:08 +02:00
Codeberg Translate 8c92a9b8ec
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/
2025-07-05 21:00:54 +00:00
Outbreak2096 bda41a410c
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (59 of 59 strings)

Translation: Topola/Topola
Translate-URL: https://translate.codeberg.org/projects/topola/topola/zh_Hans/
2025-07-05 21:00:54 +00:00
Ellen Emilia Anna Zscheile 7734847e3b chore: Remove superseded translation strings about TopoNavmesh initialization 2025-07-05 23:00:39 +02:00