Commit Graph

255 Commits

Author SHA1 Message Date
Alex Shvartzkop 4bf8ed32cd Optimize testCourtyardClearances when moving footprints (33%->0.69%)
Check bounding boxes without hidden text first before trying to check courtyards.

See https://gitlab.com/kicad/code/kicad/-/issues/18148
2024-06-24 06:43:58 +03:00
Alex Shvartzkop dc56364cf2 Optimize testCourtyardClearances when moving a board.
CPU usage: 86% -> 33%

See https://gitlab.com/kicad/code/kicad/-/issues/18148
2024-06-24 02:00:34 +03:00
Alex Shvartzkop f5be388acd Don't call GetSide in FOOTPRINT::GetBoundingBox when not needed.
CPU usage: -13% when moving a board.
2024-06-20 06:02:11 +03:00
Jeff Young 1eb26b439a REMOVED new footprint dialog.
We now just create an "Untitled" footprint.

Also fixes a bug where the preview of new footprints
would zoom in too far.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17573
2024-05-31 10:36:51 +01:00
Jeff Young 15d4e114e0 Move pad checking to Footprint Checker.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18102
2024-05-29 15:25:49 +01:00
jean-pierre charras 8165ec66e9 FOOTPRINT::CheckPads(): better check for hole in PHT pad.
Hole not fully inside the pad copper area is now tested.
2024-05-28 20:00:08 +02:00
Jeff Young bc14a841cb Check for drilled hole errors in Footprint Checker.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18093
2024-05-27 13:51:21 +01:00
Jeff Young e400d49af6 Trim covered region to bounding hull.
Otherwise a long track crossing a footprint will look
like it covers most of it.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17299
2024-05-26 18:45:58 +01:00
Jeff Young 25bb3f77fa Fix keep-upright algo for footprint text.
Also removes PCB_FIELDs from rotation centre calc in
footprint editor if there is other stuff selected.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16896
2024-05-17 18:34:44 +01:00
Wayne Stambaugh f1e8495dc9 Fix QA DRC regression test issue. 2024-05-07 16:22:09 -04:00
Wayne Stambaugh a508f2e716 Fix false annular ring width DRC test failure.
The DRC annular ring width test failed to take into account that a pad
could be contained inside another pad having the same number (thermal
vias for example) which changes the effective annular width of the pad
contained within another pad.  A test was added to calculate the effective
annular ring width in this case.

Added some PNS log viewer helper and test code to the PNS playground QA
utility for testing the effective pad annular width code.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17485
2024-05-07 08:04:17 -04:00
Seth Hillbrand a835ba0715 Add "Mechanical" pad property
Prevents mechanical support pads from being used to check pad types.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16747
2024-05-05 21:57:10 +00:00
Jeff Young 89433afb47 Handle delete-table undo in Footprint Editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17689
2024-05-05 19:08:16 +01:00
Jeff Young b12043a612 Separate fields from text for boundingBoxes & hit-testing.
We used to have special cases to keep fields from bloating
a footprint's bounding box or being used for hit-testing.
However, now that we can distinguish PCB_FIELD_T from
PCB_TEXT_T, we should not apply these special cases to
PCB_TEXT_T.  Text in footprints should act like graphics.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17854
2024-04-28 18:47:11 +01:00
Seth Hillbrand 0ea02fa2ff Be a little more careful about courtyard caches
Rather than utilizing the board timestamp, we check cached hash of the
courtyard results before rebuilding
2024-04-18 09:32:00 -07:00
Seth Hillbrand df5dd15c6f Protect courtyard cache regen
The courtyards are referenced by multiple calls and will be rebuilt on
command.  If this happens during zone fill (because the board timestamp
has incremented since the start) multiple threads may generate the cache
at the same time, leaving one with an invalid pointer

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17791
2024-04-18 08:41:18 -07:00
Marek Roszko 96cdfc7fa7 Update equality overloads for C++20
C++20 added new reverse and rewritten candidates. This can confuse the compiler because it'll test both A==B and B==A for overloads.
Because we were defining parent class equality overloads, A==B and B==A was considered ambigious due to both being compatible in casting.

