96 Commits

Author SHA1 Message Date
Seth Hillbrand
188ffda029 Add a 90°-only mode for polygon creation
Sometimes, you don't want those 45° corners in your nice, clean zones.
This adds an additional mode that can be selected, cycling through
free-angle, 45° angle and 90° angle constraints
2025-08-12 16:48:36 -07:00
Seth Hillbrand
b207ec8817 Remove negative index access from CPoint
Callers should be responsible for index count and/or use iterators
2025-08-08 10:46:45 -07:00
Jeff Young
b2ba9d3371 Less auto. 2025-07-11 21:26:19 +01:00
Jeff Young
4e174f2078 Don't try to keep netcodes in defaultZoneSettings (KICAD-7Z8). 2025-06-27 22:59:12 -06:00
Mike Williams
40058ebe80 actions: move all basic selection operations to common actions 2025-04-02 12:02:01 -04:00
Daniel Treffenstädt
27edf0b949 ADDED: Per layer properties of zones used for control over zone hatching position 2025-03-02 20:31:04 +00:00
Seth Hillbrand
0b2d4d4879 Revise Copyright statement to align with TLF
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo.  Avoids needing to
repeatly update.

Also updates AUTHORS.txt from current repo with contributor names
2025-01-01 14:12:04 -08:00
Seth Hillbrand
e9bc8cfe9d Give Clipper1 a Viking funeral
Clears out the last spot where we were only using Clipper1 (how'd I
miss that?) and remove all calls to the Clipper1 structures
2024-12-23 17:12:09 -08:00
JamesJCode
37a3e55bd3 Allow pcb rule areas to handle keepout and placement concurrently
- Implements component classes for placement rule areas and multichannel tool
- Implements property inspector properties for rule areas
- Fixes some zone member default initialisation issues
- Gates all multichannel-related imlpementation with existing adv config flag
- Removes rule area type enum, replaces with inference from keepout and
  placement settings
2024-10-10 23:29:02 +01:00
Jeff Young
535aca7a8d Remove redundant tooltips.
Also fixes grammar and capitalisation in a few tooltips.

Also standardises some terminology, such as
"Add" vs "Draw"/"Place" and "Assignment" vs "Association".

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17694
2024-08-18 17:18:07 -06:00
Alex Shvartzkop
16e3692e71 Build time optimizations. 2024-04-27 23:49:13 +03:00
Jeff Young
0890ac57dd Improve clarity of default zone settings. 2024-02-03 13:22:16 +00:00
Jeff Young
df83e24eb7 Cleanup.
It's been a long time since line style was specific to plotting.
2023-11-25 13:12:45 +00:00
Jeff Young
3f26b29aa2 Minor cleanup and removal of stale comments.
Also attempts to fix a focus-loss bug on GTK after zone dialog.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13221
2023-08-27 10:53:03 +01:00
Jeff Young
c48084bbbf Minor cleanup and removal of stale comments. 2023-08-27 10:53:03 +01:00
Jeff Young
1218f61d0a Implement undo/redo for footprint children.
Our special-cases to handle the fact that we didn't do this had far
outgrown the code necessary to actually handle it.
2023-07-15 17:37:31 +01:00
Ian McInerney
2fb6f19a84 Separate immediate and delayed action dispatch
Using a boolean argument just leads to a lot of trailing booleans in the
function calls and is not user friendly. Instead, introduce PostAction()
to send an action that runs after the coroutine (equivalent to passing
false or the default argument), and leave RunAction as the immediate
execution function.
2023-06-27 00:57:59 +01:00
Ian McInerney
480223f67c More RunAction specialization 2023-06-20 21:52:50 +01:00
Jeff Young
bbd6c80507 Collapse FP_* down into their PCB_* equivalents. 2023-03-31 22:57:46 +01:00
Alex
b01d950071 Remove start pt when collinear with neighboring pts in zone/poly draw. 2022-12-10 06:21:54 +03:00
Alex
3d2b1aaf90 Improve H/V/45 deg mode when drawing zones and polygons. 2022-12-09 19:11:56 +03:00
Seth Hillbrand
056f45cd70 Fixup most intersecting polygon points
Remaining is the intersecting complex pad, so this keeps the error
message when drawing

Fixes https://gitlab.com/kicad/code/kicad/issues/12806
2022-11-08 16:05:04 -08:00
dsa-t
0b3ecdd968 Revert "Fix handling of self-intersecting polygons"
This reverts commit ed309e20da062d2c09be28c1ba434bfe637b659f
2022-11-07 09:41:56 +00:00
Seth Hillbrand
ed309e20da Fix handling of self-intersecting polygons
We allow temporary self-intersection but before committing, we reduce
the polygon to a single outline (optionally with holes)

Fixes https://gitlab.com/kicad/code/kicad/issues/12806
2022-11-01 13:09:11 -07:00
Seth Hillbrand
fb74bdb059 Don't consider rule area zones in priority calc 2022-08-25 10:12:58 -07:00
Seth Hillbrand
e661545ecf Choose the first unused priority value for zones
Default the new zone priority value to the lowest available unused
priority.  Ensures that, by default, a new zone has a unique priority
level preventing zones from unintenionally shorting
2022-08-25 10:05:30 -07:00
Seth Hillbrand
418df36790 Avoid teardrops in priority calculation
When choosing a new priority value, don't look at teardrops (which have
high priority)
2022-08-25 08:41:14 -07:00
Seth Hillbrand
3e4cfab254 Set new zone priority to unique number
Previously new zones' priorities were all set to 0.  This is almost
always wrong and can lead to unintended conflicts.  The new zone default
value is now set to one higher than the largest number on the board.
This is a better default value because it will not conflict with
existing values.
2022-08-24 16:37:57 -07:00
Jeff Young
155620cc9a Move H/V/45 mode from zone properties to toolbar.
Fixes https://gitlab.com/kicad/code/kicad/issues/8587
2022-05-29 21:30:15 +01:00
Jeff Young
23fb4c7433 Uniformly use a single facility for location-less prime events.
Also implements a uniform mechanism for avoiding auto-scroll after
a prime event or dialog which results in a mouse position at the
edge of the canvas.

