Jeff Young
9c48707c88
For Coverity.
2022-02-17 14:30:47 +00:00
Jeff Young
ff21a16f7d
Formatting.
2022-02-17 14:30:47 +00:00
Wayne Stambaugh
54f91a0221
Wide characterize libs and bitmap2component source.
2022-02-09 09:01:53 -05:00
Seth Hillbrand
8fc831cbc2
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
2022-02-06 17:18:04 -08:00
Seth Hillbrand
857683d372
Remove unneeded distance calc
2022-01-18 15:58:20 -08:00
Marek Roszko
1e05732f55
Add std::hash specialization for VECTOR2I
...
(cherry picked from commit 589a03afcd
)
Fixes https://gitlab.com/kicad/code/kicad/issues/10275
2022-01-05 20:32:46 -08:00
Jeff Young
1b033d56a7
Improve clean up tracks & vias algorithm for neck-downs.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/10098
(cherry picked from commit d5a5928e5a
)
2021-12-23 17:01:39 +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
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
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
f64abcba36
Restore BBoxCache usage for zone fill performance.
2021-09-09 16:43:47 +01: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
78e5e98ea0
Pass VECTOR2I objects by reference instead of on the stack.
2021-07-27 08:41:27 -04:00