Mikolaj Wielgus
6104e761d2
refactor: autogenerate getters with `derive-getters` crate
2024-10-11 18:43:15 +02:00
Alain Emilia Anna Zscheile
d0058ef5fd
router: get rid of unnecessary RouterError
2024-10-06 00:22:32 +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
Mikolaj Wielgus
5448474857
terminology: distinguish between "command" and its "execution"
2024-10-01 16:01:11 +02:00
Mikolaj Wielgus
cc0bf1845a
terminology: suffix some single-verb object type names with "Stepper"
2024-10-01 14:27:57 +02:00
Alain Emilia Anna Zscheile
1a6340c6f1
chore: remove unused imports
2024-10-01 09:54:46 +02:00
Mikolaj Wielgus
4b6e3e0a5c
egui,router: add option to toggle squeezing
2024-09-01 01:24:52 +02:00
Mikolaj Wielgus
0b7e5f1b9b
egui,autorouter,router: add option to toggle wrapping around bands
2024-08-31 14:12:38 +02:00
Mikolaj Wielgus
a52515f6d3
autorouter: add option to disable presorting by pairwise detours
2024-08-30 23:11:25 +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
63d3e345aa
egui,autorouter: add action and command to measure length of bands
2024-08-23 04:14:06 +02:00
Mikolaj Wielgus
c9d99c2c1f
autorouter: sort by pairwise total detour lengths before autorouting
2024-08-06 15:43:25 +02:00
Mikolaj Wielgus
47d8e82344
egui,autorouter: make detour comparison invokable from GUI
2024-08-05 13:14:56 +02:00
Mikolaj Wielgus
b2c9305cea
autorouter: add new compare command to be used for sorting later
2024-08-05 04:33:51 +02:00
Mikolaj Wielgus
43b48e78e3
router: use `Step` trait for `Astar` too
2024-08-04 18:50:58 +02:00
Mikolaj Wielgus
ece9c4aa5a
autorouter,router: put stepper finishing in `Step` trait too
2024-08-04 16:36:11 +02:00
Mikolaj Wielgus
1305487c7f
autorouter: use new `Step` trait for stepping
2024-08-03 16:40:04 +02:00
Mikolaj Wielgus
5b32797022
autorouter: return a different status every time routing a band finishes
2024-08-01 12:56:24 +02:00
Mikolaj Wielgus
fcffb76de4
autorouter: create new command: Remove Selected Bands
2024-07-25 01:46:54 +02:00
Mikolaj Wielgus
b568f2d790
autorouter: split selection into pin selection and band selection
2024-07-24 14:59:28 +02:00
Mikolaj Wielgus
3bf4d2cdb1
autorouter,board: use both band uids and band termsegs
2024-07-24 02:27:11 +02:00
Mikolaj Wielgus
be9ff3a85a
layout: rename "zone" to "poly"
...
We'll keep the term "zone" for higher-level concepts.
2024-07-09 23:09:39 +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
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
0777b781f4
router: have two navvertices, CW and CCW, for each trianvertex
2024-06-22 17:33:11 +02:00
Mikolaj Wielgus
d4a310a5c0
graph: disambiguate naming of different kinds of indices
...
Disambiguate between node indices and (teir inner) petgraph indices.
Rename "band index" to "band first seg index", as we identify bands by
teir first segs. Rename "trianvertex index" and "navvertex index"
respectively to "trianvertex node index" and "navvertex node index", as
these point to nodes on the geometry graph and only indirectly to
vertices on the vertex graph.
2024-06-18 15:30:33 +02:00
Mikolaj Wielgus
e15e1efe5e
router: remove observers
...
The observer "pattern", arguably, is an anti-pattern that managed to get
into textbooks. It causes a lot of problems, it was a bad idea to use
it.
2024-06-18 01:37:45 +02:00
Mikolaj Wielgus
cff6b5aaf6
cleanup: cargo fix, cargo fmt
2024-06-13 13:38:12 +02:00
Mikolaj Wielgus
90bc90350d
tests: test via placement failure
2024-06-12 01:51:04 +02:00
Mikolaj Wielgus
b09ffad9b3
autorouter: create new command for placing vias
...
Undoing it is not implemented yet.
2024-06-10 02:38:24 +02:00
Mikolaj Wielgus
6b6affb3fc
autorouter: move autoroute command to its own file
...
Since it accesses `Autorouter`'s fields, I made these `pub(super)`. This
feels unidiomatic, but let's give it a shot.
2024-06-10 02:38:03 +02:00
Mikolaj Wielgus
19a4766cb5
board,dsn: introduce `MesadataTrait`, an extension of `RulesTrait`
...
The trait's contents aren't implemented yet.
"mesa" is supposed to mean the opposite of "meta". By "mesadata" I don't
mean mere content or payload: I mean data that is stored *inside* or
*under* such content or payload.
I found this meaning of "mesa" -- as opposite of "meta" -- by browsing
somewhere on the internet. Fair chance many classicists would think
poorly of this usage. But I don't care about etymology: I just need a
word to close a lexical gap.
2024-06-08 16:36:21 +02:00
Mikolaj Wielgus
1dc3718159
board: move board to its own directory
2024-06-08 13:37:27 +02:00
Mikolaj Wielgus
86d2555b36
autorouter: accessibly store pin-pairs between which routed bands are
2024-06-05 20:26:23 +02:00
Mikolaj Wielgus
fa8c11fa36
autorouter: move lazy apex accessor to `Board`
2024-06-03 12:46:36 +02:00
Mikolaj Wielgus
a80dfc10be
autorouter,router: shorten and clarify terminology
...
Rename "triangulation vertex" to just "trianvertex".
Rename "navigation vertex" to just "navvertex".
The standalone word "vertex" was overused and in some cases confusing.
2024-06-03 12:46:27 +02:00
Mikolaj Wielgus
765d8495c6
tests: add four 3rd order SMD LC filters test
2024-06-01 00:34:09 +02:00
Mikolaj Wielgus
de17adb01c
layout: move pin information to a new parent object, `Board`
2024-05-31 01:47:51 +02:00
Mikolaj Wielgus
b22e3dce1a
router,autorouter: stop hiding layout behind an arc-mutex
...
This was preventing us from creating a new abstraction layer over
layout.
2024-05-30 22:57:20 +02:00
Mikolaj Wielgus
dcbc5be5f3
router,autorouter: improve error handling
...
Avoid unwrapping and use `Result<...>` instead as well-written code
should.
2024-05-30 19:54:14 +02:00
Mikolaj Wielgus
a4503a42c6
router: improve error handling -- more error types, remove some unwraps
2024-05-29 23:49:24 +02:00
Mikolaj Wielgus
499564e6cf
router: make A* a walker, i.e. make it runnable in a while loop
2024-05-27 23:50:12 +02:00
Mikolaj Wielgus
06150f5167
autorouter: don't cache nodes in `Selection`
...
This solves the problem of having to use stateful deserialization.
2024-05-23 20:00:43 +02:00
Mikolaj Wielgus
fb501ac072
autorouter: encapsulate command history in a `History` object
2024-05-22 01:12:55 +02:00
Mikolaj Wielgus
f03545124f
autorouter: keep track of clicked pins
...
Pin names provide us stable references that we can use to replay actions
later. We'll use this information to serialize the selection.
2024-05-19 04:37:26 +02:00
Mikolaj Wielgus
4a4f18f558
egui,autorouter: implement undo/redo in GUI
2024-05-15 03:40:48 +02:00
Mikolaj Wielgus
1c09483873
autorouter: implement simple undo (untested, not in GUI yet)
2024-05-14 14:22:47 +02:00
Mikolaj Wielgus
4c6fa0e5d3
layout: remove concepts of connectivity, bands, and continents for now
...
We'll use `UnionFind` where needed for now.
2024-05-13 18:43:42 +02:00
Mikolaj Wielgus
7bcb3926d4
autorouter: put autorouter in new `Invoker` object for Command pattern
2024-05-13 03:20:57 +02:00