Commit Graph

90 Commits

Author SHA1 Message Date
Ellen Emilia Anna Zscheile 910ab5b76a feat: use topola-rules / put 'AccessRules' into separate crate 2025-02-07 13:49:59 +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 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 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
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 699bd58949 refactor(geometry): merge GetPos and SetPos 2025-01-07 21:11:51 +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 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
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 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 5a26c02b4e refactor(ApplyGeometryEdit): make 'apply' take 'GeometryEdit' by reference 2024-12-08 16:20:05 +00:00
Alain Emilia Anna Zscheile 0fe23c9c71 build: put `specctra` module into separate crate 2024-12-06 14:38:00 +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 9b1b135715 feat(board,layout,drawing): implement edit applying interface 2024-11-28 06:17:29 +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 9dad83d221 fix(contracts,drawing): geometry_with_rtree -> recording_geometry_with_rtree
Fixes #105.
2024-11-20 15:41:22 +01:00
hakki 63804a0297 invoker: added trait description 2024-11-15 21:55:08 +00: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 6104e761d2 refactor: autogenerate getters with `derive-getters` crate 2024-10-11 18:43:15 +02:00
Alain Emilia Anna Zscheile 01deaa4b12 build(contracts): use contracts-try v0.7 from crates.io
`contracts-try` is now developed at
https://codeberg.org/topola/contracts-try and was extracted
from this repo, and rebased upon the original
crate sources to ensure proper attribution.

This removes the `vendored` directory.
2024-10-06 00:18:56 +02:00
Alain Emilia Anna Zscheile 697b637205 chore: fix clippy error by temporarily allowing it 2024-10-01 23:39:36 +02:00
Alain Emilia Anna Zscheile 5e3ccf2560 chore: cargo fmt 2024-10-01 20:50:38 +00:00
Alain Emilia Anna Zscheile f653a96eb0 chore: trivial fixes of clippy warnings 2024-10-01 20:50:38 +00:00
Alain Emilia Anna Zscheile 1a6340c6f1 chore: remove unused imports 2024-10-01 09:54:46 +02:00
Alain Emilia Anna Zscheile c42eab0126 vendored/contracts: fix overly verbose type annotations for enum results
This fixes issue #15.
2024-09-28 00:38:16 +02:00
Mikolaj Wielgus 4d0c38664e router: have a binavvertex on each bend 2024-08-31 01:37:27 +02:00
Mikolaj Wielgus f7f2e8ea49 autorouter: if band removal fails, propagate error instead of panicking 2024-08-30 16:32:37 +02:00
Mikolaj Wielgus 2105e8c7cf drawing: rename "rails" and "wraparoundables" to "gears" 2024-08-29 05:24:05 +02:00
Mikolaj Wielgus fcffb76de4 autorouter: create new command: Remove Selected Bands 2024-07-25 01:46:54 +02:00
Mikolaj Wielgus 3bf4d2cdb1 autorouter,board: use both band uids and band termsegs 2024-07-24 02:27:11 +02:00
Mikolaj Wielgus f7126dfa33 egui,autorouter: implement selecting bands 2024-07-23 13:36:57 +02:00
Mikolaj Wielgus 5da6ec4463 drawing: create methods for obtaining UIDs for bands 2024-07-23 02:03:55 +02:00
Mikolaj Wielgus 95c1c0b8b9 drawing: use shared band traversal code 2024-07-23 00:02:20 +02:00
Mikolaj Wielgus ca27804c64 drawing: move band length measurement to new band refobject 2024-07-21 16:45:36 +02:00
Mikolaj Wielgus 57c970e22e drawing: obtain `HeadRef` via new trait for abstract reference objects 2024-07-21 14:49:43 +02:00
Mikolaj Wielgus 3fd31746af drawing: make not having infringables the default when adding canes
The previous commit only did it for inserted canes.
2024-07-09 18:56:34 +02:00
Mikolaj Wielgus 1c07eb96ac drawing: for now, make adding canes have no infringables 2024-07-09 17:01:29 +02:00
Mikolaj Wielgus 806742736a cleanup: get rid of `*Trait` names for traits, use verbs and sentences 2024-07-03 13:40:37 +02:00
Mikolaj Wielgus b1f60847b3 drawing: move head length measurement methods to new refstruct 2024-07-03 03:37:14 +02:00
Mikolaj Wielgus 4fa97509e4 router: split out `Trace` to its own file and give it its own methods
We'll be following this pattern:
* `Autorouter` - `Autoroute`,
* `Router` - `Route` (not yet done),
* `Tracer` - `Trace`.

Agent nouns (ending with -er) denote the object that holds large and
"unportable" parts of the state (such as `Board`, `Layout`, `Drawing`,
`Geometry`), while verbs (ending with -e) denote holders of other, more
"portable" parts of the state.
2024-06-27 23:58:02 +02:00
Mikolaj Wielgus 43d84dc29e router: restore calculation of probe length (was temp. hardcoded to 0.0) 2024-06-26 00:47:16 +02:00
Mikolaj Wielgus 1706d5ae8c drawing: add invariant contract for pairwise non-infringement of looses 2024-06-24 16:36:05 +02:00
Mikolaj Wielgus c3fe91aabe drawing: split finding infringers into multiple methods 2024-06-24 13:55:46 +02:00