Seth Hillbrand
eccbb374a0
Add debug message to VECTOR3 check
2022-07-16 17:28:40 +00:00
Marco Langer
1606bfc9f8
fixed a runtime divide by zero crash for integral type template instanciations and made the class trivial copyable to increase performance
2022-07-16 17:28:40 +00:00
Alex
27869b1a37
Don't recalculate constants at every call in isqrt.
2022-07-16 14:53:18 +00:00
Jeff Young
0953395c87
LIB_SHAPE slightly abuses SHAPE_POLY_SET by using it for line chains.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/11956
2022-07-08 21:35:40 -06:00
Seth Hillbrand
6fef054c51
Handle basic rounding error in schematic import
...
The fractional part of Altium schematic units is an integer number of
1/10000 mil segments, which is 2.54 nm. The internal unit of eeschema
is 10 nm, so each fractional unit in Altium is 0.254 base eeschema
units. To be consistent with
cf33cfcad1
we round to the nearest 10nm for each element
Fixes https://gitlab.com/kicad/code/kicad/issues/11742
2022-07-07 11:13:11 -07:00
Seth Hillbrand
a8c6488358
Remove warning
2022-06-24 13:55:05 -07:00
Seth Hillbrand
a118f20464
Hide cursor while warping on Wayland
...
Based on https://gitlab.freedesktop.org/xorg/xserver/-/issues/734 we
hide the window cursor prior to warping, which allows XWayland to
reposition the cursor. This is only performed when Wayland is detected;
all other configurations call the standard warp routine
Fixes https://gitlab.com/kicad/code/kicad/issues/9785
2022-06-24 09:56:43 -07:00
Jeff Young
82ebc247b8
More performance enhancements for DRC.
2022-06-18 19:47:11 +01:00
Tomasz Wlostowski
3aed13278d
geometry: more robust colinearity test in SHAPE_LINE_CHAIN::Simplify()
...
We now test the midpoint (B) of the 3 consecutive polyline points (A, B, C), since (assuming the angle between AB and BC is > 90 degrees) AC is always longer than
AB or BC. This minimizes the distance computation rounding error (in the previous algorithm, taking the point C for colineraity test) if AB is short and BC is very long, the test would
often fail due to rouding error in projection/line distance computation
2022-06-03 23:28:41 +02:00
Tomasz Wlostowski
e6ebc2b9b9
geometry: use dedicated 64-bit integer square root for distance computations
...
Guarantees 1 LSB error, while the C++ double type has 55 mantissa bits (meaning for sqrt(X) >~ 2^22.5) the error is not guaranteed.
2022-06-03 23:28:41 +02:00
jean-pierre charras
046045f9de
CalcArcCenter(): fix broken calculation of the arc center.
...
This function is used in the graphic items properties dialog, and each
arc edition from this dialog breaks the arc center position
Fixes #11703
https://gitlab.com/kicad/code/kicad/issues/11703
2022-05-31 10:48:54 +02:00
Tomasz Wlostowski
42e53ee8e9
kimath: fix regression in BuildInitialTrace()/CalcArcCenter causing incorrect arcs in routed traces
2022-05-27 17:41:05 +02:00
Mike Williams
9d90699358
Shape Assertions: print the correct type names
...
It still asserts, but at least for the right reason.
2022-05-26 15:32:45 -04:00
Seth Hillbrand
2a9d7314ca
Initialize area check
...
Ensure that the max_poly set is zero before using
2022-05-26 08:19:16 -07:00
Seth Hillbrand
7dd0c67afd
Handle hand-drawn holes in unfracture
...
We can't know that all holes will be ccw when entering unfracture.
Instead, we set the largest polyline to be the outline and the others to
be the holes.
(cherry picked from commit 1fe956c069
)
2022-05-25 13:21:04 -07:00
jean-pierre charras
9108404efe
Gerbview: seriously speed up the calculation time to draw polygons on OpenGL.
...
Mainly CacheTriangulation() was creating triangles using partition mode.
But this mode is optimized for Pcbnew and Gerbview and different internal units.
Now CacheTriangulation() is used in no partition, much faster in GERBVIEW_PAINTER.
Fixes #11549
https://gitlab.com/kicad/code/kicad/issues/11549
2022-05-13 18:20:35 +02:00
Jeff Young
728777da7c
While icons aren't often used in Mac menus, they *are* supported.
2022-04-24 14:39:00 +01:00
Marek Roszko
c64ea07d0b
Check HKCU before HKLM for registry policies
2022-04-12 21:42:20 -04:00
Marek Roszko
392ed5fecd
Add policy to enable/disable pcm
2022-04-12 10:08:34 -04:00
Roberto Fernandez Bautista
4defc946ef
Fix rounding errors in SHAPE_ARC::Collide + fix qa tests
...
Use CIRCLE::NearestPoint to ensure consistency
2022-04-11 13:46:36 +01:00
Marek Roszko
b3c5054d6c
Add initial system policy checking for turning off data collection
2022-04-09 14:05:28 -04:00
Jeff Young
007906cd16
Fix a degeneracy bug in arc collisions.
...
This also fixes a failure to use the correct effective width for
shapes (which might, for instance, inherit their widths from schematic
defaults, netclasses, etc.).
Fixes https://gitlab.com/kicad/code/kicad/issues/11358
2022-04-08 16:15:58 +01:00
Seth Hillbrand
0625e20fc0
Cleanup spacemouse plugin
...
Sets std:: convention and unifies the defined/non-defined interface
2022-04-01 15:14:41 -07:00
markus-bonk
1a9ef4bd0f
Add support for using a SpaceMouse to pan & zoom in the schematic editor.
2022-03-31 19:03:41 +00:00
Wayne Stambaugh
7b2d9dfc0c
Fix some Coverity uninitialized scalar variable issues.
2022-03-24 13:17:07 -04:00
Seth Hillbrand
363ea99157
Avoid duplicate points in trapezoid pads
...
Duplicate points can be either positive-facing or negative facing, so
test absolutes
Fixes https://gitlab.com/kicad/code/kicad/issues/11025
(cherry picked from commit 207820e112
)
2022-03-22 13:30:45 -07:00
Jeff Young
65185f53a1
Rotate fp zones before comparing with library versions.
...
Also includes some performance fixes to not copy around triangulation
data when it's not needed.
Fixes https://gitlab.com/kicad/code/kicad/issues/10143
2022-03-14 15:53:24 +00:00
Marek Roszko
1890a1aa06
Don't use the ANSI version of SetDllDirectory
2022-03-12 21:40:47 -05:00
Marek Roszko
d6c1f52b55
Plant the ability to verify code signing signatures when trying to load kifaces
...
Off by default and intended for use in released builds only
2022-03-12 21:40:47 -05:00
Marek Roszko
5ef6e97a9e
Two very minor win32 calls to lock down dll/exe search paths from cwd
2022-03-12 12:57:15 -05:00
Marek Roszko
d3ca857af7
Set SetErrorMode on Debug build
2022-03-11 20:51:01 -05:00
Jeff Young
ae307e1b34
Parallelize DRC triangulation, keepout processing, and sliver checking.
...
Also fixes issue with adding fractured polygons in sliver checking which
slowed the board from hell down to less than a crawl.
2022-03-11 20:52:11 +00:00
jean-pierre charras
263faf2870
Fix compil issue (not defined items) on msys2
2022-03-11 09:35:38 +01:00
Marek Roszko
afaff022d7
Set some error flags for win32
2022-03-10 20:17:01 -05:00
Seth Hillbrand
e278e77314
Rework of a24cdcb3f0
...
Inflate with linked holes needs to account for fractured polygons,
otherwise inflating with positive value will create rounded divots where
overlapping fracture lines meet and inflating with negative value will
create spaces between fracture lines.
Calling Simplify before Inflate takes an inordinate amount of time as
the Clipper healing routine is rather slow. Our own Unfracture is meant
to heal the results of our Fracture routine and works much more quickly.
After healing, we still call the Simplify routine
(cherry picked from commit 9ca35cbcee
)
2022-03-10 09:15:50 -08:00
Seth Hillbrand
e8d6d03247
Always return simplified polygons
...
Clipper can handle complex input polygons but we will sometimes struggle
dealing with outputs from the inflate routine that have degenerate or
overlapping points. Calling Simplify after the inflate keeps our
polygons easier to handle
Fixes https://gitlab.com/kicad/code/kicad/issues/11036
(cherry picked from commit a24cdcb3f0
)
2022-03-09 16:19:44 -08:00
Jeff Young
e4b56ab7f1
Performance fixes for the board from hell....
2022-03-08 23:54:34 +00:00
Roberto Fernandez Bautista
d39127cac7
Don't convert arcs with infinite radius - treat them as a line instead
2022-03-07 21:28:43 +00:00
jean-pierre charras
3bee9d3c59
Fix typo
2022-03-07 08:03:48 +01:00
jean-pierre charras
dbfdd3fb56
Fix some Coverity warnings.
2022-03-06 09:48:33 +01:00
Seth Hillbrand
1a7d4f30d9
Fix proper rounding when generating arcs
...
We should allow for KiROUND to find the proper end point of the mid/end
elements when generating an arc from center/start/angle form
2022-03-04 13:14:19 -08:00
Seth Hillbrand
ed7222b1e7
Adds uncertainty propagation to center point calc
...
Since we use center points to move back and forth for angle and
adjustments, we want to ensure that our center point is stable.
Rounding using integers introduces a 0.5 int uncertainty in each
measurement. These are combined together multiple times to calculate
the center point, which combines the uncertainty. Propagating the
uncertainty to the final calculation allows us to assign a range of true
values and pick the value that is most likely the correct value.
Fixes https://gitlab.com/kicad/code/kicad/issues/10739
2022-03-04 11:37:49 -08:00
Seth Hillbrand
3c2eb9311f
Minor optimization for collision checking
...
Prevents extra center point calculations
2022-03-04 11:37:49 -08:00
Tomasz Wlostowski
2746be30c1
geometry: constructor for SHAPE_RECT from a BOX2
2022-03-03 01:02:00 +01:00
Jeff Young
b9a834e600
For Coverity.
2022-02-17 16:23:52 +00:00
Jeff Young
c89bb8d0cf
Formatting.
2022-02-17 16:23:52 +00:00
Jeff Young
b1bd8421e0
Performance: remove associated triangle sets when removing outline.
...
This saves us having to re-triangulate at the end of zone filling.
2022-02-16 17:00:54 +00:00
Jeff Young
d8c4f2cb09
Performance improvements for zone filler.
2022-02-15 19:19:02 +00:00
Jeff Young
5c9e718407
Performance enhancements for connectivity.
...
1) Generate SHAPE_POLY_SET triangulation by outline so they can be
shared between connectivity system and other clients.
2) Don't add items to connectivity when reading board; we're going
to do a total rebuild anyway.
3) Use multithreading when caching triangulation.
2022-02-15 12:20:34 +00:00
Jeff Young
98b9c6e2a1
Better progress reporting and a slight performance boost on commit.
2022-02-15 12:20:34 +00:00
Jeff Young
90f6edad61
Move connectivity algo to collision-based routines.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/1800
Fixes https://gitlab.com/kicad/code/kicad/issues/1769
2022-02-13 00:35:11 +00:00
dsa-t
68655540eb
Clamp cursor to limits of coordinates representation
...
Also improves large distance handling.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8846
2022-02-11 16:42:52 +00:00
Mike Williams
a5e8575091
Eeschema: Implement orthogonal dragging
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1956
2022-02-10 18:38:40 +00:00
Wayne Stambaugh
e93b7b05ec
Wide characterize libs and bitmap2component source.
...
(cherry picked from commit 54f91a0221
)
2022-02-09 11:49:58 -05:00
Seth Hillbrand
d0d472f39d
Hide icon option when platforms disable
...
Mac and some Linux configs disable menu icons. We shouldn't offer the
option when the system does not support this as it leads to confusion
Fixes https://gitlab.com/kicad/code/kicad/issues/10425
2022-02-07 10:28:07 -08:00
Seth Hillbrand
162545ddf0
Validate arc output when editing
...
Handles checking output of the arc to ensure we don't end up generating
an invalid arc. Also keeps the limit of the arc angle to be (360,360)
excluding 0.
Fixes https://gitlab.com/kicad/code/kicad/issues/10070
(cherry picked from commit 8fc831cbc2
)
2022-02-07 08:55:53 -08:00
Marek Roszko
41f54349a5
Replace inserts/push_backs with emplace in some spots
2022-02-05 19:53:31 -05:00
Jeff Young
3f8cada334
Fix some issues with new polygonization of arcs and arc collision test.
...
Test should not be testing against the polygonization error; if done
correctly that should all be on the correct side of the shape. Use an
epsilon instead (I chose polygonization error / 10, but the value isn't
terribly important).
Fixes https://gitlab.com/kicad/code/kicad/issues/10724
2022-02-03 19:53:42 +00:00
Jeff Young
08ee2671cc
A better arc-to-polygon algorithm when error is outside.
...
The existing algorithm nicely handled the error being on the inside (where
the segment ends are error-free), but not when it was on the outside (where
the segment midpoints are error-free).
In any case, we want error-free points at each end of the arc so we don't
get ears or divots.
2022-02-02 23:40:24 +00:00
Seth Hillbrand
82ceaf0d9b
Try not to Simplify lines to a single point
2022-01-31 16:13:27 -08:00
Seth Hillbrand
88a58803ca
Revert "Mark unbundled mac apps as unsupported"
...
This reverts commit 68a0b99835
.
Reverted as unbundled Mac apps patch breaks kicad-mac-builder
2022-01-31 15:57:14 -08:00
Alex
4c4089e836
Allow overlay scrolling on GTK, except for GAL canvases.
...
This prevents glitches when both scrollbars
are visible and scrolling to the end.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10559
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9988
2022-01-31 18:45:47 +03:00
Seth Hillbrand
68a0b99835
Mark unbundled mac apps as unsupported
...
We do no track all the various possible issues arising from using
unbundled Mac apps. Users may choose to use KiCad this way but issues
must be recreated on a supported configuration
2022-01-28 15:49:53 -08:00
jean-pierre charras
0bc5cb33ed
Fix a few issues in plotting code. Fix bug in EDA_ANGLE::IsCardinal()
...
Fixes #10547
https://gitlab.com/kicad/code/kicad/issues/10547
2022-01-21 12:35:58 +01:00
Jeff Young
c8a50d9b50
Remove unit-less angles from VECTOR2I/D APIs.
2022-01-20 23:58:20 +00:00
Jeff Young
14006495d5
Angle cleanup.
2022-01-20 22:35:41 +00:00
Jeff Young
4eac8d7c66
Remove unit-less angles from geometry lib APIs.
2022-01-20 21:10:04 +00:00
Jeff Young
854987f663
Remove unit-less angles from geometry manager APIs.
2022-01-20 21:10:04 +00:00
Jeff Young
fbab335128
Retire DPOINT and DSIZE.
2022-01-20 21:10:04 +00:00
Jeff Young
af20d46d06
Fix converting angles from tenths of a degree.
...
(Conversion was upside-down.)
Also fixes bugs with rotation angle increment not getting units
set and with a 0 footprint editor value overwriting a non-zero
pcb editor value (or vice versa).
2022-01-19 19:55:50 +00:00
Jeff Young
9298da4ebc
ArcToSegmentCount calcs need to use abs value of angle.
2022-01-19 16:01:23 +00:00
Ola Rinta-Koski
ef721f051a
copyright note removed
2022-01-19 15:30:06 +02:00
Jeff Young
2a60017ffa
Fix error in trigo.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/10495
2022-01-19 00:10:32 +00:00
Seth Hillbrand
57afdf153d
Remove unneeded distance calc
...
(cherry picked from commit 857683d372
)
2022-01-18 15:59:16 -08:00
Jeff Young
4e493e2cbc
Clean up some more deci-degrees.
2022-01-18 14:08:47 +00:00
Jeff Young
f310a5b986
Excise deci-degrees from trigo.
2022-01-18 11:44:55 +00:00
Jeff Young
92dae4646e
Yeet dec-degrees from covert_basic_shapes_to_polygon.
2022-01-18 10:14:52 +00:00
Jeff Young
b828355206
A bit more angle cleanup.
2022-01-18 09:48:24 +00:00
Jeff Young
e37ca2f757
Remove dead code.
2022-01-18 01:40:03 +00:00
Jeff Young
8c246a761d
Move EDA_ANGLE from int to double.
2022-01-17 20:57:54 +00:00
Jeff Young
e61144d45a
Finish with EDA_ANGLE.
2022-01-16 21:15:40 +00:00
Jeff Young
e84c574830
Some more EDA_ANGLE cleanup.
2022-01-16 19:16:18 +00:00
Jeff Young
9b661aea10
EDA_ANGLE for plotters.
...
Also fixes a compile error in the PNS Playground.
2022-01-16 01:19:45 +00:00
Jeff Young
1539fa5af2
Move SHAPE_ARC to EDA_ANGLE.
2022-01-16 01:19:45 +00:00
Jeff Young
f3fa7febeb
Fix a degrees / tenths-of-a-degree mismatch.
2022-01-15 11:16:19 +00:00
Jeff Young
3f98769a77
More EDA_ANGLE.
...
Includes bug fix for catastrophic error in Add() for converting to
radians.
Includes bug fixes for the fact that the pcbnew test can't seem to
find the ANGLE_* objects (getting all 0's instead).
2022-01-15 01:30:04 +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
07013d00e1
More EDA_ANGLE.
2022-01-14 16:08:19 +00:00
Jeff Young
abd3f5bc2b
Move footprints to EDA_ANGLE.
2022-01-14 16:08:18 +00:00
Marek Roszko
fcfe42d67c
Continue the war on wxPoint
2022-01-10 19:52:26 -05:00
Jeff Young
27c967421c
Commenting and "auto" reduction.
2022-01-08 16:47:45 +00:00
Jeff Young
eb58d7e44c
Text glyph caches and bug fixes.
...
1) Unify metrics between stroke and outline fonts
2) Unify handling of rotation and mirroring
3) Bug fixes in collision handling
4) Use of VECTOR2I (instead of VECTOR2D) for world-coordinates
5) Generate outline font overbar with rounded ends and fix rotation
bugs
6) Generate wxEVT_CHOICE events from FONT_CHOICE::SetFontSelection
7) Change text-item PNS SOLIDs to use compound shapes
2022-01-08 16:47:45 +00:00
Marek Roszko
6d2fd17a39
Remove a wxPoint dependence in trigo
2022-01-04 23:23:36 -05:00
Marek Roszko
d7e790b6c1
Remove wx/gdicmn.h from trigo.h
2022-01-04 21:26:04 -05:00
Marek Roszko
726d873c53
Tear down the wxPoint trigo helpers
2022-01-04 21:23:11 -05:00
Marek Roszko
e4dbfcd92d
Swap out some wxSize for VECTOR2I
2022-01-04 20:42:27 -05:00
Marek Roszko
98ee6c5f85
Cleanup some wx/gdicmn.h includes
2022-01-04 20:32:27 -05:00
Marek Roszko
ac715d2e51
Scoop up some more wxPoint instances
2022-01-03 20:00:53 -05:00
Simon Richter
d25fe17b28
Bump minimum required CMake version to 3.11
...
Signed-off-by: Marek Roszko <mark.roszko@gmail.com>
2022-01-01 21:35:08 -05:00
Marek Roszko
7d671cff1e
Scoop up some more wxPoints
2022-01-01 21:06:40 -05:00
Marek Roszko
589a03afcd
Add std::hash specialization for VECTOR2I
2022-01-01 20:29:08 -05:00
Marek Roszko
8c0da67108
Fix accidentally introduced recursion
2022-01-01 14:39:03 -05:00
Marek Roszko
c91d3e3cf9
Remove some more wxPoint
2022-01-01 14:12:20 -05:00
Marek Roszko
ea613cf448
Another batch of point changes
2022-01-01 13:17:12 -05:00
Marek Roszko
c4c56de708
Neurotically update position wxPoint usages
2022-01-01 11:55:51 -05:00
Marek Roszko
347e03363a
Convert wxPoint/wxSize starting from EDA_RECT usages
2022-01-01 11:30:33 -05:00
Tomasz Wlostowski
78968f75c0
SHAPE_POLY_SET: polysets can now be built from a bunch of arbitraily ordered oriented outlines. Used by the SVG hole support
2021-12-31 17:04:16 +01:00
jean-pierre charras
68f6db7213
Add bezier curve functions to prepare teardrop calculations
2021-12-31 15:54:35 +01:00
Mark Roszko
44dc602d6b
Yeet wxPoint/wxSize out of PLOTTER
2021-12-29 19:02:50 +00:00
Jeff Young
dd6cd7d184
Pull some more improvements in from rockola/kicad-strokefont.
...
This one is primarily about pushing TEXT_ATTRIBUTES in to the GAL
API, but it also includes adding EDA_ANGLE signatures to some trig
routines to ease integration.
2021-12-29 17:32:19 +00:00
Alex
c4a4862e8f
Try with KIPLATFORM
2021-12-25 15:26:43 +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
d5a5928e5a
Improve clean up tracks & vias algorithm for neck-downs.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/10098
2021-12-23 16:54:03 +00:00
Roberto Fernandez Bautista
4de4347baa
SHAPE_ARC::Collide( aSeg ) must check segment end points as candidates
...
The edge case is when the segment is completely contained inside the arc
(This partially reverts b4835c8208
and
adds the missing test cases)
2021-12-14 16:14:56 +00:00
Roberto Fernandez Bautista
b4835c8208
Add test case for SHAPE_ARC::Collide( seg ) + remove unneeded candidates
...
Followup to commit 01068e0d41
2021-12-13 18:06:11 +00:00
Seth Hillbrand
1b1bf8a17b
Better handling of escaped characters in STEP parser
...
Fixes https://gitlab.com/kicad/code/kicad/issues/9897
2021-12-08 15:55:42 -08:00
Tomasz Wlostowski
01068e0d41
geometry: fix SHAPE_ARC/SEG collision
...
The arc2segment collision should at also include the arc endpoint projections on the segment being tested. Not sure it covers all possible cases, though.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/9023
2021-12-09 00:37:58 +01:00
jean-pierre charras
0dad504e91
POLY_GRID_PARTITION: detect a divide by 0, set a wxASSERT and avoid the crash.
2021-12-08 16:07:11 +01:00
Roberto Fernandez Bautista
2d1ad52212
SHAPE_LINE_CHAIN: Fix arc indices rotation after merging duplicate points
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9843
2021-12-05 15:12:09 +00:00
Roberto Fernandez Bautista
c463818b57
SHAPE_LINE_CHAIN: Only fix up arc indices if last pt is part of an arc
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9843
2021-12-03 22:04:55 +00:00
Jon Evans
0570c22732
Use point collision test for zero-length segments
...
SEG::SquaredDistance( SEG& ) does not do the right thing
for segments with zero length at the moment.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9791
2021-11-27 09:08:34 -05:00
Jon Evans
b4342d813b
Fix SHAPE_LINE_CHAIN::Slice when end is an arc followed by a point
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9770
2021-11-25 10:05:33 -05:00
Tomasz Wlostowski
5d2f3257da
libs/kimath: user-settable distance threshold for SEG::ApproxParallel()
2021-11-22 01:35:12 +01:00
Roberto Fernandez Bautista
1026c24c65
SHAPE_LINE_CHAIN fix rotation of indices after going through Clipper
...
Clipper might mess up the rotation of the indices such that an arc can be split between
the end point and wrap around to the start point. Detect if this happened and fix it as
required.
Also, handle arcs at the last segment of the chain correctly, meaning we can have arcs
towards the end of the chain that finish at the starting point of the chain.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9670
2021-11-20 16:47:08 +00:00
Roberto Fernandez Bautista
d47bd3a04d
Rewrite broken collision routine SHAPE_ARC::Collide( SEG& aSeg )
2021-11-15 14:04:37 +00:00
Roberto Fernandez Bautista
cb7e57fb43
CIRCLE::IntersectLine fix incorrect algorithm documentation comments
2021-11-15 14:04:37 +00:00
Roberto Fernandez Bautista
0c3da0f072
Implement true arc collisions for arcs inside a SHAPE_LINE_CHAIN
2021-11-15 14:04:37 +00:00
Marek Roszko
f5fc9fa11f
Another auto proxy tweak
2021-11-13 21:23:32 -05:00
Marek Roszko
73f40b11ee
Some more cleanup
2021-11-11 23:58:34 -05:00
Marek Roszko
009bb7f033
Add missing WinHttpOpen to resolve pac proxies
2021-11-11 22:56:45 -05:00
Marek Roszko
b20317ca84
Some minor cleanup of the proxy detect
2021-11-11 22:47:21 -05:00
Marek Roszko
e2926f69a5
Add support to fetch windows proxy config for use with curl
...
Fix https://gitlab.com/kicad/code/kicad/-/issues/9594
2021-11-11 09:30:10 -05:00
Jeff Young
d66487c383
Make sure RTree bounding box is at least as big as hole.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/9526
2021-11-05 14:29:10 +00:00
Johannes Pfister
64f77b3596
PNS: Add support for 90-degree corner modes
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6902
2021-11-03 02:14:23 +00:00
jean-pierre charras
29c3601061
SHAPE_POLY_SET: add FullPointCount(), mainly for statistics and debug.
2021-10-24 15:06:24 +02:00
Jeff Young
9b9e379aa0
Overhaul arc internal model to not over-specify information.
2021-10-15 12:45:43 +01:00
Roberto Fernandez Bautista
9e557d84c6
Ensure appended arcs are valid arcs (start, mid, end cannot be collinear)
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9380
2021-10-13 18:58:21 +01:00
Roberto Fernandez Bautista
4b8ca18bf7
Remove unfinished code for handling arcs in SHAPE_POLY_SET::booleanOp
...
Boolean Ops on polygons with arcs are not supported (the only exception
is Simplify)
Also fix a bug in SHAPE_LINE_CHAIN::splitArc that resulted in an
exception
Partially fixes https://gitlab.com/kicad/code/kicad/-/issues/9380
2021-10-13 18:29:32 +01:00
Seth Hillbrand
c1e6fdfb47
Polygon triangulation: Check for broken remainders
...
If the last three points of a tesselation are concave, we will never be
able to triangulate them. They were likely formed from a bad polygon,
so we will drop the triangle and return completed
Fixes https://gitlab.com/kicad/code/kicad/issues/9380
2021-10-12 12:14:42 -07:00
Seth Hillbrand
52bbfb9109
Remove dependency of dot size on linear mils
...
Changes a dot to be a square pixel (linewidth x linewidth). This allows
the removal of IU dependencies and ensures that a dot is always visible
on screen. Also makes sure that cairo is setting the current linewidth
during its stroke routines
Fixes https://gitlab.com/kicad/code/kicad/issues/9362
2021-10-10 09:40:26 -07:00
Jeff Young
f606679164
Proper numeric sorting for intersheet refs.
...
Also expunges the horrifically named std::remove and std::remove_if
(neither of which remove anything).
2021-10-01 18:29:21 +01:00
Jon Evans
e2368b733c
Allow selection of NPTH pads with zero copper size
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9249
2021-09-26 18:17:50 -04:00
Roberto Fernandez Bautista
4abee7c2eb
Fix SHAPE_LINE_CHAIN::Split when inserting a point on an arc
...
Ensure the arc is split into two at the point specified.
Partly fixes https://gitlab.com/kicad/code/kicad/-/issues/9023
Additional work required to ensure that the shove state is preserved.
2021-09-26 15:15:51 +01:00
Jeff Young
46949abe4a
Don't scroll to highlight an object already visible.
2021-09-25 15:31:52 +01:00
Seth Hillbrand
28bd734313
Prevent invalid paths in fracture
...
We are not always sure of the path validity in fracture. Nominally, the
Clipper Simplify routine should remove invalid parts but in the case
where it doesn't, we need to recover gracefully, even if the output
polygon is not valid.
Fixes https://gitlab.com/kicad/code/kicad/issues/9199
2021-09-21 10:49:39 -07:00
Jeff Young
7a993c0211
Add support mode for dark mode to SCINTILLA_TRICKS.
...
Also removes the return value from the BITMAP_STORE's themeChanged
method as it will provide the wrong answer for the second frame it's
called on.
Also hooked up ACTION_TOOLBAR, the app launcher, and the project tree
to the wx event for system color changes so they change on the fly.
Fixes https://gitlab.com/kicad/code/kicad/issues/6026
2021-09-14 00:18:50 +01:00
Jeff Young
f64abcba36
Restore BBoxCache usage for zone fill performance.
2021-09-09 16:43:47 +01:00
Marek Roszko
3b7f5a3db7
Remove the native cursor for moving on Windows to avoid visual conflicts
...
Fix #8801
2021-09-04 18:27:02 -04:00
Roberto Fernandez Bautista
ed39b33d74
Fix edge case in CIRCLE::Intersect that caused a divide-by-zero crash
...
Also add some additional test cases.
2021-08-25 19:11:19 +01:00
Jon Evans
80355f04a9
Fix SHAPE_LINE_CHAIN::Replace at end of chain
2021-08-13 16:59:45 -04:00
Roberto Fernandez Bautista
d9cf939ba1
SHAPE_LINE_CHAIN::Replace Don't call front() or back() if empty
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8949
2021-08-12 16:32:06 +01:00
Roberto Fernandez Bautista
ab3564f12d
Fix formatting in prior commit
2021-08-11 17:40:23 +01:00
Roberto Fernandez Bautista
22df01183d
Fix edge cases in CIRCLE::Intersect that were causing KiROUND overflow
2021-08-11 17:31:27 +01:00
Roberto Fernandez Bautista
11fc74920c
Fix infinite loop in SHAPE_LINE_CHAIN::Slice
...
Was resulting in infinite loop due to wrong calculation
in NextShape.
2021-08-09 21:10:33 +01:00
Roberto Fernandez Bautista
ae87dc686a
Fix SHAPE_LINE_CHAIN::NearestPoint when aAllowInternalShapePoints=false
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8770
2021-08-08 20:58:20 +01:00
Roberto Fernandez Bautista
1edb96cc5b
Fix SHAPE_LINE_CHAIN::Slice(), splitting arcs when required
2021-08-08 19:09:54 +01:00
Roberto Fernandez Bautista
eaf8eb284a
Add true arc-to-polyline collisions
2021-08-05 17:45:12 +01:00
Roberto Fernandez Bautista
dd65ce9523
Simplify & move new arc collision code into Kimath library
...
Don't need to check intersections with the circle, just fix the
calculated "projected" point from the end points.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8234
2021-08-05 17:45:12 +01:00
Roberto Fernandez Bautista
b6be10f05c
Fix CIRCLE::Intersect( const SEG& aSeg ) and add unit tests
2021-08-05 17:45:12 +01:00
Roberto Fernandez Bautista
318435aedb
Add more test cases: simulate zone fill around arc + diff pair meander
2021-08-05 17:45:11 +01:00
jean-pierre charras
b6664eecf2
arc: fix incorrect arc center calculation for angle < 0 or > 180 deg
2021-08-05 18:15:55 +02:00
Jeff Young
c00f4ed5d2
Add regression tests for track cleaner.
2021-08-03 16:17:18 +01:00
david-beinder
3a833debea
ShapeToPolygon: implement negative inflation
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8859
2021-07-28 10:37:56 +00:00
Wayne Stambaugh
369d813a32
Pass std::string by reference instead of on the stack where applicable.
2021-07-27 13:30:05 -04:00
Wayne Stambaugh
78e5e98ea0
Pass VECTOR2I objects by reference instead of on the stack.
2021-07-27 08:41:27 -04:00
Wayne Stambaugh
8fd83cbb95
Pass wxPoint objects by reference instead of on the stack.
2021-07-26 15:35:33 -04:00
Jeff Young
4760480f40
Quiet compiler warnings.
2021-07-22 13:03:17 +01:00
david-beinder
937e4b1d8c
ShapeToPoly: Fix outline/arc intersection for large expansions
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8820
Adds shortcut code path for 90deg corners
Segments are now actually symetrical
Refactored and commented the code
2021-07-22 11:53:08 +00:00
Wayne Stambaugh
bf80b9c04c
Last of the NULL expunging.
2021-07-20 10:32:22 -04:00
Wayne Stambaugh
4c457b5ed3
More NULL expunging.
2021-07-18 14:31:55 -04:00
jean-pierre charras
25e9d17722
Fix a boost compatibility with old boost versions.
...
(replace boost::optional::has_value() by its definition is_initialized())
2021-07-16 14:01:26 +02:00
david-beinder
8b3ccab0a3
Implement explicit polygon construction for most pad shapes
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8650
2021-07-13 14:51:58 +00:00
jean-pierre charras
54b6f51633
DSN export: export RECT and ARC shapes (on silkscreen layer) from footprints
...
Also export arc track segments as lines. (Freerouter does not support QARCs)
Fixes #8769
https://gitlab.com/kicad/code/kicad/issues/8769
2021-07-11 18:15:40 +02:00
jean-pierre charras
ec64e8ad5b
TransformRingToPolygon(): fix incorrect approximation of the hole.
2021-07-06 13:59:05 +02:00
Roberto Fernandez Bautista
72435c78af
Fix out of bounds crash in SHAPE_LINE_CHAIN::splitArc
...
Check that the index references a point that is part of an arc
2021-07-05 20:29:24 +01:00
jean-pierre charras
515669284a
convert_basic_shapes_to_polygon: some enhancements:
...
- allows setting a minimal seg count for circles and rounded end segments.
- When using ERROR_OUTSIDE, ensure the arc correction is the actual value
needed by the segment count, not the max value allowed
2021-07-05 17:46:02 +02:00
Jon Evans
3103ff9aa3
Fix display of filled polygons with arcs in the outline
2021-07-04 12:10:59 -04:00
Jon Evans
ddc20dadc0
Formatting and spelling tweaks
2021-07-03 15:43:40 -04:00
Roberto Fernandez Bautista
cee5920d5c
Remove dead code (SHAPE_LINE_CHAIN::DetectArcs)
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
778c64de88
Implement ClearArcs() and check curved polys don't get a booleanOp
...
We cannot (yet) support passing several curved outlines through clipper.
In these cases, the caller should ClearArcs() before processing.
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
260a9d0540
Use ZFillFunction to modify arcs post clipper (does not fully work yet)
...
Added a unit test to verify union and intersection of polygons result
in desired results: subject + clip - intersect == union
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
437e2783fb
Use Clipper Z value to detect arcs post clipper
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
a9a8aa8243
SHAPE_LINE_CHAIN splitArc on Insert, Remove and Replace
...
This ensures that the arc shapes remain correct after removing
a point belonging to an arc or inserting a point in the middle
of an arc.
Simplify implementation of Replace( ..., aP ). Now a Remove
operation followed by an Insert operation.
Improve QA test for SHAPE_LINE_CHAIN Append, Insert and Replace
Implement SHAPE_LINE_CHAIN::splitArc to break up an arc into two
Implement SHAPE_ARC::ConstructFromStartEndCenter and add qa test
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
3f73d8c2b5
SHAPE_LINE_CHAIN::Area() should always be positive
...
The algorithm relied on the assumption that the points were
ordered anti-clockwise. When ordered in a clockwise fashion, the
result was correct but negative.
Refer to https://www.mathopenref.com/coordpolygonarea2.html
for more information.
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
c3051ba48a
Refactor SHAPE_LINE_CHAIN to allow two shapes per point
...
m_shapes now has two possible indices. The first one is populated if
the point is associated with an arc and the second index is populated
if the point is shared between two arcs.
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
c1361ae173
SHAPE_POLY_SET: Detect arcs after boolean operations
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
3ee8b4825c
Implement SHAPE_LINE_CHAIN::DetectArcs and add qa test
2021-07-03 19:37:50 +00:00
Roberto Fernandez Bautista
14c3d9055e
Add CIRCLE::Contains( VECTOR2I aP ) and add unit tests
2021-07-03 19:37:50 +00:00
Seth Hillbrand
a28d9f17e8
WIP
2021-07-03 19:37:50 +00:00
Seth Hillbrand
8521deb38d
De-scope ClipperLib namespace
2021-07-03 19:37:50 +00:00
Seth Hillbrand
6c224156f5
Adding conversion from points to arcs
...
Allows detection of arcs from segments in a SHAPE_LINE_CHAIN, converting
them to SHAPE_ARCs in the chain
2021-07-03 19:37:50 +00:00
Seth Hillbrand
5b2be906b8
Removing CLIPPER poly support
2021-07-03 19:37:50 +00:00
Seth Hillbrand
4f4deece6d
ADDED support for reading/writing arcs in polys
...
This adds support for reading and writing arc elements in polygons.
2021-07-03 19:37:50 +00:00
Marek Roszko
eff75b630f
Get rid of anonymous struct typedefs
...
We are using C++14 where there is no reason for this and is banned in C++20 under P1766R1. MSVC generates a warning under C++14 as a reminder.
2021-07-01 18:28:41 -04:00
Wayne Stambaugh
507a88524a
KiCad internal library header file housekeeping.
2021-07-01 13:46:38 -04:00
Wayne Stambaugh
175b474c3e
Coverity issue fixes.
...
Fixes issues #280412 , #314755 , #329615 , #332459 , #332157 , #332167 ,
2021-06-30 18:08:49 -04:00
jean-pierre charras
17737af130
Fix some issues related to SHAPE_ARC:
...
- Some are related to shape errors when the allowed error to approximate circle
by segment is large and arc radius small.
- fix the actual error used in ConvertToPolyline().
- Use SHAPE_ARC::DefaultAccuracyForPCB() instead of a fixed value as extra margin
in zones. It should not change something, because it is also a fixed value
(5 micrometers), but it is not a magic number.
-TransformArcToPolygon() fix some issues and add a new algo, based on the arc actual
outline shape (initial algo is still available in code, just in case).
2021-06-30 13:33:49 +02:00
jean-pierre charras
bcb5618315
Fix incorrect calculation in TransformCircleToPolygon(), only noticeable
...
when the allowed aError is (unusually) large.
2021-06-28 18:51:37 +02:00
jean-pierre charras
fa49b54f93
Fix minor issue in TransformCircleToPolygon() when aError is set to a large value.
...
pcb_painter.cpp: add (but not activate) compil option to show the conversion
of SHAPE_ARC::ConvertToPolyline as segments, for debug purposes.
2021-06-28 15:50:16 +02:00
jean-pierre charras
9a865b1989
Fix a typo and a minor compil warning
2021-06-28 14:37:35 +02:00
jean-pierre charras
310adedf85
Add GetCircleToSegmentError() to geometry/geometry_utils.
...
This function returns the error created by a circle to segment approximation.
2021-06-26 18:57:07 +02:00
jean-pierre charras
3c81403424
Refinements in Arc to Polygon transform: slightly better shapes of arc ends.
...
Note also the transform is still not good: the same parameters are applied
to convert inner arc, outer arc and middle arc of a thick arc to segments.
But these parameters depend on arc radius (or circle radius) value.
2021-06-26 14:20:55 +02:00
jean-pierre charras
31d7a0a8d1
TransformArcToPolygon(): slightly better approximation of arc.
...
The error between the "right" shape and the polygon is slightly smaller.
The approximations of the inner arc and the outer arc are better, but not perfect.
Also add (for test and debug purpose only) the code to show the polygon when
drawing a PCB_ARC (currently disabled)
2021-06-25 18:46:16 +02:00
jean-pierre charras
1d6ad4a52a
SHAPE_ARC::ConvertToPolyline(): fix ugly approximation for some arcs.
...
Arcs with small radius can be approximated with very few segments.
However, if the thickness is large, relative to the radius, the approximation
must be based on the external radius, not the arc radius.
The difference can be significant.
This is especially noticeable for these graphic arcs in filled zones.
2021-06-23 18:30:02 +02:00
jean-pierre charras
0ff1f6f69c
Try to fix a include order (Windows only, to fix aCI/CD error)
2021-06-16 20:04:32 +02:00
jean-pierre charras
aeb479b46f
Fix an issue with pythons scripts running outside Kicad (Windows specific).
...
When running a python script is run from a console, outside Kicad, a wxWidgets
alert was always show (even in release mode)
This is due to calling wxStandardPaths::Get() with no wxApp open( i.e. wxTheApp == O)
The fix uses a dummy wxApp in this case.
2021-06-16 10:18:39 +02:00
Seth Hillbrand
a04d6401c1
Transform arcs more accurately
...
Segment approximation for arcs leaves small "indents" where the rounded
edges of two segments don't quite meet.
This gives closer approximation by calculating the inner and outer joint
points based on the radius, eliminating the indents.
2021-06-11 14:26:38 -07:00
luz paz
f968fc8719
Fix source comment / documentation typos
2021-06-09 19:32:58 +00:00
david-beinder
053bd66650
Fix localization of OS unsupported message, disallow bug reports from W7
2021-06-09 19:01:54 +00:00
Marek Roszko
ffa87e69c6
Remove/replace some stdint.h includes
2021-06-08 21:17:57 -04:00
Marek Roszko
69d7a23e1c
Start cleaning out wx/wx.h in cpp files
2021-06-07 18:20:47 -04:00
Michal Schulz
f923649801
If NSError contains recovery suggestion string, append it to error message as it was until now. However, if recovery string is NIL, do not append it at all.
...
This MR fixes the "error message\n\n(null)".
2021-06-06 14:24:08 +00:00
Jeff Young
53a75a4961
Fix actual-clearance handling in arc collision routines.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/8407
2021-06-03 18:33:59 +01:00
Jeff Young
976e756b02
Formatting.
2021-06-03 18:33:59 +01:00
Seth Hillbrand
059f79dfdb
Re-remove KiROUND from header
...
Moves routines requiring KiROUND (and util.h by extension) to the cpp
file
2021-06-03 08:44:17 -07:00
Marek Roszko
29783f125b
Eliminate one wxRect constructor in BOX2
...
The only usage auto converted to BOX2D anyway...
2021-06-03 01:27:15 -04:00
Seth Hillbrand
cf1c75ecd4
Handle rounding errors in seg length calculation
...
SQRT needs to be passed through KiROUND before returning otherwise,
truncation errrors will accumulate between routing and DRC
Fixes https://gitlab.com/kicad/code/kicad/issues/8541
2021-06-02 16:42:35 -07:00
Marek Roszko
c294d28275
Split POLY_GRID_PARTITION to a cpp file
...
Not entirely a lightweight class
2021-06-02 18:31:30 -04:00
Marek Roszko
13abb9f947
Shift some seg functions to the cpp file
2021-06-02 18:31:30 -04:00
jean-pierre charras
b6de4da686
Fix compatibility with wxWidgets 3.0.x
...
Fixes #8533
https://gitlab.com/kicad/code/kicad/issues/8533
2021-06-02 10:02:20 +02:00
Marek Roszko
0b4a680dbb
Hotglue wxLogDebug into math/util.h without the global include
2021-06-02 00:26:16 -04: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
46d746c9da
Performance optimizations.
2021-06-01 23:11:54 +01:00
Tomasz Wlostowski
2d8264124d
geometry: SHAPE_LINE_CHAIN::PathLength() now can accept the maximum index of the segment to calculate the length to
2021-05-29 00:13:24 +02:00
Tomasz Wlostowski
7553b7b092
geometry: add minimum distance threshold parameter to SHAPE_LINE_CHAIN::Find()/FindSegment()
2021-05-29 00:13:24 +02:00
Tomasz Wlostowski
b3fb7190df
geometry: SEG::Contains() should use Distance(), not SquaredDistance() for correct rounding
2021-05-29 00:13:24 +02:00
Tomasz Wlostowski
e7fe8c4ddb
geometry: rework SHAPE_LINE_CHAIN::Intersect() to explicitly indicate touching vertices and remove references to SEGs from INTERSECTION structure
2021-05-29 00:13:24 +02:00
Jon Evans
f30ebbde33
Fix accuracy of tuning path calculation when measuring arcs
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8401
2021-05-10 21:22:51 -04:00
Ian McInerney
30c92fc5d1
Disable OSX automatic window tabbing
2021-05-09 12:59:57 +01:00
Tomasz Wlostowski
dc70df6036
kiplatform: check for null window handle in IsWindowActive().
2021-04-27 14:13:16 +02:00
Jon Evans
715c61ac9f
PNS: Fix yet more arc edge cases
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8150
2021-04-12 19:59:55 -04:00
Jon Evans
1c431d9929
PNS: Fix some off-by-one errors with arc dragging
2021-04-11 22:12:53 -04:00
Jon Evans
f5ef60c2f2
PNS: Fix shoving segment after arc
2021-04-11 18:06:21 -04:00
Jon Evans
a26fc6d65d
PNS: Fix several issues with arc dragging
...
Do not merge vertices that belong to different arcs
Fix start segment identification after arcs
Fix free-angle drag after arc
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8173
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8150
2021-04-11 17:56:40 -04:00
jean-pierre charras
258fd07939
Fix a compil issue (at least on msys2)
2021-04-11 17:32:40 +02:00
Jon Evans
7ba110bd77
PNS: Fix dragging of segments with arcs in line
2021-04-11 10:18:57 -04:00
Thomas Pointhuber
a30894e5a1
Allow SHAPE_LINE_CHAIN and SHAPE_ARC to be mirrored using a SEG
2021-04-11 13:27:25 +00:00
Jeff Young
e04c820442
Formatting.
2021-04-09 14:02:13 +01:00
Roberto Fernandez Bautista
b7bd7246af
SHAPE_LINE_CHAIN::Split: Add integers before incrementing the iterator
...
Partially Fixes https://gitlab.com/kicad/code/kicad/-/issues/8131
2021-04-07 11:28:02 +00:00
Roberto Fernandez Bautista
235688e459
Less restrictive Arc Track Dragging tool
...
Use the connecting straight tracks even if not exactly parallel - allow
an error margin configurable in ADVANCED_CFG (default 1 degree). Also
be less strict about end point matching and use the width of the track
as the criteria to determine suitability.
Finally, delete any short lengths of track at the end of the operation
and amend the arc end points to keep connectivity.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7967
2021-04-06 12:52:01 +00:00
Marcus A. Romer
1632707d9b
Replace tabs with spaces
2021-04-05 01:13:39 +00:00
Jon Evans
2c05d99d9f
SHAPE_POLY_SET: Fix segment collision testing
...
It appears as though there was an optimization to skip testing segments if
one of their endpoints (and only the A point) was inside. Unclear the reason
for this, but I'm going to assume that it was intended to optimize the case
where both points are inside (like the point case above it).
2021-04-04 20:12:45 -04:00
Jon Evans
5bc1e55272
SHAPE_LINE_CHAIN: Don't crash if inserting point at the end
2021-04-04 19:38:54 -04:00
Jon Evans
bd6539885b
Fix SHAPE_POLY_SET::SquaredDistanceToPolygon ignoring aNearest if unlucky
2021-04-04 19:38:54 -04:00
Jon Evans
3c1a8f8c88
Fix MSW build, take 2
2021-04-02 20:16:25 -04:00
Jon Evans
80eee2decb
Fix MSW build
2021-04-02 20:13:10 -04:00
Ian McInerney
8ea18c0639
Don't steal focus from other windows on GTK
...
Before, it was possible for the canvas to steal the
focus if the cursor was only moved over it and not
clicked. Now, the canvas will only take the focus if
the frame is active.
Fixes https://gitlab.com/kicad/code/kicad/issues/7233
2021-04-03 00:17:28 +01:00
Jeff Young
b6f2941a06
Another try a allowing touching courtyards.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/8076
2021-03-31 22:54:30 +01:00
Ian McInerney
41f88dbabc
Refactor platform-specific init into two phases
...
The first phase is for the environment before the OS
apps are created, and the second phase is for after
the OS app is created but before all of our processing.
Fixes https://gitlab.com/kicad/code/kicad/issues/7992
2021-03-23 19:11:08 +00:00
Jon Evans
cdb352bb24
Allow finding kicad_3dsg when running from build dir
...
This might also come in handy later when we use more dynamic libs
2021-03-21 09:16:47 -04:00
Jon Evans
f1c599fa4d
Tweak PCB selection behavior to reduce unintuitive behavior
...
We were discarding shapes too aggressively for having a
larger area than a shape underneath.
Let's also try showing fewer disambiguation menus, in particular
always preferring items on the active layer when the candidates
include overlapping items of similar area on other layers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7949
2021-03-20 13:11:51 -04:00
Roberto Fernandez Bautista
e4b99b9bb5
Fix SHAPE_ARC::Collide and add Unit Tests
2021-03-20 16:11:43 +00:00
Marek Roszko
917e368db3
Add missing header that broke msvc builds
2021-03-20 10:28:35 -04:00
Jon Evans
61c9645220
Fix Windows build
2021-03-19 18:36:16 -04:00
Ian McInerney
008f0d55c3
Add an interceptor for GTK error messages to hide them
...
wxWidgets seems to cause GTK to spam messages to the terminal,
and we have no control over that. So lets hide the messages
so no one complains about them. If people really want to see
them, they can add the KICAD_SHOW_GTK_MESSAGES build flag to CMake
and they can watch them scroll past.
2021-03-19 22:05:00 +00:00
Ian McInerney
3036683a2c
Move platform-specific init tasks into KIPLATFORM
2021-03-19 21:26:07 +00:00
Seth Hillbrand
48bd564639
Add Dark mode detection to MacOS
2021-03-16 21:58:42 +00:00
Jon Evans
a9f86c6f3d
Enable icon themes for Windows
...
Windows 10 "dark mode" is not supported and likely won't be,
but high-contrast mode and manual color theme editing is still
possible.
2021-03-14 15:39:47 -04:00
Dominik Wernberger
e2aa7be4b3
Added a lot of consts and refactored a few lines
2021-03-08 12:49:48 -08:00
Mikolaj Wielgus
0f22b54cd8
Clip the leader lines properly when using circular text frame
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7810
2021-03-07 21:19:19 +00:00
Tomasz Wlostowski
87ea540953
Fix whitespace errors
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
f7f5e67f56
geometry: SHAPE_LINE_CHAIN::Simplify() now correctly simplifies last 3 colinear vertices
2021-02-25 17:18:23 +01:00
Tomasz Wlostowski
baacb9c85a
geometry: fix MTV calculation for simple polygons
2021-02-25 17:18:23 +01:00
Seth Hillbrand
507ca9bc73
Add DPI scaling to KIPLATFORM
...
GTK needs to check current scaling but wx doesn't provide this
functionality in 3.0, so we can bypass by going straight to the source.
2021-02-22 17:38:27 -08:00
Jeff Young
e89f9db438
Footprint disallow layer checking needs to be based on courtyards.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7620
2021-02-20 14:13:36 +00:00
Jon Evans
079203c345
Change Linux documents path to XDG_DATA_HOME
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7543
2021-02-17 20:25:50 -05:00
Roberto Fernandez Bautista
2d66abdc89
CADSTAR PCB Archive Importer: More improvements to loading of zones
...
Adds a new function Area() to SHAPE_POLY_SET
2021-02-10 18:49:21 +00:00
Jon Evans
1ba7bebce6
Handle lack of a Documents directory
2021-02-09 20:15:30 -05:00
Marek Roszko
872184fe8b
Revert "Bump minimum required CMake version to 3.10"
...
This reverts commit a475f45753
.
2021-02-09 18:46:13 -05:00
Jon Evans
9728ceab0d
Fall back to explicit documents path if XDG special dirs are missing
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7452
2021-02-08 20:21:39 -05:00
Simon Richter
a475f45753
Bump minimum required CMake version to 3.10
...
This allows us to remove even more workarounds
2021-02-08 12:23:08 +00:00
Jeff Young
90b3d0c96d
Implement TransformShapeWithClearanceToPolygon for DIMENSIONs.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6890
2021-02-03 23:34:17 +00:00
Marek Roszko
06a515339c
Correct pointless and bad buffer sizing in RegisterApplicationRestart
2021-02-01 15:36:07 -05:00
Seth Hillbrand
73886aecb1
Ensure partially triangulated polys are not valid
...
Moves rule area triangulation outside of layer iterator and keeps the
triangulation_valid flag false until the triangulation has been
completed.
Fixes https://gitlab.com/kicad/code/kicad/issues/7032
2021-01-29 16:33:57 -08:00
Marek Roszko
a47e8af0d0
Fix up naming of the kiplatform helpers
2021-01-27 19:12:20 -05:00
Marek Roszko
299830350c
Fix macos build error
2021-01-27 19:12:19 -05:00
Marek Roszko
34bcf1883d
Blindly implement the macos fetch of cache dir
2021-01-27 19:12:19 -05:00
Marek Roszko
daf9c4f319
Centralize the 3d cache path
2021-01-27 19:12:19 -05:00
Marek Roszko
8622565480
Add GetUserConfigDir
2021-01-27 19:12:18 -05:00
Marek Roszko
2bbc25a630
Use g_get_user_special_dir for documents dir on gtk
2021-01-27 19:12:18 -05:00
Marek Roszko
28c6967dbc
Start trying to shuffle around path management
2021-01-27 19:12:18 -05:00
Wayne Stambaugh
6ab1144ea3
Fix broken Doxygen comment specifiers.
...
Please note, ///> is not a valid Doxygen comment specifier. ///< is the
correct specifier to use for single line or short Doxygen comments.
2021-01-25 07:42:36 -05:00
Roberto Fernandez Bautista
99d203feae
Clarify CIRCLE::ConstructFromTanTanPt
...
Remove unused bool aAlternateSolution and add doxygen comments
2021-01-24 16:41:11 +00:00
Roberto Fernandez Bautista
48823c0723
Formatting fixes and fix qa_kimath following rebase
2021-01-24 16:41:10 +00:00
Roberto Fernandez Bautista
19620cebe7
qa tests: fix test_circle
2021-01-24 16:41:10 +00:00
Roberto Fernandez Bautista
6ed5ed52b8
qa tests for CIRCLE geometry library
2021-01-24 16:41:10 +00:00
Roberto Fernandez Bautista
b6a50d2f74
qa tests for SEG perpendicularity and parallelism
2021-01-24 16:41:10 +00:00
Roberto Fernandez Bautista
6e7ae93cc8
EDIT_TOOL::DragArcTrack Fix incorrect undo history when items are deleted
...
Need to make sure we only apply one COMMIT operation per object before calling COMMIT::Push() or COMMIT::Revert()
2021-01-24 16:41:10 +00:00
Roberto Fernandez Bautista
2b5c1bae97
CHANGED: Dragging a curved track starts an interactive resizing of it, keeping start an end points tangent
2021-01-24 16:41:10 +00:00
Seth Hillbrand
b8dfcb34c4
Revert "Use less-sophisticated arc editing math."
...
This reverts commit 3b424d3868
. And fixes
issue with rouding causing arc errors
2021-01-18 12:44:27 -08:00
Mikolaj Wielgus
00a9910149
Fix misplaced parenthesis in VECTOR2<T>::Resize()
...
Fixes https://gitlab.com/kicad/code/kicad/issues/7045
2021-01-16 09:41:14 +00:00
Dominik Wernberger
dc02ec9758
Remove a few const_cast
2021-01-12 20:51:31 +00:00
Dominik Wernberger
ac94d72d2d
Add more const specifiers
2021-01-12 20:51:31 +00:00
Tomasz Wlostowski
7994c59169
libs/kimath: POLY_GRID_PARTITION must use truncating (round-to-zero) rescale function for correct grid generation.
2021-01-10 00:04:57 +01:00
Seth Hillbrand
b2cfd7f479
Fix rounding issues
...
Rescaling and rotating has been leaving 1nm errors due to integer
truncation in VECTOR2I. This rounds integers using KiROUND before
returning
2021-01-09 13:05:58 -08:00
Jon Evans
31dd04fa96
Fix ToVector to return world coordinates
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7002
2021-01-08 13:52:39 -05:00
Jon Evans
c3eb8dccda
Fix typo in DIRECTION_45 ctor
2021-01-07 19:13:05 -05:00
Seth Hillbrand
a342bb9ab3
Standardize rounding in 64-bit rescale
...
32-bit rescale still uses truncation until we can determine how this
affects poly_grid_partition
2021-01-07 11:21:05 -08:00
Seth Hillbrand
77acf85310
Revert "Standardize rescale"
...
poly_grid_partition appears to depend on integer calculation for large
scaling
This reverts commit eef16fe717
.
2021-01-07 10:36:06 -08:00
hoijui
6ca9a42251
Removes 3 other instances of a potential encoding problem
...
Signed-off-by: hoijui <hoijui.quaero@gmail.com>
2021-01-07 17:36:49 +00:00
hoijui
e34b829242
Prevent an encoding error when generating python API DoxyGen
...
Signed-off-by: hoijui <hoijui.quaero@gmail.com>
2021-01-07 17:36:49 +00:00
Jon Evans
0234b7278a
PNS: Make DIRECTION_45 North be up everywhere
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6935
2021-01-06 21:47:06 -05:00
Seth Hillbrand
eef16fe717
Standardize rescale
...
Rescale was returning differing results based on 32-bit vs 64-bit
implementations. Speed difference here appears to be positive.
2021-01-06 17:52:14 -08:00
Jeff Young
2a088e5c7b
Add conversion of circles to zones and enable in footprint editor.
...
Also rule areas, of course.
Fixes https://gitlab.com/kicad/code/kicad/issues/6966
2021-01-06 17:21:49 +00:00
Jon Evans
7431d5c985
PNS: First pass at updating meander placers for arcs
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6464
2021-01-05 17:57:21 -05:00
Jon Evans
8619086cf2
PNS: re-enable optimization of colinear segs in lines with arcs
2021-01-05 17:57:21 -05:00
Jon Evans
8901e71fc8
PNS: Fix loop removal, make walkaround less broken for arcs
2021-01-05 17:57:21 -05:00
Jon Evans
aebb571dc9
Short-circuit arc generation if we are on a diagonal
2021-01-05 17:57:21 -05:00
Seth Hillbrand
5a97764319
Make segment contain its edge
...
This allows segment snapping along its diagonals to the grid.
Fixes https://gitlab.com/kicad/code/kicad/issues/6924
2021-01-03 12:47:33 -08:00
Jon Evans
eaffacbc85
PNS: construct initial lines with arcs more precisely
2021-01-02 23:57:09 -05:00
Jon Evans
af4c6393bb
Fix arc collisions to account for width
...
This was causing arcs to be really hard to start routing from
2021-01-02 22:01:05 -05:00
Jon Evans
73248ab219
PNS: correct initial segment direction for posture solver
2020-12-31 13:05:43 -05:00
Jon Evans
111c644a82
Don't append zero-length arcs
2020-12-31 13:05:43 -05:00
Jon Evans
fbdf31d35a
Prevent creating arcs with slightly offset endpoints
2020-12-31 13:05:43 -05:00
Jon Evans
23c9eddf2d
Cleanup
2020-12-30 18:29:41 -05:00
Jon Evans
79502a0d88
PNS: A new approach to arc placement
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6334
2020-12-30 18:23:24 -05:00
Jeff Young
af2219ba7f
Finish implementation of hole clearance checking.
...
It appears we never did via hole testing, and pad hole testing didn't
appear to get much testing.
2020-12-25 22:32:19 +00:00
Jon Evans
ea351fde69
Recache polygon triangulation when mirroring
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6265
2020-12-20 10:45:24 -05:00
Marek Roszko
33dbc8ccd1
Add IsNetworkPath to kiplatform
2020-12-15 19:28:58 -05:00
Marek Roszko
d67cf2f9af
Replace wxFile usage with wxFFile
...
Buffered libc wxFFile is better thinking about syscall wxFile going wrong.
2020-12-12 13:16:23 -05:00
Jeff Young
bc484784fc
Make sure zones are triangulated for DRC.
...
Normally this happens as a side-effect of rendering them but if done
from a script (or test case) this won't happen.
Fixes https://gitlab.com/kicad/code/kicad/issues/6635
2020-12-12 15:27:46 +00:00
Jeff Young
f08b7f098f
Cleanup.
2020-12-12 15:27:46 +00:00
Jeff Young
807eef1208
Better error reporting to try and catch 6635.
2020-12-12 12:22:52 +00:00
Jeff Young
2c2630ef9e
Formatting.
2020-12-12 03:43:41 +00:00
Ian McInerney
be4b6ec06a
Cleanup compiler warnings
2020-12-09 23:13:33 +00:00
Jeff Young
37178e3751
Formatting.
2020-11-29 14:02:46 +00:00
jean-pierre charras
68625494f3
specctra_export: fix an issue with custom and chamfered/round rect pads.
...
Is some cases a created pad stack name had the same name as an other pad stack
having a slightly different shape, thus creating pads with a incorrect shape on board.
Fixes #6495
https://gitlab.com/kicad/code/kicad/issues/6495
2020-11-25 13:57:46 +01:00
Jeff Young
9c7c05c161
Mostly formatting cleanup but a few type-casting cleanups too.
2020-11-24 22:16:41 +00:00
Marek Roszko
45598f2933
Add handling of DXF arbitrary axis/extrusions
...
This fixes some DXFs imports where unforunately CAD tools like SolidWorks
randomly decide to mirror circle definitions across the "z" axis (resulting in x or y axis flips in 2d)
Most likely live projection from 3D to 2D drawings introduces this.
However this is DXF specification to describe it so obtusely with vectors for a 2d drawing.
2020-11-23 21:24:38 -05:00
Werni
0e44f5128c
Add const specifiers
2020-11-18 19:50:36 +00:00
Jeff Young
a3a409b438
Fix crash bug when deleting files with spaces in names.
2020-11-14 14:15:02 +00:00
jean-pierre charras
7265f84358
fix PAD::TransformShapeWithClearanceToPolygon() incorrect calculation in some cases.
...
For round rect pads, when the arc error was OUTSIDE, the shape was too big and creates
bad shape for chamfered round rect pads.
For chamfered pads, when the clearance value was not 0, the chamfer was not at the
right place.
2020-11-14 08:50:58 +01:00
Jeff Young
63773809d0
Formatting.
2020-11-10 18:08:25 +00:00
Jeff Young
791a50b493
Remove work-around in favour of real fix in Clipper.
2020-11-04 11:21:45 +00:00
Jeff Young
55c25f3cc4
Work around a round-off bug in Clipper.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6260
2020-11-02 17:43:13 +00:00
Jeff Young
6bf29deb7f
Improve formatting.
2020-10-31 17:25:08 +00:00
Werni
a7d5d1f091
Add more consts all over the place
2020-10-27 11:03:35 +00:00
Jeff Young
d1c73cb1d5
Clean up MODULE effective shape memory handling.
2020-10-25 23:38:21 +00:00
Jeff Young
31cc100669
Don't make clients deal with nested SHAPE_COMPOUNDs.
2020-10-25 18:17:58 +00:00
jean-pierre charras
d6f91c810f
Fix a few compil and Coverity warnings.
2020-10-25 10:02:07 +01:00
Jeff Young
59f3fefd17
When polygonizing arcs don't use synthesized center and angle.
...
Start, mid and end are the "real" properties and come with less
error.
Also collapses two arc polygonization routines into one.
Also fixes DRC checks to be cognizant of arc approximation error.
Fixes https://gitlab.com/kicad/code/kicad/issues/6039
2020-10-23 23:55:45 +01:00
Jeff Young
1cb7fbaab1
Fix errors in arc polygonization and test case.
...
1) Tests can't expect accuracies around 1 to work. PCBNew defaults
to 5000.
2) Tests shouldn't artifically expand tolerance just to match the
results.
3) Tests should guarantee that end point is on arc, not just close
to it.
4) Standard polygonization of a circle is inside so splitting the
error needs to increase radius, not decrease.
5) Special-case first and last points so that they're exact.
2020-10-23 23:55:45 +01:00
Seth Hillbrand
19bf594aa0
Remove unused point in polygon test
...
There can be only one.
2020-10-23 12:13:09 -07:00
Jeff Young
58c006bc45
Register properties for ARC elements so we can get their netclass.
...
Also improves GAL arc drawing and polygonization.
Fixes https://gitlab.com/kicad/code/kicad/issues/6039
2020-10-23 14:27:36 +01:00
Tomasz Wlostowski
5b4f463c38
kimath: SHAPE_POLY_SET::Format() outputs C++-like code now, like other shapes
2020-10-23 01:18:01 +02:00
Tomasz Wlostowski
a8074ed37d
kimath: POLY_GRID_PARTITION now uses safer degeneracy (overlapping edges/'slits') handling mechanism. Also added some explanation of the algorithm used.
2020-10-23 01:17:54 +02:00
Wayne Stambaugh
8185a416b9
Fix broken build on Linux with gcc.
2020-10-22 08:36:28 -04:00
Jeff Young
9ff49277e1
Add implicit rule generation for keepout areas.
...
Also implements collision detection for SHAPE_POLY_SET.
Fixes https://gitlab.com/kicad/code/kicad/issues/6105
2020-10-22 10:41:21 +01:00
Jeff Young
bfd04926b5
Performance improvement for polyset fracture.
2020-10-20 22:26:47 +01:00
Roberto Fernandez Bautista
006c462d8f
ADDED: Fillet Tracks tool in pcbnew
...
Select two or more track segments and run the "Fillet Tracks" tool.
2020-10-20 21:23:05 +00:00