Commit Graph

190 Commits

Author SHA1 Message Date
Mikolaj Wielgus 96af3bcd7f egui: add frame timestep slider 2024-09-29 03:17:14 +02:00
Mikolaj Wielgus 1c7042c8c3 autorouter: move `Execute` and `ExecuteWithStatus` to own file 2024-09-29 03:17:07 +02:00
Mikolaj Wielgus 55be63b942 egui: remove long-superseded `channel_text()` routine 2024-09-28 21:39:22 +02:00
Mikolaj Wielgus e1b56875ed egui: base web app on newer version of official eframe template 2024-09-17 01:52:19 +02:00
Mikolaj Wielgus be03f190a0 egui: replace erroneous `.unwrap()` with try expression 2024-09-17 00:38:05 +02:00
Szpachlarz a2b8550c12 egui: fix wasm32 build errors 2024-09-16 00:39:10 +02:00
Mikolaj Wielgus 92f82ff332 egui: give 20% margin from each side when zooming to fit 2024-09-15 12:22:37 +02:00
Mikolaj Wielgus a31bb43791 egui: zoom to fit every time new board is loaded 2024-09-14 16:23:40 +02:00
Mikolaj Wielgus 86b583e6c9 egui: add option to hide layer manager 2024-09-11 21:47:44 +02:00
Mikolaj Wielgus 0239a49c73 egui: implement zooming to fit 2024-09-11 16:03:18 +02:00
Mikolaj Wielgus 89717f2b6e egui: show root bbox
Helpful for debugging geometrical transformations.
2024-09-11 13:38:50 +02:00
Mikolaj Wielgus 8c671e5a2c egui: allocate whole available height for canvas 2024-09-10 22:54:44 +02:00
Mikolaj Wielgus d4079ef077 cargo: bump egui/eframe version from 0.26.0 to 0.28.1 2024-09-10 17:04:15 +02:00
Mikolaj Wielgus cf52c95113 egui: arrange the menus more typically 2024-09-09 15:25:40 +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 4d0c38664e router: have a binavvertex on each bend 2024-08-31 01:37:27 +02:00
Mikolaj Wielgus 59f88e854c egui: expose autorouter options in the GUI 2024-08-31 00:49:40 +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 4e37f5715b egui: source GUI strings from Fluent files 2024-08-11 00:13:30 +02:00
Mikolaj Wielgus 0257568410 egui: load locale language on startup 2024-08-08 17:12:04 +02:00
Mikolaj Wielgus a04caeae9c translation: upload placeholder Fluent files to test Weblate 2024-08-07 20:53:55 +02:00
Mikolaj Wielgus 33206567e3 egui,autorouter: display message once command completes 2024-08-06 02:34:54 +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 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 61babd179a egui: fix selection of polys and vias 2024-07-22 11:10:52 +02:00
Mikolaj Wielgus 0552dd3f33 egui: put debug visualization checkboxes in a dropdown menu 2024-07-21 13:59:08 +02:00
Mikolaj Wielgus a644ac276b egui: add widget to control showing bboxes 2024-07-19 23:11:38 +02:00
Mikolaj Wielgus cd6c9fbe76 sdl2-bench: remove the SDL2 bench (aka. SDL2 demo) entirely
First, from now on I'm going to call the "SDL2 demo" the "SDL2 bench",
as a demo is software that exists to demonstrate, whereas its purpose
lately has been only fast prototyping, as we switched to make all demo
animations in the Egui port anyway.

