Commit Graph

980 Commits

Author SHA1 Message Date
Mikolaj Wielgus a757576fe3 tests: fix 0603 breakout test by passing a command file 2024-05-25 02:33:10 +02:00
Mikolaj Wielgus 2f8cccea07 ci: build only with nightly for the time being 2024-05-24 23:30:29 +02:00
Mikolaj Wielgus fd969bcf24 ci: first attempt at build and testing pipeline 2024-05-24 23:28:32 +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 530f81557a layout: keep track of node pins
For the time being we're storing pin names in a hashmap with nodes as
keys. We need to know which node belongs to which pin because pins
provide stable identifiers for continents (connected components) that
we need for replayable command files.
2024-05-17 02:22:48 +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 114fb747c8 router: return band index once the routing finishes 2024-05-15 01:45:36 +02:00
Mikolaj Wielgus 1c09483873 autorouter: implement simple undo (untested, not in GUI yet) 2024-05-14 14:22:47 +02:00
Mikolaj Wielgus c006dcfd47 drawing: create `BandIndex` object to pass around bands 2024-05-14 00:28:32 +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 338adc32a3 tests: test routed connections and number of ratlines in 0603 breakout 2024-05-12 01:48:56 +02:00
Mikolaj Wielgus e86ce9836a drawing: don't intersect with objects on other layers 2024-05-11 22:29:44 +02:00
Mikolaj Wielgus 4f7c3b40d9 tests: add THT female to THT female DE-9 gender changer testdata 2024-05-11 15:03:05 +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 b3f36d22b4 layout: fix apex detection - these can be joined with loose segs 2024-05-11 02:39:50 +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 9ac4c780b5 router: store origin and target in navmesh 2024-05-10 19:54:03 +02:00
Mikolaj Wielgus c1db44c25f autorouter: reorder code to avoid peeking in the edges iterator 2024-05-10 19:38:14 +02:00
Mikolaj Wielgus 83f3245e55 router: exclude same-net nodes from navmesh (except for start and stop) 2024-05-10 01:25:00 +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 765738f44b autorouter: treat (layer, net) pairs like separate nets for ratsnest
Most likely we won't be having via placement anytime soon, so let's
narrow our routing capabilities to single layer at a time.
2024-05-07 02:09:48 +02:00
Mikolaj Wielgus 2a97e9bb06 tests: add 0603 breakout test 2024-05-06 20:49:38 +02:00
Mikolaj Wielgus 95674a9a53 dsn: skip dot coincident with preceding dot 2024-05-06 20:48:23 +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 63561e6a4a layout: make apices have the same net as teir zones 2024-05-05 21:39:17 +02:00
Mikolaj Wielgus 946f2dbd6c autorouter: make it possible to delegate the loop outside `.autoroute()` 2024-05-05 17:55:47 +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
Mikolaj Wielgus ea854abfc7 Revert "egui: perform routing in separate thread or task"
This reverts commit 4144ee361f.

Instead of mutexing the autorouter, we'll mutex the layout.
2024-05-04 15:03:36 +02:00
Mikolaj Wielgus 4144ee361f egui: perform routing in separate thread or task 2024-05-03 19:50:38 +02:00
Mikolaj Wielgus 682f179cad egui: draw bounding boxes 2024-05-03 02:42:42 +02:00
Mikolaj Wielgus 2be8baab55 autorouter: route all ratline endpoint pairs
Routed bands are intersecting with each other for some reason, but at
least this doesn't crash.
2024-05-03 01:36:07 +02:00
Mikolaj Wielgus 531bc6d22c autorouter: as a starter, route the endpoints of only the first ratline 2024-05-03 01:36:04 +02:00
Mikolaj Wielgus 9c332bdde3 egui: add "Autoroute" button
Not functional yet as I still haven't implemented
`Autorouter::autoroute()`
2024-05-02 18:53:43 +02:00