Commit Graph

58 Commits

Author SHA1 Message Date
Jeff Young 03ba14c6d3 Tighten lifecycle management of parent group pointers.
Also adds some debugging to try to catch dangling pointers.

Also adds a cache for group bounding boxes (which will be expensive
to calculate for large groups).

Fixes https://gitlab.com/kicad/code/kicad/issues/12875
2022-11-11 17:27:28 +00:00
Jeff Young d16b23d16e Name shortening and line-break reduction. 2022-10-21 18:41:39 +01:00
Jeff Young 437d2c4589 Overhaul of remove-unconnected's zone filling and drawing strategies.
1) The highest priority zone that a via/pad collides with "owns" its
connectivity state.  Once set, lower priority zones cannot change it --
and in fact, if they would have connected to it are forced not to.

2) The connectivity state goes with the zone fill state, and therefore
must be saved in the file.

3) Display of remove-unconnected's pads is no longer done in GetViewLOD()
(which isn't called for selected items), and is instead done in PCB_PAINTER.
This allows us to draw the full pad in outline mode when a via/pad is
selected which would otherwise only show the hole.

4) Note that in some cases this will still generate DRC errors -- in
particular when a via nearly collides with a higher priority zone it
won't get "owned" by that zone and may therefore have insufficient
clearance if said zone concludes it's unconnected and a subsequent
(lower priority) zone connects to it (causing it to now become flashed).

Fixes https://gitlab.com/kicad/code/kicad/issues/11299
2022-10-18 13:05:42 +01:00
Jeff Young d1450e1802 Commenting. 2022-10-13 13:05:51 +01:00
Jeff Young 64a6fc0fd4 Push UNITS_PROVIDER down into a low-level mixin.
This allows us to also construct cheap UNIT_PROVIDERs for specific
tasks when necessary.
2022-09-19 17:10:59 +01:00
Marek Roszko 3d5913c825 Remove convert_to_biu.h, merge contents to base_units.h 2022-09-16 21:09:28 -04:00
Jeff Young 281b9d405a ADDED ability to specify where pad number (& net name) go on custom shaped pads.
Fixes https://gitlab.com/kicad/code/kicad/issues/6627
2022-09-14 11:37:20 +01:00
Jeff Young 16b4f96405 Centralize no-connect- and free-pad processing.
Also makes the track-net-names less squirrelly around the viewport
edges.
2022-09-06 13:59:52 +01:00
Jeff Young f17a865593 Move EDA_ITEM hitTest to BOX2I. 2022-08-31 17:18:45 +01:00
Jeff Young 2dc6300501 Move EDA_ITEM bounding boxes to BOX2I. 2022-08-31 10:16:55 +01:00
Jeff Young e0f6a6e475 Run hole-to-hole checks on Edge_Cuts layer.
Also makes the flashing logic inside PAD::GetEffectiveShape() easier
to understand.

Fixes https://gitlab.com/kicad/code/kicad/issues/12296
2022-08-29 17:37:49 +01:00
Maciej Suminski 7f00efe6cf Properties: Fixed conditional properties using enum values in the conditions
When wxAny holds an enum, it cannot be compared with an integer due to a
missing conversion function. In such case, conditional properties
compare a raw value rather than wxAny.
2022-08-22 21:32:32 -04:00
Jeff Young 4f0136db3b Attempt to fix std::initializer_list lifetime issue. 2022-08-21 20:54:41 +01:00
Jeff Young aa2ad3b44c Move KICAD_T[] to std::initializer_list<KICAD_T>. 2022-08-20 10:28:11 +01:00
Jeff Young 015bde8cb0 Test pad:hole violations in footprints as long as not same pad number.
Fixes https://gitlab.com/kicad/code/kicad/issues/12124
2022-08-07 19:49:39 +01:00
Jeff Young bf5e649e44 Fix log errors in new solder masking checking code. 2022-07-23 09:26:04 +01:00
Jeff Young f41af10007 Clean up hole shapes for safety (smart pointer) and consistency. 2022-07-22 23:06:07 +01:00
Jeff Young 2de10080cd Add edge and margin clearances to message panel. 2022-07-15 16:14:32 +01:00
Jeff Young 90af5a36d2 Show hole clearance lines around NPTH pads.
Also make the clearance line NONPLATED_HOLES colour, not the PADS_TH
colour.
2022-04-04 10:28:33 +01:00
Seth Hillbrand 442aae19d9 Separate flashing check for connectivity
When building the connectivity database, we should not be using the
connectivity to check for shapes.

To make this deterministic, we introduce two flags (ALWAYS_FLASH and
NEVER_FLASH) that are used with connectivity building to determine
whether a pad is flashed for connectivity or not.  ZONE <-> PAD/VIA
connectivity will be checked with ALWAYS_FLASHED and all other
connectivity will be checked with NEVER_FLASHED if they are marked for
potential annular ring removal.  If they are not marked for removal,
they will be checked ALWAYS_FLASHED.

