Commit Graph

649 Commits

Author SHA1 Message Date
Alain Emilia Anna Zscheile 82574d2976 egui: add error messages dialog 2024-09-30 22:33:23 +02:00
Alain Emilia Anna Zscheile b738a425e4 specctra/read: don't repeat character retrieval code 2024-09-30 19:24:27 +00:00
Alain Emilia Anna Zscheile 1ec85552bb Cargo.toml: reduce dependencies of CLI, WASM 2024-09-30 18:53:12 +02:00
Alain Emilia Anna Zscheile 507ca01bfc Cargo.toml: get rid of unnecessary dependencies 2024-09-30 18:46:19 +02:00
Mikolaj Wielgus 169e843736 egui: further make an `Activity` enum with error and status types 2024-09-30 03:40:53 +02:00
Mikolaj Wielgus c8a40860af egui: s/ExecuteWithStatus/ActivityWithStatus, move it to own file 2024-09-30 01:36:22 +02:00
Alain Emilia Anna Zscheile a700bd8c20 egui/layers: remove unnecessary TryInto usage 2024-09-29 23:18:40 +02:00
Alain Emilia Anna Zscheile ea8c525e1f egui/top: get rid of unnecessary .clone()s 2024-09-29 23:18:40 +02:00
Alain Emilia Anna Zscheile e6eae238be egui: fix action-quit key (Ctrl+V -> more intuitive Ctrl+Q) 2024-09-29 23:18:40 +02:00
hakki 8a12ce350c SpecctraDocs: added ommited Module descriptions 2024-09-29 19:22:05 +00:00
Mikolaj Wielgus 41f01c780f cli: fix build error due to wrong import path 2024-09-29 16:18:54 +02:00
Mikolaj Wielgus 592c168742 egui: show unit (s) in frame timestep's slider 2024-09-29 03:55:59 +02:00
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
Tomasz Cichoń eb0f45e3fb specctra: don't use imported layer indices internally
We don't need to re-export them, so using them only makes the logic more
brittle.
2024-09-29 01:12:12 +02:00
Tomasz Cichoń 947ecf2e1c specctra: clean up the hack related to layer import 2024-09-29 00:04:18 +02:00
Tomasz Cichoń 479791ea02 Merge branch 'develop' of https://codeberg.org/topola/topola into develop 2024-09-28 22:11:09 +02:00
Mikolaj Wielgus 55be63b942 egui: remove long-superseded `channel_text()` routine 2024-09-28 21:39:22 +02:00
Alain Emilia Anna Zscheile 12f43a112e specctra/design: get rid of unnecessary re-inserts of bimap entries
This code should've been redundant since introduction of bimap usage for
layer<->layername and net<->netname lookup.
2024-09-28 13:29:54 +02:00
Alain Emilia Anna Zscheile 60d9880ab2 specctra/design: remove code duplication at padstack lookup 2024-09-28 13:29:54 +02:00
Alain Emilia Anna Zscheile cd12775f46 specctra/design: refactor Self::layer calls to avoid repetition 2024-09-28 13:29:54 +02:00
Alain Emilia Anna Zscheile dc4ce2fbc7 math, spectra: factor out PointWithRotation 2024-09-28 13:29:47 +02:00
Tomasz Cichoń dfb2c20f1d specctra: a hack to attempt loading layers from EasyEDA 2024-09-28 11:16:47 +02:00
Tomasz Cichoń 479646d503 specctra: propagate line/column info to returned error type 2024-09-28 10:04:47 +02:00
Tomasz Cichoń b7027ae603 specctra: changes for compatibility with EasyEDA 2024-09-28 07:22:26 +02:00
Tomasz Cichoń 2a0b6464ae specctra: ignore case of list heads while parsing 2024-09-28 04:37:34 +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
hakki ee9f4b5566 Write Specctra module documentation for Topola's library API (#34)
Reviewed-on: https://codeberg.org/topola/topola/pulls/34
Co-authored-by: hakki <hakki@noreply.codeberg.org>
Co-committed-by: hakki <hakki@noreply.codeberg.org>
2024-09-27 10:29:23 +00: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 0cdec86900 cli: fix build error due to lack of CLI build testing 2024-09-10 17:21:19 +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 2105e8c7cf drawing: rename "rails" and "wraparoundables" to "gears" 2024-08-29 05:24:05 +02:00
Mikolaj Wielgus 994b9e8e9b navmesh: some rearrangements in preparation for interactive routing 2024-08-29 02:04:27 +02:00
Mikolaj Wielgus 72e630543d autorouter: if unable to route to compare detours, assume equal 2024-08-26 01:33:18 +02:00
Hakki 817fd5e57f cli: add help/manpages (#29)
Fixes https://codeberg.org/topola/topola/issues/24
Reviewed on https://codeberg.org/topola/topola/pulls/29
Co-authored-by: Hakki <hakki@noreply.codeberg.org>
Co-committed-by: Hakki <hakki@noreply.codeberg.org>
2024-08-25 20:18:16 +00: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 41bd60ea59 cli: fix compile errors 2024-08-08 11:28:44 +02:00
Mikolaj Wielgus a04caeae9c translation: upload placeholder Fluent files to test Weblate 2024-08-07 20:53:55 +02:00
Mikolaj Wielgus deb2fffbf1 autorouter: show whole detour compare animation 2024-08-06 21:29:23 +02:00
Mikolaj Wielgus c9d99c2c1f autorouter: sort by pairwise total detour lengths before autorouting 2024-08-06 15:43:25 +02:00
Mikolaj Wielgus 33206567e3 egui,autorouter: display message once command completes 2024-08-06 02:34:54 +02:00
Mikolaj Wielgus c12eea5b4d autorouter: don't crash after comparing detours 2024-08-05 23:05:10 +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 7830806834 router: use `Step` and new `StepBack` traits in `Route` and `Trace` 2024-08-03 19:17:00 +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 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 61babd179a egui: fix selection of polys and vias 2024-07-22 11:10:52 +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 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 c17c004aae cli: hard-code routing only the first layer by default
A temporary measure before we provide better layer control and prevent
duplication of routes.
2024-07-16 20:39:19 +02:00
Mikolaj Wielgus a9f42e1d8f cli: by default, assume output filename is input's with .ses extension 2024-07-16 20:33:40 +02:00
Mikolaj Wielgus 87fd5d5d05 cli: make command file argument named and optional 2024-07-16 15:45:42 +02:00
Mikolaj Wielgus ace5709e5d cleanup: `cargo fix`, `cargo fmt` to reduce number of error messages 2024-07-15 13:14:17 +02:00
Mikolaj Wielgus b0068c5f09 cli: rename the CLI binary to from `topola-cli` to shorter `topola` 2024-07-15 12:02:17 +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
Szpachlarz f72eac2636 Add: --help and --version commands 2024-07-13 15:09:45 +02:00
Szpachlarz 8d2db0a0dc cli: implement SES export 2024-07-13 14:48:38 +02:00
Tomasz Cichoń 9e2a0acab0 specctra: add export of bends (downgraded to line segment chains) 2024-07-12 15:14:15 +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 71a2a3ebbf sdl2-demo: fix compilation errors 2024-07-09 19:53:52 +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 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 f4054783d1 cleanup: remove committed output file and commented-out code 2024-07-08 02:06:55 +02:00
Mikolaj Wielgus b9a99237a1 egui: clear selection when routing is initiated 2024-07-08 02:01:17 +02:00
Szpachlarz e706134ed0 cli: create basic cli application
it is possible to load design and history,
 not yet possible to export results.
2024-07-07 12:05:53 +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 fd23be7a8a router: step on successful probes 2024-07-04 13:52:26 +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 727eb37c6e router: have probing and visiting as separate states
This feels overengineered, but I need something like this for better
debuginfo.
2024-07-03 18:12:07 +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 3c03b2dfa1 geometry: create `MeasureLength` trait to measure lengths 2024-07-02 23:33:29 +02:00
Mikolaj Wielgus 27d1c9e712 router: step on every probe, not only navvertices 2024-07-02 02:36:42 +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 ea991314b2 board: remove `.remove_band()` method 2024-06-28 19:35:25 +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 da1438195a router: create new `Router` object, a wrapper over `Layout` 2024-06-28 14:46:15 +02:00
Mikolaj Wielgus 244367c4d7 router: rename `Router` to `Route`
`Router`, soon to be written, will be a wrapper over `Board`.
2024-06-28 01:12: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 664bbee0b9 router: make `Astar` own the navmesh 2024-06-27 21:24:49 +02:00
Mikolaj Wielgus 0b3ebdbe3c router: make it possible for `Astar` to own its graph
We aren't using this yet however because it requires a substantial
rearrangement of `Router`'s code.
2024-06-27 15:07:58 +02:00
Mikolaj Wielgus 0419904b3f router: re-encapsulate graph in `Navmesh` and vertices in `VertexIndex`
As in previous commit, this was done in the past, but I removed it when
improving `Navmesh` to hold each navvertex instead of calculating tem
during access.
2024-06-26 22:34:59 +02:00
Mikolaj Wielgus 5254f768e5 router: implement (again) graph traversal traits for `Navmesh`
These were implemented in the past, but I removed it when I made
`Navmesh` store each navvertex instead of calculating tem on the fly.
2024-06-26 20:27:29 +02:00
Mikolaj Wielgus 114329a1ef router: don't store `&'a mut Layout` in `Router`
First step towards removing multithreading in code in favor of stepping
over the routing process.
2024-06-26 13:39:57 +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 3fe305b99a sdl2-demo: fix compilation errors 2024-06-25 15:31:21 +02:00
Mikolaj Wielgus b6cfcc8518 router: don't panic if wraparound navvertex has no cw
This may happen if target's guidecircle is in line of sight but its
center is not.
2024-06-25 15:00:15 +02:00
Mikolaj Wielgus 3ce8cfcabc autorouter: fix redo operation
Redone operation was only dispatched, not truly executed.
2024-06-25 11:20:59 +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 bd26f5fef8 layout: fix via placement contract for number of nodes 2024-06-25 00:40:53 +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 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
Mikolaj Wielgus 0777b781f4 router: have two navvertices, CW and CCW, for each trianvertex 2024-06-22 17:33:11 +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 4540f5c96b router: impl. forgotten addition of edges to navmesh 2024-06-20 18:50:50 +02:00
Mikolaj Wielgus c24d748bea autorouter: don't save in history until command is successfully finished 2024-06-20 12:14:51 +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 d193ea6565 drawing: rename "segbends" to "canes"
In addition to a seg and a bend, a segbend actually also contains a dot,
so let's rename it to "cane", which is also easier to translate.
2024-06-18 01:16:12 +02:00
Mikolaj Wielgus a7b4a84b98 layout: remove inserted dots if placing via fails 2024-06-17 23:59:36 +02:00