101 Commits

Author SHA1 Message Date
Jeff Young
f34e280c81 Garden-variety 100X performance improvement.
Adds a compile mode for layer strings.
2021-08-15 22:24:51 +01:00
Jeff Young
1ec70d30af Cherry-pick some 7.0 Clearance Resolution improvements.
6.0 will be in the field for a long time, and the better the debugging
tools we have available the less costly it will be to maintain.

Fixes https://gitlab.com/kicad/code/kicad/issues/8961
2021-08-15 19:03:58 +01:00
luz paz
0446d35f0d Fix source comment/doc typos (follow-up)
Found via `codespell -q 3 -S *.po,./thirdparty -L aactual,acount,aline,alocation,alog,anormal,anumber,aother,apoints,aparent,aray,dout,einstance,modul,ot,overide,serie,te,,tesselate,tesselator,tht`
2021-07-13 10:48:17 +00:00
Jeff Young
a89f6404b4 Fix logic bug found by Coverity. 2021-06-24 12:18:22 +01:00
Jeff Young
096e342386 Prefix TRACK, ARC and VIA. 2021-06-11 22:07:02 +01: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
Ian McInerney
23f8851409 Remove pcb_group include from board header 2021-06-03 20:03:31 +01:00
Jeff Young
00ed75b891 Fix DRC performance with multi-layer keepout zones.
The main issue was a parameter mismatch which caused On^2 behaviour
for zone layers.

But there are several other performance optimizations here, along
with status bar updating for zones while running the dissallow test.

Fixes https://gitlab.com/kicad/code/kicad/issues/8521
2021-06-02 14:11:43 +01:00
Marek Roszko
cf2bb5692a Remove the wxLog calls from math/util.h for now
This was leaking windows headers and partial wx headers to 1084 compilation units......
This also means math/util.h is leaking to 1084 compilation units which seems a bit high too.
2021-06-01 18:44:22 -04:00
Jeff Young
d12e5d824e Renaming for clarity and a performance improvement in corner rounding. 2021-06-01 23:11:54 +01:00
Marek Roszko
382dca4e6f Fix uninitialized member warnings
Based on PVS Studio report
2021-05-30 20:01:01 -04:00
Jeff Young
e93e9fa3e5 Add rudimentary type checking to rule eval with reporter.
Also cleaned up existing error reporting to not expend CPU cycles
when there was no reporter.

Fixes https://gitlab.com/kicad/code/kicad/issues/8438
2021-05-20 23:06:24 +01:00
Tomasz Wlostowski
939b5e1932 PCB_EXPR_EVALUATOR: don't use string comparison to check for undefined enum values 2021-05-03 23:45:54 +02:00
Marek Roszko
03cf2b517f Enum class PAD_ATTR_T
Renamed such that python stays the same
2021-05-01 10:51:54 -04:00
Jon Evans
ae113ea299 DRC: inDiffPair should return false if the coupled net is missing
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8268
2021-04-21 22:41:17 -04:00
Jeff Young
a2ffb45698 Update diff pair rule syntax to be clearer.
Fixes https://gitlab.com/kicad/code/kicad/issues/8010
2021-03-25 10:29:38 +00: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
Jeff Young
fe196771d8 Implement isCoupledDiffPair() DRC rule function.
Fixes https://gitlab.com/kicad/code/kicad/issues/7975
2021-03-20 23:07:36 +00:00
Jeff Young
ce46fe6581 Add insideFrontCourtyard and insideBackCourtyard DRC functions.
Fixes https://gitlab.com/kicad/code/kicad/issues/7972
2021-03-20 21:53:30 +00:00
Jeff Young
47145d349b Don't run insideArea on ruleAreas.
Fixes https://gitlab.com/kicad/code/kicad/issues/7826
2021-03-07 17:55:30 +00:00
Jon Evans
cd7a2cd807 Fix shadowing fix that caused logic bug and different shadowing 2021-02-27 20:01:14 -05:00
Jon Evans
65531accf6 DRC: allow testing against particular diff pair membership 2021-02-27 19:54:55 -05:00
Jeff Young
3538c8a963 Thread safety for new caches (which are also used during zone fill).
Fixes https://gitlab.com/kicad/code/kicad/issues/7749
2021-02-27 21:33:30 +00:00
Wayne Stambaugh
5ca25a609e Pcbnew: fix shadow variable in expression evaluator. 2021-02-27 12:09:06 -05:00
Jeff Young
4ede4e061e More DRC performance work.
Push DRC zone RTrees into BOARD so that they can also be used by
insideArea.

