Commit Graph

126 Commits

Author SHA1 Message Date
Tomasz Wlostowski 680163f8a8 Cherry-pick commits from Master and about SVG import:
*Fixes in the SVG import polygon postprocessing:
- don't drop subsequent polys when a non-filled primitive is imported 'in between'
- fix missing holes (also related to the interleaving of stroke and filled shapes, depending on the software that wrote the SVG file)

*GRAPHICS_IMPORTER_BUFFER: forgot to store the indices of the paths belonging to a compound shape

*pcbnew: GRAPHICS_IMPORTER can now recognize multi-path shapes (and postprocess polygons with holes into Kicad-compatible fractured polysets)

*SHAPE_POLY_SET: polysets can now be built from a bunch of arbitraily ordered oriented outlines.
Used by the SVG hole support

*SVG_IMPORT_PLUGIN: enable postprocessing of polygons with degeneracy and holes

*pcbnew: SVG importer support for even-odd fill rule
2022-02-21 10:50:05 +01:00
Jeff Young 471c0c4c1d More wide-string declarations. 2022-02-05 13:29:00 +00:00
Seth Hillbrand 1160bd94b0 Scale vertex lineweights in DXF import
DXF lineweights are always in 100th of mm, so scale the set weights on
import

Fixes https://gitlab.com/kicad/code/kicad/issues/9854
2021-12-07 16:23:44 -08:00
Seth Hillbrand c613f5e2f1 Convert DXF arcs in fp space
Once the arcs are set in pcbnew, they have integer representation and
can accumulate rounding errors.  So we convert the start/end points in
the importer to ensure that the connected points in a DXF remain
connected

Fixes https://gitlab.com/kicad/code/kicad/issues/9827
2021-12-07 10:53:35 -08:00
Seth Hillbrand c4a6a61743 Don't truncate values on import
Leads to off-by-one errors when converting to internal values

Fixes https://gitlab.com/kicad/code/kicad/issues/9827
2021-11-30 16:10:56 -08:00
Tomasz Wlostowski bba742b804 pcbnew: support vertex line start/end width to correctly import certain DXF files 2021-10-25 17:39:09 +02:00
Tomasz Wlostowski df47c1c4e9 pcbnew: use doubles to pass line widths in the DXF importer as they are expressed in DXF's units and can case severe rounding errors when passed as ints 2021-10-25 17:36:04 +02:00
Roberto Fernandez Bautista 987d64c88e pcbnew graphics import: Fix arc winding direction 2021-10-23 11:02:00 +01:00
Jeff Young 9b9e379aa0 Overhaul arc internal model to not over-specify information. 2021-10-15 12:45:43 +01:00
Jeff Young a41944020d Push most of PCB_SHAPE impl down in to EDA_SHAPE. 2021-10-15 12:45:43 +01:00
Jeff Young b84d1456d5 KIFACE_I -> KIFACE_BASE. 2021-09-14 23:45:14 +01:00
Jeff Young 3aae3c6f65 Dark mode for a bunch of HTML dialogs.
WX_HTML_REPORT_BOX
WX_HTML_REPORT_PANEL
HTML_MESSAGEBOX
DIALOG_DISPLAY_HTML_TEXT

Fixes https://gitlab.com/kicad/code/kicad/issues/9157

