Commit Graph

34 Commits

Author SHA1 Message Date
Mikolaj Wielgus 8f59319902 feat(autorouter/autorouter): Have separate ratsnest for each (principal) layer 2025-10-15 15:15:02 +02:00
Mikolaj Wielgus 00aa79ff31 feat(drawing/query): Don't infringe or collide primitives on different layers 2025-09-22 01:27:08 +02:00
Mikolaj Wielgus aee8c42720 feat(autorouter/presorter): Take into account ratline-pad intersections 2025-09-11 23:25:03 +02:00
Mikolaj Wielgus 4a057d3499 fix(math/mod): Move code pertaining to circles to new file, circle.rs 2025-08-29 13:36:48 +02:00
Mikolaj Wielgus 987a4c6e9e fix: Flip by X instead of rotating by 180 degrees
Obviously -- flip is undone by a flip, not a rotation. This corrects the
previous commit.
2025-08-11 21:15:40 +02:00
Mikolaj Wielgus b7a5d2ccb8 fix(specctra-core): Rotate components placed on back by 180 degrees 2025-08-11 20:21:45 +02:00
Ellen Emilia Anna Zscheile a561b278fc feat(router/ng/router): Implementation of the topological router
- feat(autorouter): Prepare for population of planar Topo-Navmesh with existing routes
  See also issue #166.
- feat(topola-egui): Add dialog for topological navmesh layer selection
- feat(router/ng/eval): Optionally restrict set of allowed TopoNavmesh edges
- fix(router/ng/eval): Use poly_ext_handover
2025-06-27 15:15:24 +02:00
Ellen Emilia Anna Zscheile 353ee9a7ab fix(specctra-core): Actually use Keepouts structure 2025-06-12 23:27:52 +02:00
Ellen Emilia Anna Zscheile 9ea058bd0a fix(specctra-core): Proper support for all kinds of keepouts 2025-06-12 20:08:08 +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 33eb593fe9 fix(specctra-core): Fix boundary parsing
see also https://gitlab.com/kicad/code/kicad/-/blob/master/pcbnew/specctra_import_export/specctra.h, class BOUNDARY
2025-06-07 13:13:49 +02: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 ae40efbfa2 feat(specctra_derive): implement for enums containing unnamed fields 2025-03-10 04:10:45 +00: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 f2969decd0 feat/debug: make core::fmt::Debug output easier to read 2025-02-02 22:01:25 +01: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 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
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 81a6ec22d0 refactor(specctra-core): merge common.rs into lib.rs 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile ae006173ce chore(specctra-core/read): remove unnecessary bound from ListTokenizer 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile 3e7526bcc6 chore(specctra-core): remove unused stuff 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile 7737aaf0cc refactor(specctra-core/read): inline expect_leaf into only callsite 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile ca012a8c13 refactor(specctra-core/read): inline expect_* functions from ListToken into InputToken 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile 81c0de1f91 refactor(specctra-core/read): implement read_named via read_optional 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile 50ef279286 refactor(specctra-core/read): reuse String::read_dsn where possible 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile 5e54453433 refactor(specctra-core/read): accept multiple possible names anywhere
Previously, some methods handled items/lists with multiple allowed names,
and some only allowed a single name. As the overhead of always handling
multiple names isn't that large, do that everywhere and make the overall
API more streamlined in the process.
2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile e90449b75e refactor(specctra-core/read): use macro to produce repetitive impl ReadDsn via FromStr 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile 5f4496ffce refactor(specctra-core/read): align read_optional to be like read_array_with_alias 2024-12-12 06:59:03 +00:00
Alain Emilia Anna Zscheile 8fb9bfc0e6 feat(specctra-core/error): separate errors for expected leaf / end-of-list 2024-12-12 06:59:03 +00: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 cbf99e0a6e feat(specctra-core-fuzz): actually test roundtrip through serialization+parsing 2024-12-06 14:38:09 +01:00
Alain Emilia Anna Zscheile e381731475 feat(specctra-core/write): get rid of unnecessary restrictions on method args 2024-12-06 14:38:09 +01:00
Alain Emilia Anna Zscheile 0fe23c9c71 build: put `specctra` module into separate crate 2024-12-06 14:38:00 +01:00