All these caches are a bit of an encapsulation leak, but they make a
significant impact on performance.

Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-27 11:45:04 +00:00
Jeff Young
f226373324 Add cache for insideArea() and insideCourtyard().
Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-26 19:22:25 +00:00
Jeff Young
c7a71b44e5 Zones must be entirely inside for insideCourtyard.
This is a huge performance win as otherwise we're doing *lots* of
shape collisions with ground planes.

Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-26 17:19:48 +00:00
Seth Hillbrand
bac7b3e77a Protect against dynamic_cast
Items might not be FOOTPRINT, in which case the dynamic_cast will return
nullptr.  Check for this in the subfunction
2021-02-22 10:12:54 -08:00
Jeff Young
ba2d0cdd62 Nullptr safety. 2021-02-22 01:14:06 +00:00
Jeff Young
a1f09befe0 Vias are plated holes too.... 2021-02-20 14:13:36 +00:00
Jeff Young
199ef61cdc A footprint isn't "inside" itself.
Fixes https://gitlab.com/kicad/code/kicad/issues/7549
2021-02-15 22:52:12 +00:00
Jeff Young
7b9700d871 Convert insideArea test for zones to be "any copper inside".
The test used to be "entire zone inside", but that didn't work when
we use it to implement "copper pour" keepout areas.

Fixes https://gitlab.com/kicad/code/kicad/issues/7420
2021-02-04 13:43:50 +00:00
Jeff Young
beab68db13 Fix bone-headed error in rules optimization. 2021-01-12 12:46:51 +00:00
Jeff Young
63e2046eb0 Performance improvements for DRC rules. 2021-01-11 22:09:36 +00:00
Jeff Young
81aa91ce2a Run insideCouryard on all matching footprints, not just the first.
Fixes https://gitlab.com/kicad/code/kicad/issues/6945
2021-01-05 22:22:25 +00:00
Jeff Young
a9d4d9d7f0 Modify insideArea() to return true for zones only when fully inside.
Intersections is enough for other objects.
This is also a bit of a DRC performance improvement.

Fixes https://gitlab.com/kicad/code/kicad/issues/6934
2021-01-05 21:43:04 +00:00
Jeff Young
f691828c8f Nullptr safety.
Fixes https://gitlab.com/kicad/code/kicad/issues/6862
2021-01-02 22:26:12 +00:00
Jeff Young
b123318cf6 Encourage use of full DRC for board & footprint malformed outlines.
It shows much more detail.  Removes some nag dialogs and places
hypertext links in others.

Also fixes the auto-layer-showing to correctly show Edge.Cuts or
F.CrtYd or B.CrtYd for errors relating to them.

Fixes https://gitlab.com/kicad/code/kicad/issues/6446
2020-11-20 17:24:52 +00:00
Jeff Young
1ce1e493d6 A rule zone is not really a BOARD_CONNECTED_ITEM.
Or at least it shouldn't always be treated as one.

Fixes https://gitlab.com/kicad/code/kicad/issues/6382
2020-11-15 20:23:15 +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
Jeff Young
522d64968e Yet more module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young
52a46341db More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young
f5443de7f9 D_PAD -> PAD. 2020-11-13 15:16:24 +00:00
Jeff Young
84dd5108ba Remove some "class_" prefixes from files. 2020-11-13 15:16:23 +00:00
Jeff Young
f7333ad64a Update some classnames including archaic zone names. 2020-11-12 10:31:25 +00:00
Werni
a7d5d1f091 Add more consts all over the place 2020-10-27 11:03:35 +00:00
Ian McInerney
31e626f279 Cleanup creation of all our smart pointers 2020-10-26 23:52:44 +00:00
Jeff Young
8c93fc76ae Don't require keepout zones to be named.
insideArea() now takes A, B, a UUID or a zone name.  (Only the UUID
is new.)
2020-10-25 21:08:09 +00:00