Fixes https://gitlab.com/kicad/code/kicad/issues/9156
2021-09-14 21:23:57 +01:00
Marek Roszko daca9d21f2 Add dxf point import
Fix #9149
2021-09-12 19:38:52 -04:00
Jeff Young f221220fe2 Rename layer ids file.
It hasn't had anything to do with colors or visibility for some time
now.
2021-07-29 16:03:25 +01:00
Wayne Stambaugh 37b200cb3e Pass wxString objects by reference instead of on the stack. 2021-07-27 08:41:27 -04:00
Jeff Young 0fb864d596 Pull some name changes back from 7.0 to ease merging. 2021-07-21 20:58:59 +01:00
Wayne Stambaugh cf00319c85 More NULL expunging. 2021-07-20 07:27:18 -04:00
Jeff Young e61822c9e0 Naming conventions and a bug fix on arc points. 2021-07-19 13:17:12 +01:00
Marek Roszko b924c85f80 Start recording the precision of dxf imports 2021-06-27 00:38:19 -04:00
luz paz f968fc8719 Fix source comment / documentation typos 2021-06-09 19:32:58 +00:00
Marek Roszko 4712d7a918 Remove a leaky wx/msgdlg.h include 2021-06-06 08:45:38 -04:00
Wayne Stambaugh f57ef55cd6 Pcbnew header housekeeping round 3. 2021-06-04 13:50:08 -04:00
Marek Roszko c4801a4dd4 Catch oom for graphics importer
Because DXFs and SVGs could be nasty sized
2021-05-01 14:26:47 -04:00
jean-pierre charras 0427bda768 Remove useless wx/wx.h include, that create sometimes compil warnings on msys.
wx/wx.h includes all wxWidgets .h files, and sometimes creates collision
names in #define between kicad and windows headers
Moreover, blindly including a lot of useless files is compil time consuming
2021-05-01 19:32:15 +02:00
Marek Roszko 21fde9b629 enum class PCB_SHAPE_TYPE_T 2021-04-30 22:36:12 -04:00
Marek Roszko 39a0bc6252 Remove erroneous block check in dxf import added during previous improvements 2021-04-28 18:48:59 -04:00
jean-pierre charras 9a0f9575b6 Fix minor Coverity warnings 2021-03-25 09:12:24 +01:00
Marek Roszko e409b04538 More gracefully handle tinyspline not liking a spline definition
Partial fix for #6634
2021-03-24 00:37:01 -04:00
Jeff Young 07aea4339d Formatting. 2021-03-20 21:53:29 +00: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
Seth Hillbrand 9212197c26 Grammar 2021-02-15 15:18:13 -08:00
Marek Roszko 8f21034254 Fix invalid windows macro
Missing one underscore at the end
2021-01-31 16:15:50 -05:00
Wayne Stambaugh 6a39b81647 Fix the last of broken Doxygen comment specifiers. 2021-01-27 17:39:44 -05:00
Marek Roszko 828ecb76aa Remove polyline 3d check added by previous fixes
Fix #7030
2021-01-09 18:56:35 -05:00
Michael Kavanagh 154e19b6e7 Icons: use common prefix for small 16x16 2021-01-02 23:16:33 +00:00
Marek Roszko 9322b3a4e1 Use the C++ isnan function 2020-11-29 11:30:45 -05:00
Marek Roszko 5e117bfaa5 Don't allow nan values for dxf text alignment points to creep in
Literally the only place dxflib decides to default to NaN....
2020-11-28 20:13:42 -05:00
Marek Roszko cc7264c0b9 Subtract off the block's base point coordinate from the insert translation 2020-11-28 20:13:42 -05:00
Marek Roszko cac0d93dfd Implement DXF INSERT scale
This has a chance of being wrong due to how the dimensions are stored in these intermediate objects
2020-11-28 20:13:42 -05:00
Marek Roszko 5607420339 Fix polylines being skipped in DXF blocks 2020-11-25 00:06:02 -05:00
Marek Roszko 272ec53e03 Make DXF import slightly prettier by copying text style width factor
It's impossible to replicate the original cad font style but replicating width factors at least
gives you something closer.
2020-11-24 07:15:49 -05: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
Marek Roszko 44f4d41bba Fix member variable name 2020-11-23 21:24:38 -05:00
Jeff Young 62e5500420 Cleanup dialog layout & punctuation. 2020-11-23 19:47:55 +00:00
Marek Roszko 32ec8fa928 Implement correct placement of DXF block contained entities
DXF blocks are virtual groups of items.
The insert entity is what actually places all the block contents at a given coordinate.
This should fix importing drawings from professional CAD tools like SolidWorks that will have a good bit of blocks.
2020-11-23 10:10:35 -05:00
Marek Roszko bf59b422bc Record blocks being received during the import 2020-11-23 10:07:30 -05:00
Marek Roszko 51fcbe47a6 Remove colons from the import gfx dialog fields 2020-11-22 22:15:58 -05:00
Marek Roszko 90db12df2e Rename the dxf units option to Default Units
The reality is the DXF file can still override the selected unit option which is totally fine.
In fact, per specification, there is a way to change units mid-file with block records :/
2020-11-22 22:15:58 -05:00
Marek Roszko f5e9a2a6da Use "microns" as the name to be consistent with DXF specification 2020-11-22 15:44:57 -05:00
Marek Roszko 88bee5e32f Use the last used dxf units selection on dialog open 2020-11-22 15:44:36 -05:00