Commit Graph

1475 Commits

Author SHA1 Message Date
Mikolaj Wielgus 4c6f5b4c43 Add methods to obtain pin and component attractions 2026-06-03 01:53:49 +02:00
Mikolaj Wielgus 6cebbb2816 Add method to locate all component-component repulsions for given component 2026-06-03 00:20:30 +02:00
Mikolaj Wielgus b3dc4089a4 Make nets keep track of pins they contain 2026-06-02 23:38:39 +02:00
Mikolaj Wielgus dde3720e04 Implement basic computation of repulsion forces 2026-06-02 18:09:40 +02:00
Mikolaj Wielgus 53a443615b Add (basic, WIP) methods to compute rect-overlaps of primitives 2026-06-02 13:45:44 +02:00
Mikolaj Wielgus ce7db181a7 Add methods to locate primitive and component infringements 2026-06-02 13:31:08 +02:00
Mikolaj Wielgus ae211b302e Add compass directions 2026-06-01 13:48:30 +02:00
Mikolaj Wielgus 1264c3183a Add capability to move components by dragging mouse 2026-05-29 16:09:30 +02:00
Mikolaj Wielgus 77950109fc Add interactor for moving components 2026-05-29 12:28:35 +02:00
Mikolaj Wielgus a6d1fe7025 Don't skip pins without net in Specctra import 2026-05-28 23:08:44 +02:00
Mikolaj Wielgus df5a9b57ec Make it possible to select whole components. Use different color for pin selection 2026-05-28 22:35:25 +02:00
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