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