Commit Graph

43 Commits

Author SHA1 Message Date
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 2f4dac223c fix(geometry/with_rtree): Do not remove only-modified dots when applying edit
This fixes a panic when undoing some bands.

180952c94f1c7c56c2ce5d2bdd3ab672aa0ccfec did not fix this problem
because we did not stop removing modified dots.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 6dc1ea601c fix(geometry/with_rtree): Add edit apply special handling for modified dots
This does not fix the problems I'm encountering, but is an edge case I
should try to cover anyway.
2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 21dd6ffd39 fix(geometry/with_rtree): Debug-assert instead of returning `Err(())` 2025-07-17 12:49:25 +02:00
Mikolaj Wielgus 5a0fec9618 fix(geometry/recording_with_rtree): Some more fixes against bend bbox invalidation
1f8ace9c77 did not fix all the bbox
invalidation problems, hopefully this gets this right now.
2025-07-16 19:35:51 +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
Mikolaj Wielgus 1f8ace9c77 fix(geometry/recording_with_rtree): Do not inadvertedly invalidate bend bboxes
This fixes a crash that was happening when undoing autoroutings.

Bends are still not restored correctly, I will fix that soon.
2025-07-16 00:22:57 +02:00
Mikolaj Wielgus 48fe63a387 feat(geometry/with_rtree): Assert R-tree element removal to be always successful 2025-07-15 23:04:35 +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 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 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 17ea07ab7b refactor(geometry): Access*Weight shouldn't take a generic arg; impl automatically 2025-01-07 21:11:51 +00: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
Mikolaj Wielgus 66cdf6fe4e fix(geometry): don't check invariants on R-tree bbox init methods 2024-11-28 06:34:49 +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 01deaa4b12 build(contracts): use contracts-try v0.7 from crates.io
`contracts-try` is now developed at
https://codeberg.org/topola/contracts-try and was extracted
from this repo, and rebased upon the original
crate sources to ensure proper attribution.

This removes the `vendored` directory.
2024-10-06 00:18:56 +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 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 008dcfeca0 geometry: store layer in `usize`, not `u64` 2024-06-14 04:58:52 +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 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 9feb32955c drawing,layout: move zones upwards, from drawing to layout
This generally largely drawings from groupings. We need this because it
will be easier to handle all groupings on the level of layout as
continents and bands, which are groupings too, are to be tracked there.

There's a lot of rough edges when it comes to typing and contracts.
2024-04-11 18:07:08 +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 1a624b83b1 drawing: implement getting zones and teir members 2024-04-04 13:54:47 +00:00
Mikolaj Wielgus 31189a9f5e geometry: create bboxes for groupings 2024-03-28 01:31:12 +00:00
Mikolaj Wielgus 3a812d5621 geometry: implement incomplete interface for manipulation of groupings 2024-03-26 20:24:15 +00:00
Mikolaj Wielgus 888a4ecbad geometry: provide basic internals for storing groupings
Will develop an interface in subsequent commits.
2024-03-25 12:49:19 +00:00
Mikolaj Wielgus ef823c1c27 board,layout: rename "layout" to "drawing", "board" to "layout" 2024-03-22 23:23:31 +00:00
Mikolaj Wielgus 5a0ea94a87 geometry: make shape bboxes occupy only one layer instead of all 2024-03-14 19:17:38 +00:00
Mikolaj Wielgus cf01cdaea5 geometry: store the bbox in the rtree instead of caching the shape 2024-03-14 17:01:00 +00:00
Mikolaj Wielgus 93381f39fb geometry: store some layer data in `GeometryWithRtree` 2024-03-14 13:27:31 +00:00
Mikolaj Wielgus 7f69ffddf9 geometry: move geometry module to from layout to root
As we'll be creating a deeper hierarchy of modules subordinate to
layout, we need to keep the module full paths short to prevent tem from
growing uncontrollably.
2024-02-26 19:16:40 +00:00