Fixes https://gitlab.com/kicad/code/kicad/issues/11114
2022-03-16 17:30:01 -07:00
Jeff Young 2ec21c7720 Don't check for board edge collision on castellated pads.
Fixes https://gitlab.com/kicad/code/kicad/issues/10970
2022-03-14 20:19:09 +00:00
Jeff Young 1ee3ce45e8 Don't ask for layer of multi-layer objects. 2022-02-18 14:19:13 +00:00
Jeff Young 5efa354f0f Add asserts to flush out incorrect uses of GetLayer(). 2022-02-18 12:14:38 +00:00
Jeff Young e84c574830 Some more EDA_ANGLE cleanup. 2022-01-16 19:16:18 +00:00
Seth Hillbrand 22a77d3556 Move EDA_ANGLE to KiMath lib
KiMath should only depend on itself not on other elements in the tree
2022-01-14 17:12:24 -08:00
Jeff Young c9487bad18 Move BOARD_ITEM::Rotate() to EDA_ANGLE. 2022-01-14 16:08:19 +00:00
Jeff Young d485eb2514 Move pads to EDA_ANGLE. 2022-01-14 16:08:18 +00:00
Marek Roszko e4dbfcd92d Swap out some wxSize for VECTOR2I 2022-01-04 20:42:27 -05:00
Marek Roszko c4c56de708 Neurotically update position wxPoint usages 2022-01-01 11:55:51 -05:00
Jeff Young ef10b36948 Add mask-to-copper clearance parameter and rename mask margin. 2021-12-24 12:36:41 +00:00
Jeff Young 32721755bf Hook up zone-pad connections to custom rules.
ADDED zone_connection constraint.
ADDED thermal_relief_gap and thermal_spoke_width constraints.

ADDED angle override for thermal relief spokes in Pad Properties.

Fixes https://gitlab.com/kicad/code/kicad/issues/4067
2021-12-23 22:30:26 +00:00
Wayne Stambaugh 06f206104d Pcbnew: fix chamfered rectangular pad definitions in GenCAD exporter.
The pad comparison function was never updated when chamfered rectangular
and custom pads were added so if more that one variant of either of those
pad types existed in a design, only the first one would get generated and
assign to every pad of that type.

The custom pad primitive comparison has not be implemented so the exported
designs may be broken for custom pads.
2021-11-24 12:54:44 -05:00
Jeff Young e6ca9837a2 Clear numbers from non-numberable pads and don't run DRC on them.
This was also the last straw on the misnamed PAD::GetName() and
PAD::SetName(), which are now PAD::GetNumber() and PAD::SetNumber().

Fixes https://gitlab.com/kicad/code/kicad/issues/9017
2021-08-24 01:03:06 +01:00
Jeff Young fec34e8dd8 Get rid of an extraneous layer parameter.
Also adds a bit of nullptr safety.
2021-08-23 20:00:17 +01:00
Jeff Young 096e342386 Prefix TRACK, ARC and VIA. 2021-06-11 22:07:02 +01:00
Marek Roszko 2d584ca5ec board_item.h already included via board_connected_item.h 2021-06-06 08:47:59 -04:00
Marek Roszko dd9b8a9f73 Remove pcbnew.h includes in headers 2021-06-06 08:25:28 -04:00
Marek Roszko 3a9a85b373 Enum class PAD_PROP_T
Renamed such that it does not affect python
2021-05-01 10:58:30 -04:00
Marek Roszko 03cf2b517f Enum class PAD_ATTR_T
Renamed such that python stays the same
2021-05-01 10:51:54 -04:00
Marek Roszko b243c2280d enum class PAD_SHAPE_T 2021-05-01 08:22:35 -04:00
jean-pierre charras dc3a73a2fb PAD::MergePrimitivesAsPolygon(): add option to approximate circles outside the actual shape
When creating a polygon from an arc/circle, the small error due to approximation
can be now inside (when drawing/plotting the shape) or outside the circle
(when building a clearance area) like other pad shapes
Fixes #5313
https://gitlab.com/kicad/code/kicad/issues/5313
2021-04-18 20:10:00 +02:00
Jon Evans 18037e2f65 Rework bitmap system to load from archived PNGs
Bitmaps are now identified by an enum class instead of by pointers.
Bitmap loading and caching is now handled by a class in common, and
we no longer compile most bitmaps into the binary, so there is no
longer a bitmaps static library.

Instead, bitmaps are archived to a .tar.gz file which is installed
in ${KICAD_DATA}/resources/images.tar.gz

The source PNGs are checked in to Git as the original CPP files were,
so that people can build without the required dependencies to convert
SVGs to PNGs.

Initial support is also added for dark theme icons, although this
is not yet exposed in the GUI.

Stubs are present for multi-resolution image resources, but this is
not fully-baked yet and could use some refinement.
2021-03-11 08:37:35 -05:00
Jeff Young e3560e6414 Add parent property to footprint children. 2021-02-19 21:06:45 +00:00
Seth Hillbrand 714430fefa Flash pads when connected by zone
Zone connections (even half-connections) should trigger the connected
logic in flashPads.  This removes the double-standard for painting pads
and imposes thermal standoff based on the net connection to the pad if
it shares a net, not just if connected
2021-01-28 13:21:22 -08:00
Wayne Stambaugh 6a39b81647 Fix the last of broken Doxygen comment specifiers. 2021-01-27 17:39:44 -05:00
Jeff Young f5e35af1a5 Transmit pin electrical types through to pads. 2021-01-23 00:10:01 +00:00
Jeff Young 3fd128a75b Performance enhancements. 2021-01-08 00:46:55 +00:00
Seth Hillbrand 82e728dbf6 Remove drawing of annular rings in high contrast
High contrast should not show the annular rings from other layers.  Once
the ring is removed, we hide the annular when not focused on a flashed
layer

Fixes https://gitlab.com/kicad/code/kicad/issues/6896
2020-12-30 17:38:30 -08:00
Jon Evans e5b7e7d2b2 Add missing header needed for gcc builds 2020-12-28 16:02:06 -05:00
Jeff Young 3e2aa8df3a Thread safety for pad effective shape building. 2020-12-28 20:44:46 +00:00