Fixes https://gitlab.com/kicad/code/kicad/issues/11057
2022-05-16 23:43:00 +01:00
Jeff Young
fa5a484797 Remove unused variable. 2022-03-16 14:56:32 +00:00
Jeff Young
a4a3f6ff74 Fix zone/connectivity deadlock. 2022-03-01 12:02:17 +00:00
Jeff Young
58b8d63ff8 Draw boundary based on first zone layer. 2022-02-28 21:40:36 +00:00
Jeff Young
2bc86fa0a8 Shapes for schematic.
ADDED arc, circle and rectangle shapes for schematic.  Shapes support
line styles and fill colors.

CHANGED sheet background color in Edit Text & Graphics Properties to
fill color (and it now affects shapes).

Pushed STROKE_PARAMS down into common and moved all shapes to using it
for stroke descriptions.
2021-12-23 20:36:07 +00:00
Jeff Young
0fb864d596 Pull some name changes back from 7.0 to ease merging. 2021-07-21 20:58:59 +01:00
luz paz
f968fc8719 Fix source comment / documentation typos 2021-06-09 19:32:58 +00:00
Marek Roszko
10e60acf34 Clean up including of board_design_settings.h 2021-06-06 15:03:42 -04:00
Ian McInerney
4f05262705 Cleanup includes in board.h and footprint.h 2021-06-03 20:19:52 +01:00
Marek Roszko
21fde9b629 enum class PCB_SHAPE_TYPE_T 2021-04-30 22:36:12 -04:00
Ian McInerney
a94a481574 Fix compile warnings
Some simple warnings and also a deprecation warning from wx
because they felt that a function should be renamed...
2021-03-23 19:46:49 +00:00
Roberto Fernandez Bautista
50aafb9d2a Do not auto-refill zones when added or edited
The only exception is when using the Zone Properties Dialog and
user preference is enabled
2021-03-21 20:13:20 +00:00
Roberto Fernandez Bautista
f6c4677189 ADDED Option to disable automatic zone filling in pcbnew
The new setting is stored as 'editing.auto_fill_zones' and controls
whether zones should be refilled after certain actions or not.
2021-03-21 20:13:20 +00:00
Jeff Young
a01bd52571 Use default line width when creating polygons.
Fixes https://gitlab.com/kicad/code/kicad/issues/7876
2021-03-12 14:54:54 +00:00
Dominik Wernberger
e2aa7be4b3 Added a lot of consts and refactored a few lines 2021-03-08 12:49:48 -08:00
Jon Evans
1e33928b96 Fix issues with zone filling connectivity locking
Two issues found with the locking system used to prevent access to
stale connectivity data during the zone fill process:

1) a std::mutex has undefined behavior if you try to use it to guard
against access from the same thread.  Because of the use of wx event
loops (and coroutines) it is entirely possible, and in some situations
inevitable, that the same thread will try to redraw the ratsnest in the
middle of zone refilling.

2) The mutex was only guarding the ZONE_FILLER::Fill method, but the callers
of that method also do connectivity updates as part of the COMMIT::Push.
Redrawing the ratsnest after the Fill but before the Push will result in
stale connectivity pointers to zone filled areas.

Fixed (1) by switching to a trivial spinlock implementation.  Spinlocks would
generally not be desirable if the contention for the connectivity data crossed
thread boundaries, but at the moment I believe it's guaranteed that the reads
and writes to connectivity that are guarded by this lock happen from the main
UI thread.  The writes are also quite rare compared to reads, and reads are
generally fast, so I'm not really worried about the UI thread spinning for any
real amount of time.

Fixed (2) by moving the locking location up to the call sites of
ZONE_FILLER::Fill.

This issue was quite difficult to reproduce, but I found a fairly reliable way:
It only happens (for me) on Windows, MSYS2 build, with wxWidgets 3.0
It also only happens if I restrict PcbNew to use 2 CPU cores.
With those conditions, I can reproduce the issue described in #6471 by
repeatedly editing a zone properties and changing its net.  The crash is
especially easy to trigger if you press some keys (such as 'e' for edit)
while the progress dialog is displayed.  It's easiest to do this in a debug
build as the slower KiCad is running, the bigger the window is to trigger this
bug.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/6471
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7048
2021-01-18 13:22:12 -05:00
Seth Hillbrand
5a3e5781bf Allow polygon drawing on edge cuts and courtyard
Prevents line splitting behavior needed in v5 when drawing polygons on
courtyards. Also provide property dialog with some smarts to handle
special layers

Fixes https://gitlab.com/kicad/code/kicad/issues/6900
2020-12-30 14:10:30 -08:00
Jeff Young
acfbcb4beb Make distinction between PCBNew-wide tools and Board-specific tools.
The old names were really hard to keep straight (even for me, who named
many of them).
2020-12-16 13:32:46 +00:00
Jeff Young
ec020dd19f First-class support for filled shapes. 2020-11-14 01:40:32 +00:00
Jeff Young
bdbb68f813 MODULE -> FOOTPRINT. 2020-11-13 16:04:03 +00:00
Jeff Young
3451ac3088 PCB_MODULE_T -> PCB_FOOTPRINT_T 2020-11-13 15:16:24 +00:00