Commit Graph

95 Commits

Author SHA1 Message Date
Mikolaj Wielgus e723c28f26 egui: add default colors for middle layers in 4-layer boards 2024-06-14 05:14:37 +02:00
Mikolaj Wielgus 008dcfeca0 geometry: store layer in `usize`, not `u64` 2024-06-14 04:58:52 +02:00
Mikolaj Wielgus 1cca9fe6e1 egui: support displaying an arbitrary number of layers 2024-06-14 03:47:27 +02:00
Mikolaj Wielgus 300529ea75 egui: hide layers marked as hidden 2024-06-13 18:47:47 +02:00
Mikolaj Wielgus 6d66558a72 egui: move viewport to its own file 2024-06-13 13:37:54 +02:00
Mikolaj Wielgus ce1a070a70 egui: move the top panel to its own file 2024-06-13 02:22:17 +02:00
Mikolaj Wielgus 5067fb55d9 egui: impl. layer display manager sidebar (not affecting display yet) 2024-06-13 02:21:32 +02:00
Mikolaj Wielgus 90bc90350d tests: test via placement failure 2024-06-12 01:51:04 +02:00
Mikolaj Wielgus 3b4614b16b egui: consume the click when toggling Place Via mode 2024-06-11 00:00:55 +02:00
Mikolaj Wielgus 6884ca6531 egui: add button to modally invoke via placement 2024-06-10 16:49:05 +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 5d082d81c0 layout: implement `MakePrimitiveShape` for vias 2024-06-09 21:29:03 +02:00
Mikolaj Wielgus fc1f7e2613 layout: implement storage for vias 2024-06-09 17:24:12 +02:00
Mikolaj Wielgus 7a02877eb4 board,dsn: move layer and net name bidirectional lookup to `Mesadata` 2024-06-08 21:39:25 +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 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 7e022aa2cf sdl2-demo: fix compilation errors 2024-05-31 02:09:11 +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 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 93b628ae02 sdl2-demo: fix compile error 2024-05-25 21:23:24 +02:00
Mikolaj Wielgus a757576fe3 tests: fix 0603 breakout test by passing a command file 2024-05-25 02:33:10 +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 53fa89d02c egui: implement loading the history (not functional yet)
Committing this non-functional and half-baked because loading the
history requires implementing stateful deserialization, which is quite
an effort to implement with Serde, as there are no applicable derive
macros.
2024-05-23 19:34:19 +02:00
Mikolaj Wielgus 02bfe1105b egui: Implement saving command file 2024-05-22 14:38:59 +02:00
Mikolaj Wielgus fb501ac072 autorouter: encapsulate command history in a `History` object 2024-05-22 01:12:55 +02:00
Mikolaj Wielgus 8999fcb160 egui: add button to toggle showing ratsnest 2024-05-20 21:15:57 +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 84a1842f3d egui: add Ctrl+Z and Ctrl+Y key shortcuts for Undo and Redo 2024-05-15 04:05:11 +02:00
Mikolaj Wielgus 4a4f18f558 egui,autorouter: implement undo/redo in GUI 2024-05-15 03:40:48 +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 8a3bf45fd8 egui: store invoker in state instead of reconstructing it each time 2024-05-13 04:28:13 +02:00
Mikolaj Wielgus 7bcb3926d4 autorouter: put autorouter in new `Invoker` object for Command pattern 2024-05-13 03:20:57 +02:00
Mikolaj Wielgus d9ff08477c autorouter: encapsulate selection in `Selection` object
Just a thin wrapper over `HashSet` for now, but will contain more
complicated logic later.
2024-05-13 03:20:47 +02:00
Mikolaj Wielgus f893f73cd8 autorouter: autoroute only selected 2024-05-12 20:29:07 +02:00
Mikolaj Wielgus a6fb1157e3 egui,tests: fix compilation errors 2024-05-12 01:57:40 +02:00
Mikolaj Wielgus 42a0777e7f sdl2-demo: disable painting of bends
These cause stack overflows due to a bug in Pathfinder.
2024-05-12 01:56:01 +02:00
Mikolaj Wielgus 9bd63d3f0d tests: change project name of THT female to THT female test 2024-05-12 01:55:35 +02:00
Mikolaj Wielgus 36bc606401 autorouter: fix off-by-one error when walking over ratlines 2024-05-11 05:00:53 +02:00
Mikolaj Wielgus 2cd33dac60 sdl2-demo: use `Autorouter` object 2024-05-11 03:54:43 +02:00
Mikolaj Wielgus 452bcaf09d sdl2-demo: fix compilation errors 2024-05-10 23:01:42 +02:00
Mikolaj Wielgus a5dcacdd69 egui: draw routing start and stop 2024-05-10 20:37:13 +02:00
Mikolaj Wielgus 91f9466d74 autorouter,router: route only single layer at a time
It makes no sense to route multiple layers at once until we implement
automatic via placement, which is going to take a lot of time.
2024-05-07 20:06:54 +02:00
Mikolaj Wielgus 4efc2d482b egui: paint currently probed edges in bold yellow 2024-05-06 12:05:50 +02:00
Mikolaj Wielgus eaecb99146 egui: draw the navmesh
This required some considerable rearrangements in `Router`.
2024-05-06 02:35:43 +02:00
Mikolaj Wielgus b82f5417c3 egui: animate routing as it goes, show attempted traces 2024-05-05 12:55:08 +02:00
Mikolaj Wielgus a2c8ae7e70 autorouter: put `Layout` in a mutex 2024-05-04 18:02:34 +02:00