Mikolaj Wielgus
d708c7177a
fix(geometry/geometry): Rewrite uses of `debug_assert!(...)` to not break release
2025-09-18 00:03:24 +02:00
Mikolaj Wielgus
50597653ad
refactor(geometry/geometry): Remove `.graph()` and its remaining usages
...
This will allow us to store the dots, segs, bends differently than currently.
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus
f1e65267da
refactor(triangulation): Don't use `.graph()` when creating triangulations
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus
71fdec2f06
refactor(autorouter/ratsnest): Move unionfind to new file, don't use `.graph()` there
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus
e0cfc521ef
refactor(geometry/geometry): Replace `NodeIndex<usize>` with just `usize`
...
This is a step towards ceasing to use Petgraph as internal storage for
geometry.
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus
6a2102e0a2
refactor(graph): Rename `GetPetgraphIndex` to `GetIndex`
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus
7c4bc87301
refactor(drawing/primitive): Rename Primitive<...> to PrimitiveRef<...> with its variants
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus
83285dde6d
feat(drawing/drawing): Make it possible to have multiple outers for each gear
2025-08-09 21:08:10 +02:00
Mikolaj Wielgus
6317d8b08a
feat(geometry/geometry): Create outward bend walker, use it for R-tree updates
...
Drawing and above abstraction layers do not use it yet, but this will
change soon.
2025-08-09 21:08:10 +02:00
Mikolaj Wielgus
a9c4456a54
fix(geometry/geometry): Debug-assert against failed node and edge removals
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
42c788063b
fix(geometry/edit): Find first gear correctly, don't rely on edge order
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus
f75bae0666
fix(geometry/recording_with_rtree): Attach bends applied from edit
...
This was unimplemented, which made both redo and cane removal not work
correctly.
2025-07-16 15:27:56 +02:00
Ellen Emilia Anna Zscheile
a561b278fc
feat(router/ng/router): Implementation of the topological router
...
- feat(autorouter): Prepare for population of planar Topo-Navmesh with existing routes
See also issue #166 .
- feat(topola-egui): Add dialog for topological navmesh layer selection
- feat(router/ng/eval): Optionally restrict set of allowed TopoNavmesh edges
- fix(router/ng/eval): Use poly_ext_handover
2025-06-27 15:15:24 +02:00
Ellen Emilia Anna Zscheile
2394fa6256
feat(geometry/geometry): Add convenience GetPetgraphIndex impls
2025-05-17 02:43:19 +02:00
Ellen Emilia Anna Zscheile
48efd5d3d9
feat(geometry/geometry): provide lookup of all rails around a core
2025-05-02 14:31:18 +02:00
Ellen Emilia Anna Zscheile
83d9fce38c
fix(geometry/compound): rename CompoundEntryKind -> CompoundEntryLabel
2025-04-30 14:18:22 +02:00
Ellen Emilia Anna Zscheile
f416958936
refactor(geometry): use more ergonomic petgraph methods where appropriate
2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile
861869ab7c
refactor(geometry): introduce CompoundEntryKind to suppport entry metadata
...
example usages would be marking the apex of a polygon explicitly,
or marking the nodes of a polygon which are part of the convex hull
- make ManageCompounds more generic
- removes unnecessary bounds on handles/refs
2025-04-30 14:11:31 +02:00
Ellen Emilia Anna Zscheile
e20c9aa3d6
feat(specctra-core/mesadata, layout): make `Layout` clonable
...
This change also propagates to `SpecctraMesadata`, which is a bit unfortunate,
because the code that needs this will never mutate the mesadata,
wrapping it in an `Arc` would be a possible alternative.
2025-03-31 02:30:26 +02:00
Ellen Emilia Anna Zscheile
670ddbe1f7
chore: apply clippy fixes
2025-03-25 00:17:57 +01:00
Ellen Emilia Anna Zscheile
0fde34204f
refactor(drawing,geometry): move GetLayer from drawing::graph to geometry
2025-02-10 11:30:54 +01:00
Ellen Emilia Anna Zscheile
61c7b5450f
refactor(Retag): only implement trait once, Index should be associated type
2025-02-10 11:29:08 +01:00
Alain Emilia Anna Zscheile
c9b5c39b3d
refactor(geometry): reduce unnecessary trait bounds on Geometry impl, and don't use Getter
2025-01-07 21:11:51 +00:00
Alain Emilia Anna Zscheile
17ea07ab7b
refactor(geometry): Access*Weight shouldn't take a generic arg; impl automatically
2025-01-07 21:11:51 +00:00
Alain Emilia Anna Zscheile
a67f8ea052
refactor(geometry): SetOffset should inherit from GetOffset
2025-01-07 21:11:51 +00:00
Alain Emilia Anna Zscheile
699bd58949
refactor(geometry): merge GetPos and SetPos
2025-01-07 21:11:51 +00:00
Mikolaj Wielgus
9664f1a31a
fix: get rid of some indeterminism by using B-trees instead of hash maps
...
I have replaced all instances of `HashMap<...>` with `BTreeMap<...>`,
of `HashSet<...>` with `BTreeSet<...>`, and all the uses of the `Hash`
trait with `Ord`.
I have done a few manual tests and found the behavior to be
deterministic between the GUI application launches. However, undoing an
autoroute command and then manually executing it once again continues to
produce variable results. I suppose this is because of some bug in the
code where edits are applied. Hence, the issue
https://codeberg.org/topola/topola/issues/46
is only partially resolved.
2025-01-04 01:56:00 +01:00
Alain Emilia Anna Zscheile
d88ba19e2b
feat(graph): make indices serializable
2025-01-03 00:49:00 +01:00
Mikolaj Wielgus
44c30caafe
chore(licensing): add REUSE license headers to `**.{rs,md,toml}` files
...
I ran the following command in Fish shell:
```
reuse annotate --skip-unrecognised --copyright="Topola contributors" --license="MIT" **.{rs,md,toml}
```
The choice of year 2024 in the copyright statements is intentional.
2024-12-29 22:47:00 +01:00
Alain Emilia Anna Zscheile
ba41ff6837
refactor: get rid of unnecessary bounds on struct generics
2024-12-12 16:38:26 +01:00
Alain Emilia Anna Zscheile
9e0bdb5bc7
refactor: various further refactorings ( #128 )
...
These optimize out unnecessary code duplication, reserve vector capacity beforehand by leveraging `Iterator`s and avoid unnecessary double-lookups into HashMaps.
Reviewed-on: https://codeberg.org/topola/topola/pulls/128
Co-authored-by: Alain Emilia Anna Zscheile <fogti+devel@ytrizja.de>
Co-committed-by: Alain Emilia Anna Zscheile <fogti+devel@ytrizja.de>
2024-12-11 14:13:21 +00:00
Mikolaj Wielgus
b8adfec817
fix(geometry): fix bend joint order and correct tangent clockwiseness
...
Now bends should cease to seemingly randomly invert their order.
2024-12-04 04:45:39 +01:00
Mikolaj Wielgus
a838310ecb
feat(geometry): add interface to apply edits
2024-11-28 05:15:39 +01:00
Mikolaj Wielgus
f17c8ce756
refactor(geometry): split out some initialization from node creation
...
This code will be shared with the routines implementing edit
application, which I will be implementing soon.
2024-11-26 03:06:16 +01:00
Mikolaj Wielgus
ad1b43b806
feat(geometry): implement recording geometry changes to edit objects
2024-11-13 00:00:56 +00:00
Mikolaj Wielgus
6104e761d2
refactor: autogenerate getters with `derive-getters` crate
2024-10-11 18:43:15 +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
806742736a
cleanup: get rid of `*Trait` names for traits, use verbs and sentences
2024-07-03 13:40:37 +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
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
cff6b5aaf6
cleanup: cargo fix, cargo fmt
2024-06-13 13:38:12 +02:00
Mikolaj Wielgus
e5bae501ad
geometry: make compound weights accessible from `CompoundManagerTrait`
2024-04-18 13:58:04 +02:00
Mikolaj Wielgus
f2569c5167
layout: alias `Node` to not require generic parameters
2024-04-17 21:06:55 +02:00
Mikolaj Wielgus
4a9322d694
overlay: new module, impl. basic mouse selection of primitives
...
Only check for intersection of the AABB as a starter.
2024-04-16 00:21:18 +00:00
Mikolaj Wielgus
bad487f6af
geometry,drawing: rename grouping to compound, node to node weight
2024-04-13 18:51:34 +00:00
Mikolaj Wielgus
13dd000dba
geometry,layout,drawing: add accessor for node's groupings
2024-04-12 23:50:47 +00:00
Mikolaj Wielgus
5cef59227a
geometry: expose grouping management via new trait
2024-04-10 22:13:45 +00:00
Mikolaj Wielgus
6932a698f6
geometry: rename `Shape*` to `PrimitiveShape*`
2024-04-10 01:34:18 +00:00
Mikolaj Wielgus
9bf18db4d1
geometry: fix getting grouping members
...
The assumed grouping edge direction was wrong.
2024-04-06 01:53:58 +00:00