Commit Graph

1464 Commits

Author SHA1 Message Date
Mikolaj Wielgus 9221663d66 Select best layout objects, don't be strict over layer 2026-05-28 18:16:29 +02:00
Mikolaj Wielgus 85f33f1a6c Exactly filter upon location after bbox hit 2026-05-28 02:17:03 +02:00
Mikolaj Wielgus e1795413bd Actually display the drag selection box, and some fixes 2026-05-27 23:45:21 +02:00
Mikolaj Wielgus 1a2c4aeec2 Make selection responsibility of `topola`, not `topola-egui`, with new `Workspace` struct
Now use `MasterInteractor`.
2026-05-27 23:16:29 +02:00
Mikolaj Wielgus da7585b135 Add master interactor to rule all interactors (WIP, not used yet) 2026-05-27 17:07:18 +02:00
Mikolaj Wielgus 623dc967ca Add methods to delete primitives and distribute some methods across new files 2026-05-27 03:28:48 +02:00
Mikolaj Wielgus 5a3a870a13 Make containment mode dependent on left-to-right, right-to-left mouse drag 2026-05-27 02:02:05 +02:00
Mikolaj Wielgus 15a7bc65f1 Implement selection of nets 2026-05-27 00:45:30 +02:00
Mikolaj Wielgus 51005bb97c Make drag selection interactor take selection modes as input 2026-05-27 00:21:13 +02:00
Mikolaj Wielgus 739bdafea2 Replace `RouteSelector` with `NetSelector`
I don't think identifying routes by pin name pair is going to be really
useful.
2026-05-26 12:22:16 +02:00
Mikolaj Wielgus 61c0134db4 Add drag selection interactors 2026-05-26 12:12:36 +02:00
Mikolaj Wielgus 1b4bb49a89 Add location methods for inside rect and intersecting rect
I did some renames while at it.
2026-05-26 03:02:21 +02:00
Mikolaj Wielgus d9a4c7a11f Add missing code for vias 2026-05-25 23:32:39 +02:00
Mikolaj Wielgus eef69694fd Move location methods to new files 2026-05-25 23:04:54 +02:00
Mikolaj Wielgus 31107559c8 Add selectors for routes to persistable selection 2026-05-25 13:44:31 +02:00
Mikolaj Wielgus 39fb51d401 Get rid of layer groups. `LayerDesc`s already do the job 2026-05-25 01:11:29 +02:00
Mikolaj Wielgus dd2ce0ce3b Instead of mapping colors to strings, map them to desc structs 2026-05-25 01:07:44 +02:00
Mikolaj Wielgus 342081bbe5 Scale shapes imported from LibrePCB via DSN correctly 2026-05-24 21:41:08 +02:00
Mikolaj Wielgus acd41dcb1d Add `can2usb` from LibrePCB to test suite 2026-05-24 21:31:19 +02:00
Mikolaj Wielgus f9ea3940d2 Load outlines to its own separate layer and group 2026-05-24 02:52:45 +02:00
Mikolaj Wielgus ca517f62bd Create layer groups, assign each layer to one of it 2026-05-24 00:04:14 +02:00
Mikolaj Wielgus 58be28cc8b Move `topola/src/compounds/` directory under `topola/src/layout/` 2026-05-23 21:03:22 +02:00
Mikolaj Wielgus a947a72a02 Encapsulate layer indices in new `LayerId` type 2026-05-23 20:28:57 +02:00
Mikolaj Wielgus 1b9673e3e7 Derive `From` on id types 2026-05-23 19:38:01 +02:00
Mikolaj Wielgus c525af7fca Apply `derive(Delta)` on `Board` instead of manually implementing 2026-05-22 01:26:53 +02:00
Mikolaj Wielgus 459c4b41ee Add interfaces to move components 2026-05-20 15:15:33 +02:00
Mikolaj Wielgus 24af694c6b Distinguish one layer as active 2026-05-19 23:54:10 +02:00
Mikolaj Wielgus 2ed6e13a50 Expand `layout.rs` into new module directory 2026-05-19 23:24:43 +02:00
Mikolaj Wielgus 692ec68ec2 Expand `board.rs` into a new module directory 2026-05-19 21:16:10 +02:00
Mikolaj Wielgus d2d43b99c3 Implement function to resolve pin-with-layer selection to component selection 2026-05-19 16:00:55 +02:00
Mikolaj Wielgus 76bad7a2a0 Import and keep track of component names 2026-05-19 15:08:30 +02:00
Mikolaj Wielgus 25efbd1627 Rearrange and rename selections and compounds 2026-05-19 14:05:40 +02:00
Mikolaj Wielgus e536e94039 Add new type of compound, component 2026-05-18 23:29:59 +02:00
Mikolaj Wielgus bc5e205b90 Move nets and pins to separate directory, `compounds` 2026-05-18 22:41:57 +02:00
Mikolaj Wielgus b05c31f767 Use `Index` instead of `Get` with unwrap 2026-05-18 21:52:26 +02:00
Mikolaj Wielgus 79f859f8cb Add (not yet used) private interface to modify joints without segment, via updates 2026-05-18 21:09:47 +02:00
Mikolaj Wielgus 618905f56d Add interfaces to modify joints, segments, vias, polygons 2026-05-18 17:02:31 +02:00
Mikolaj Wielgus b2a75fd520 Split `Joint` into input `JointSpec` and actually stored `Joint` 2026-05-18 15:02:44 +02:00
Mikolaj Wielgus 7f67a24808 Update `undoredo` to 0.10 2026-05-18 14:21:06 +02:00
Mikolaj Wielgus 272bdb326d Split `Via` into input `ViaSpec` and actually stored `Via` 2026-05-17 03:01:59 +02:00
Mikolaj Wielgus 258b43267d Distribute `primitives.rs` into multiple files 2026-05-17 02:34:23 +02:00
Mikolaj Wielgus 67f3426586 Split `Segment` into full `Segment` and input `SegmentSpec` 2026-05-17 02:18:42 +02:00
Mikolaj Wielgus 36004b155b Explain in comments how to point-in-polygon checking method works 2026-05-16 21:07:42 +02:00
Mikolaj Wielgus fc3857072c Wrap `NavmesherBoard` inside new `Router` struct 2026-03-21 11:52:55 +01:00
Mikolaj Wielgus fa6c1ca522 Don't connect different-net primitives with ratlines 2026-03-20 20:01:46 +01:00
Mikolaj Wielgus 1dc6519722 Display primitives in reverse order of layers 2026-03-20 20:01:46 +01:00
Mikolaj Wielgus 780f1f9d11 Add separate methods to find all layer joints, segments, polygons 2026-03-20 20:01:46 +01:00
Mikolaj Wielgus 9ea602baa4 Restore `NavmesherBoard` type, put it inside `Autorouter` 2026-03-20 20:01:46 +01:00
Mikolaj Wielgus 657d33ac6e Display ratsnest 2026-03-20 20:01:46 +01:00
Mikolaj Wielgus 07427a3831 Rename `NavmesherBoard` to `Autorouter`, move it to own file 2026-03-19 22:37:33 +01:00