Commit Graph

1490 Commits

Author SHA1 Message Date
Mikolaj Wielgus ffa94cff82 Add functional Undo/Redo buttons 2026-06-08 16:48:58 +02:00
Mikolaj Wielgus 2cc4c52a59 Use better attraction cost function 2026-06-08 00:51:47 +02:00
Mikolaj Wielgus e92ee1d697 Partially encapsulate primitives by adding constructors 2026-06-07 23:53:22 +02:00
Mikolaj Wielgus b134f7eef2 Rename "polygon" to "poly", "segment" to "seg"
This follows the established pattern of narrowing the meaning of a word
by its apocopation, like in the following examples:

difference -> diff (visual representation of a difference)
rectangle -> rect (axis-aligned rectangle)
configuration -> config (a top-level configuration)
application -> app
specification -> spec
2026-06-07 23:13:40 +02:00
Mikolaj Wielgus ec8b72823c Cache polygon centroids to speed up annealing 2026-06-07 20:52:28 +02:00
Mikolaj Wielgus 1433c02d81 Make it possible to hide debug overlay elements 2026-06-07 20:24:57 +02:00
Mikolaj Wielgus 18316e1a8f Don't merge deltas during autoplacer steps to speed it up 2026-06-07 19:34:59 +02:00
Mikolaj Wielgus a7fcf57a75 Add profiling capabilities (including GUI debug profiler) 2026-06-07 19:34:54 +02:00
Mikolaj Wielgus 8df8d760c3 First crude attempt at autoplacing using simulated annealing 2026-06-06 17:59:34 +02:00
Mikolaj Wielgus 65f96f1fc2 Move some GUI logic and workspace to new `Controller` struct 2026-06-05 14:12:41 +02:00
Mikolaj Wielgus b2ef23c06c Create and use new enum to later use different master interactors using the same interface 2026-06-05 00:30:08 +02:00
Mikolaj Wielgus c7430f9fc9 Add toggle button and slider to change step rate 2026-06-04 22:23:44 +02:00
Mikolaj Wielgus 0cd4b005fd Add WIP autoplacer implementation (not yet used) 2026-06-04 20:53:00 +02:00
Mikolaj Wielgus 299afde271 Update to undoredo version 0.11 2026-06-03 19:44:12 +02:00
Mikolaj Wielgus 05108e964d Display repulsions and attractions of selected pins and components 2026-06-03 02:44:55 +02:00
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