Second, I'm removing the SDL2 bench anyway as it's a maintenance burden
that lost its utility. It's also affected by a bug in Pathfinder that
makes it impossible to zoom beyond a certain threshold which would
require someone to dig into Pathfinder's codebase, a task I don't think
anyone is interested in.
2024-07-15 01:31:45 +02:00
Tomasz Cichoń e28b7f7f9d geometry, egui: fixes and cleanup of math related to bend shapes 2024-07-12 12:01:21 +02:00
Tomasz Cichoń 8c3a3f1e72 specctra, egui: add menu option for specctra session export 2024-07-10 17:17:26 +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 c34cd730c5 egui: add keyboard shortcuts and basic action abstraction 2024-07-09 13:10:02 +02:00
Mikolaj Wielgus c36ccc287a autorouter: improve error handling by removing some unwraps 2024-07-08 13:25:58 +02:00
Mikolaj Wielgus b9a99237a1 egui: clear selection when routing is initiated 2024-07-08 02:01:17 +02:00
Mikolaj Wielgus 2368feded1 egui: fix saving history files 2024-07-06 15:02:59 +02:00
Mikolaj Wielgus 3a7e504c29 egui: implement loading history in WASM 2024-07-06 00:08:35 +02:00
Mikolaj Wielgus 0745604658 egui: put sender and receiver in wrapper objects 2024-07-05 18:02:54 +02:00
Mikolaj Wielgus e9ba5cd9b3 specctra: move file opening code outside, operate on `BufRead` instead 2024-07-04 23:55:58 +02:00
Mikolaj Wielgus b48ce70aad egui: add timer to control update frequency 2024-07-04 01:02:40 +02:00
Mikolaj Wielgus def3f84d6a egui,autorouter,router: highlight current obstacle 2024-07-04 00:39:08 +02:00
Mikolaj Wielgus b6cb89c017 egui,autorouter,router: display infringement shapes (aka. "ghosts") 2024-07-03 21:00:50 +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 3c578ccada egui: display both CW and CCW navvertices separately 2024-07-01 21:21:08 +02:00
Mikolaj Wielgus 47c888d21b egui,autorouter,router: restore highlighting active navmesh edges 2024-07-01 18:56:41 +02:00
Mikolaj Wielgus 03f996721d egui: restore drawing yellow dots at routing source and target 2024-07-01 14:09:17 +02:00
Mikolaj Wielgus edf81feccc egui: restore highlighting selected node shapes 2024-07-01 12:12:27 +02:00
Mikolaj Wielgus 2259a75d92 egui,autorouter: restore displaying navmesh 2024-07-01 00:50:24 +02:00
Mikolaj Wielgus ee6eeac6d8 egui: step through every band routing step, once per frame
At last! We finally have that implemented without concurrency.
2024-06-29 22:40:06 +02:00
Mikolaj Wielgus 6cadcd3b41 egui: remove most of usages of shared-state parallelism 2024-06-29 17:11:29 +02:00
Mikolaj Wielgus fd5a95103d autorouter: step through every band routing step, not merely over bands 2024-06-29 03:07:20 +02:00
Mikolaj Wielgus 00b997b60e egui: fix compilation error -- import `Trace` from trace, not tracer 2024-06-28 17:15:52 +02:00
Mikolaj Wielgus 514eab683a egui: fix painting bends: circles of these are actually inner circles
I've changed field names to avoid repeating this mistake in the future.
2024-06-25 10:47:49 +02:00
Mikolaj Wielgus e2552a156b egui: use smaller via size 2024-06-25 00:40:32 +02:00
Mikolaj Wielgus b35e6fc66a egui: fix painted bend direction 2024-06-25 00:40:06 +02:00
Mikolaj Wielgus d34554f075 egui: fix selecting nodes whose bboxes overlap other bboxes 2024-06-21 07:11:41 +02:00
Mikolaj Wielgus 169ddf7d80 egui: add button to toggle showing navmesh 2024-06-20 19:33:18 +02:00
Mikolaj Wielgus 5161eecd49 egui: don't clear navmesh after routing is done 2024-06-20 18:55:57 +02:00
Mikolaj Wielgus ae2a862e0e router: store every vertex (fails tests but almost functional)
Previously, rail vertices were not stored but generated on demand from
data stored in a `Triangulation<...>`. This functionality is removed in
favor of storing every vertex in `Navmesh`'s own graph built from the
`Triangulation<...>`, which is now afterwards discarded.

Tests still fail and rails aren't added yet, but this is close enough to
completion for me to commit so that I can now go to sleep without
worrying.
2024-06-20 01:32:27 +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 7f46d436af egui: fix sign of Y displayed on the bottom bar 2024-06-18 02:07:38 +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 7dd0f3e629 egui: fix painting zones (forgot to replace literal with var earlier) 2024-06-17 23:59:36 +02:00
Mikolaj Wielgus d56d6046a4 egui: add bottom bar displaying cursor position
Useful for writing tests.
2024-06-17 23:59:36 +02:00
Mikolaj Wielgus 9d00e95457 specctra: change "dsn" to "specctra" where it's about both DSN and SES 2024-06-16 18:04:20 +02:00
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 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 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 8a3bf45fd8 egui: store invoker in state instead of reconstructing it each time 2024-05-13 04:28:13 +02:00