Seth Hillbrand
dbfa9093ab
Adding seg-polyset collision support
2018-04-23 16:43:13 -07:00
Seth Hillbrand
b618da1fac
Fixing bounding box calc for arcs
2018-04-23 16:43:13 -07:00
Jeff Young
d54a252eaa
Check zone fills for being out-of-date during DRC.
2018-04-09 11:05:14 +01:00
Maciej Suminski
168112cf84
SEG: added Center() method
2018-03-29 12:11:35 +02:00
Jeff Young
fbf10e941b
Switch zone fillets to absolute-error algorithm.
...
And some general cleanup to related constants, etc.
2018-03-23 12:46:17 +00:00
jean-pierre charras
51fe063524
Circle to polygon conversion: a few enhancements:
...
* Remove duplicate code
* fix incorrect formulas is some places
* add comments
2018-03-09 13:28:47 +01:00
Maciej Suminski
7775f59eec
Converted zone drawing tools to store points in a SHAPE_LINE_CHAIN
...
Simplifies the code a bit, removes redundant conversions to/from
std::vector.
2018-02-22 15:18:52 +01:00
Jon Evans
01ab8b0584
Use polygonal hit testing for module selection
2018-02-20 10:43:43 -05:00
Maciej Suminski
6c1a05a7d5
Coverity fixes
...
Uninitialized variables: CID #163188 and #174187
Unused variable: CID #168698
2018-02-20 09:14:51 +01:00
jean-pierre charras
cf5d93857f
PnS router: add support for circles in board outline
2018-02-18 21:00:28 +01:00
Tomasz Włostowski
b05f95e7af
RTREE: avoid uninitialized variables
2018-02-17 18:25:20 +01:00
Tomasz Włostowski
5fef750b49
SHAPE_ARC: use more Kicad-ish arc representation. Fixes board outline collisions issues in the P&S
2018-02-17 18:25:20 +01:00
Maciej Suminski
570f4dd991
Coverity fixes
...
CIDs:
174166
174170
174171
2018-02-15 10:27:01 +01:00
jean-pierre charras
4012aa70da
Fix a few minor Coverity warnings
2018-02-15 10:16:17 +01:00
Tomasz Włostowski
271363f822
router: support for board outline
2018-02-06 09:43:56 +01:00
Tomasz Włostowski
2faf1a1ed3
Initial support for keepout zones in the P&S router.
2018-02-06 09:43:56 +01:00
Camille
9ff66a5274
Fix unnecessary value parameter detected by clang-tidy. - Replace value parameter by const reference parameter or move-assignement in some cases
2018-01-09 18:55:51 -05:00
jean-pierre charras
992820f722
shape_line_chain ans shape_poly_det: add Rotate() geometric transform, useful for DRAWSEGMENT transforms
2017-12-22 10:54:47 +01:00
Tomasz Włostowski
eed924fe45
Fixed zone filling crash & thermal stubs inconsistency
...
Fixes: lp:1737557
* https://bugs.launchpad.net/kicad/+bug/1737557
Fixes: lp:1737542
* https://bugs.launchpad.net/kicad/+bug/1737542
Fixes: lp:1737541
* https://bugs.launchpad.net/kicad/+bug/1737541
2017-12-14 01:29:08 +01:00
Andreas Buhr
b33bf2eafe
fix double free and memory leak in SHAPE_POLY_SET
...
There were two problems in the triangulation caching
of SHAPE_POLY_SET:
First there was a double free:
While SHAPE_POLY_SET implements the copy constructor,
it did not implement the operator=, which resulted
in the default operator= being generated by the
compiler. The default operator= copied the member
m_triangulatedPolys, which is a std::vector of pointers.
So after operator= execution, there are two SHAPE_POLY_SET
having pointers to the same TRIANGULATED_POLYGONs, each
of them deleting them in their destructors. This led
to segfaults, because calling
TransformShapeWithClearanceToPolygon on a Zone
uses operator= to copy the contained SHAPE_POLY_SET.
The new SHAPE_POLY_SET then went out of scope and
deleted the cached triangulation within the Zone.
This first problem is fixed by implementing operator=
for SHAPE_POLY_SET.
Second, there was a memory leak: Calling
"CacheTriangulation" on a SHAPE_POLY_SET,
then changing the polygon and then calling
"CacheTriangulation" again led to
leaking the
triangulations generated in the first call.
This second problem is fixed by holding
the cached triangulations in a unique_ptr.
2017-12-08 14:55:46 +01:00
Tomasz Włostowski
8df299a6bc
pcbnew: Optimized zone filling algorithm: code cleanup
2017-12-05 14:54:57 +01:00
Tomasz Włostowski
dbdf085555
SHAPE_FILE_IO: default constructor outputs to stdout
2017-12-05 14:54:57 +01:00
Tomasz Włostowski
316ddadec1
pcbnew: Optimized zone filling algorithm.
2017-12-05 14:54:57 +01:00
jean-pierre charras
9723b0d844
Fix a few minor coverity warnings (not initialized members)
2017-11-11 07:25:00 +01:00
Marvin Schmidt
69974b73db
Remove some extra semicolons
2017-11-09 19:52:18 +01:00
Tomasz Włostowski
9932ff32ae
refactoring: wrapped boost::optional in OPT<> class for the purpose of easier transition to C++17 in the future
2017-11-03 23:59:02 +01:00
jean-pierre charras
78ec983632
DRAWSEGMENT fix crash when trying to copy a empty polygon.
...
SHAPE_POLY_SET: fix crash in VertexCount when it is a empty poly set, or when params are incorrect.
minor other fixes:
warning in degug mode in dialog_dxf_import_base.cpp
pcb_painter.cpp: remove a useless debug line.
2017-10-25 09:39:26 +02:00
Tomasz Włostowski
d2c9a5d81a
geometry: Area() method in SHAPE_LINE_CHAIN
2017-10-19 23:14:36 +02:00
jean-pierre charras
b8c621a991
fix a few Coverity warnings.
2017-08-06 14:23:03 +02:00
Tomasz Włostowski
655d851d48
Fixed point-in-polygon test bugs. Connectivity now correctly recognizes zone outlines that have non-zero width
2017-06-23 11:12:37 +02:00
Tomasz Włostowski
3b16d3cffe
further DLIST/Iterators cleanup, some code formatting
2017-06-23 11:12:37 +02:00
Tomasz Włostowski
9ad886344b
New connectivity algorithm.
2017-06-23 11:12:36 +02:00
jean-pierre charras
1466d0cee6
Fix a few doxygen warnings
2017-06-18 09:18:41 +02:00
Alejandro García Montoro
1a75d9979f
Modify comments in shape_line_chain.h that described the old reference-wise behaviour of SEG class
2017-04-17 11:17:13 +02:00
jean-pierre charras
88105f891f
Fixes Pcbnew bug: Drag Zone Outlines no longer working in legacy view
2017-04-16 18:32:47 +02:00
Miles McCoo
b321efffaf
Minor Pcbnew Python scripting fix to expose SHAPE_POLY_SET interface
...
The recent refactoring work to move zones from CPolyLine to
SHAPE_POLY_SET resulted in a reduction in pcbnew's python
capabilities. This change exposed SHAPE_POLY_SET to restore
that functionality (albeit with slightly different method names)
2017-04-14 10:23:42 -04:00
jean-pierre charras
cbb5708c36
seg.h: revert to version just before commit f68ce306bd
, and update a few outdated comments.
2017-04-14 14:56:56 +02:00
Alejandro García Montoro
f68ce306bd
CPolyLine -> SHAPE_POLY_SET refactor.
...
Removes the need of using the legacy code in polygon/PolyLine.{h,cpp},
refactoring all CPolyLine instances with SHAPE_POLY_SET instances.
The remaining legacy methods have been ported to SHAPE_POLY_SET;
mainly: Chamfer, Fillet, {,Un}Hatch.
The iteration over the polygon vertices have been simplified using the
family of ITERATOR classes.
2017-03-24 10:43:47 +01:00
John Beard
1fd503bf58
Move DIRECTION45 to common/geometry
...
This class is useful for generic geometric layout of 45-deg constrained
line chains, not only in the PNS router.
2017-03-22 15:23:09 +01:00
Tomasz Włostowski
ba9576b014
router: snap to clearance boundaries in Highlight Collisions mode
...
Fixes: lp:1655819
* https://bugs.launchpad.net/kicad/+bug/1655819
2017-01-19 17:47:15 +01:00
Simon Richter
ad088db6d2
Add more "override" markers.
2016-09-25 13:59:41 -04:00
Simon Richter
59c81976dc
Explicitly mark overriding functions.
2016-09-24 14:53:15 -04:00
Chris Pavlina
4b6d28333e
Revert "Memoize SHAPE_LINE_CHAIN bounding box computation"
...
This reverts commit 30566de69a
, which
caused some issues in PNS.
2016-09-01 12:09:06 -04:00
Chris Pavlina
30566de69a
Memoize SHAPE_LINE_CHAIN bounding box computation
...
For a specific project+system combination, this gives a 38% speedup on
the pcbnew side of netlist sync.
2016-08-11 09:34:58 -04:00
jean-pierre charras
63decd70e6
Minor fixes: Fix a few shadowed local variables, and deprecated warnings is a few dialogs generated by wxFormbuilder (using a very recent wxFormbuilder version, after apr 25, 2016)
2016-05-06 17:15:30 +02:00
jean-pierre charras
4a838fb8c3
Pcbnew: Add rounded rect pad shape.
2016-04-06 20:15:49 +02:00
Tomasz Wlostowski
0fa71d8d8f
more accurate pushout force calculation for circle-segment collisions
2016-03-01 14:26:08 +01:00
jean-pierre charras
178cf0dc25
Polygon calculation (zones filling): use fast mode when possible (in fact most of time) and strictly simple polygon option only in critical cases (in fact in plot Gerber functions mainly).
...
In polygon calculations (combining polygons, fracture) the mode of calculation (fast or strictly simple polygon option) as no more a default value, because choosing the best mode is better to optimize the calculation time.
2015-12-15 21:21:25 +01:00
Mario Luzeiro
61f4f1ca9d
Add hole count function and other minor improvements to SHAPE_POLY_SET.
2015-08-24 09:55:22 -04:00
Tomasz Wlostowski
a96299d456
router: improvements to shove algorithm
2015-08-19 18:07:16 +02:00