So we needed to add explicit child class equality operator overloads
2024-04-12 23:05:58 -04:00
Jon Evans 1dbe78c68b Add QA tests and expand serialization for API 2024-04-02 19:51:18 -04:00
Seth Hillbrand 37a3f52d81 Remove unused variable 2024-03-29 16:48:08 -07:00
Jeff Young 2c21ef1ed0 Fix footprint undo for new UUID caches.
The footprint's children get swapped by the parent's std::swap
call, so they need to get removed/added to their parent around
the swap.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17592
2024-03-29 16:04:32 +00:00
Jeff Young ccfefc3971 Table support for footprint editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17333
2024-03-11 17:46:09 +00:00
Jeff Young 72ba31ba27 Pass symbol's netlist to footprint preview widget.
This allows us to show the pin functions on the corresponding
pads.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17349
2024-03-09 15:01:59 +00:00
Jeff Young ee3be0802c Move PCBNew overrides to nullable properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5562
2024-02-24 20:05:51 +00:00
Jeff Young cab351d249 Don't do a sided-test on a footprint which has no side.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15284
2024-02-04 15:18:23 +00:00
Jeff Young 071d8af5d7 Don't include text in footprint preview widget's autozoom.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16794
2024-01-28 14:35:01 +00:00
Jeff Young 27534074ac Fix errors resulting from FP fields being moved from m_drawings to m_fields. 2024-01-28 11:13:48 +00:00
Jeff Young 7cf861a239 Use ARC_HIGH_DEF (not ARC_LOW_DEF) for courtyard generation.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16695
2024-01-24 12:00:33 +00:00
Jeff Young d47a000564 Make sure group items get added to commit.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16705
2024-01-22 23:34:34 +00:00
Jeff Young bb74100fe2 Fix typo. 2024-01-18 16:17:46 +00:00
jean-pierre charras 07d7ccf46f Fix 2 minor compil warnings. 2024-01-10 09:16:14 +01:00
Jeff Young cd83dfa831 Stage/add/delete group members when adding/deleting group.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16540
2024-01-07 13:39:13 +00:00
Jeff Young 985e590e6f PCB_FIELDs don't belong in the view.
They're handled by their parent FOOTPRINTs.

Also makes sure footprint children get their parents
updated on a swap.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16412
2023-12-31 21:38:11 +00:00
Jeff Young 3f73bbcc4f Don't run keepUpright when not rotating.
For that matter, don't do anything at all for a rotation
of 0 (or a move vector of {0,0}).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16402
2023-12-22 21:22:36 +00:00
Seth Hillbrand 0db362a907 Fix bug where default courtyard outline set to 0
The defaults are stored in mm, this needs to be converted to IU for
proper use in pcbnew
2023-12-08 13:31:13 -08:00
Alex Shvartzkop 111a8d6ab3 Improve/fix Expand connection for graphics. 2023-12-04 09:52:31 +03:00
Alex Shvartzkop c5a6409c35 Fix a crash when opening PCB. 2023-11-29 22:50:52 +03:00
Graham Keeth 4f36f669dc Use Title Case for property names 2023-11-29 01:23:35 +00:00
Seth Hillbrand 75c6b0ab28 Added IPC2581 support
IPC2581 is a modern production file exchange system.  It provides
single-file data output for an entire board including BOM and netlist
information.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/1954
2023-11-26 15:30:58 -08:00
jean-pierre charras f6314e6401 FOOTPRINT::cmp_drawings(): fix a incorrect sort criteria for polygons:
for polygons, GetStart() and GetEnd() have no meaning and cannotbe used
for sorting.
2023-11-13 18:36:00 +01:00
Jeff Young cc721c4907 Improve encapsulation of group internals.
(It's still leaking into BOARD_COMMIT and some other places, but at
least it no longer leaks into all the edit tools.)

Also fixes some bugs when moving/copying/pasting multiple selections
containing length-tuning patterns.
2023-11-09 14:05:35 +00:00
Jeff Young 791aa64950 Functionally it's a "reference image".
The implementation happens to be a "bitmap".

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15932
2023-10-24 15:44:21 +01:00
Seth Hillbrand d99641be40 ADDED: Git integration support
Adds support for project-based git integration, branch support, commit,
revert and updates

Fixes https://gitlab.com/kicad/code/kicad/issues/10441
2023-10-20 12:51:47 +00:00
Alex Shvartzkop be72e07e61 Introduce PCB_GENERATOR. 2023-10-08 02:41:17 +00:00
Alex Shvartzkop d7863b09c5 Move CORNER_STRATEGY out of SHAPE_POLY_SET. 2023-10-06 15:42:50 +03:00
Jeff Young 8760bd8c80 Reconcile "apply defaults to new footprints" with DRC lib checks.
Moves apply defaults settings to Board Setup (where they were
duplicated anyway due to an earlier botched merge).

Modifies the apply-to-graphics algorithm to skip copper shapes.

Modifies DRC library check to skip STROKE_PARAMS for non-copper
shapes.
2023-10-02 22:10:13 +01:00
jean-pierre charras 629081af65 fix FOOTPRINT::GetLikelyAttribute() to follow the comments of
FOOTPRINT::CheckFootprintAttributes(): at least one through hole pad
means most probably a footprint through hole attribute.
2023-10-01 11:21:11 +02:00
Jeff Young 1047130046 Push most of footprint chooser into PANEL_FOOTPRINT_CHOOSER.
Create 2 wrappers for it: DIALOG_FOOTPRINT_CHOOSER and
FOOTPRINT_CHOOSER_FRAME.  The first now gets called from wxGrid
editors, text button editors (such as Change Footprints), etc.

Retire FOOTPRINT_VIEWER_FRAME_MODAL.  FOOTPRINT_VIEWER_FRAME still
exists, but has very few uses at this point.
2023-09-27 16:02:13 +01:00
Alex Shvartzkop ff49d5ada9 Fix ambiguous overloads on wx 3.3 2023-09-14 19:05:46 +03:00
Alex Shvartzkop 892761920a FOOTPRINT::AutoPositionFields: reset justification and angle as well. 2023-09-07 10:57:02 +03:00
Marek Roszko 2e58f4ea60 Fix three spots it always failed to check if the border was enabled 2023-08-30 22:39:07 -04:00