Commit Graph

1626 Commits

Author SHA1 Message Date
Jeff Young 64a6fc0fd4 Push UNITS_PROVIDER down into a low-level mixin.
This allows us to also construct cheap UNIT_PROVIDERs for specific
tasks when necessary.
2022-09-19 17:10:59 +01:00
Mike Williams 9304607624 TOOL_EVENT: make command string non-optional
We're getting segfaults in places where this isn't checked. Also, add
some asserts so we can catch bad tool push/pop.

Removes all uses of GetCommandStr() and makes it private.
2022-09-19 10:23:09 -04:00
Jeff Young 45d6b4a9fc Readability improvements. 2022-09-19 11:18:20 +01:00
Marek Roszko f26a6f76e4 IUToMils should return int
It was already truncating even in old code...lets just clean this up
2022-09-17 09:27:27 -04:00
Marek Roszko ece23d434b Split up Double2Str to a format function to make its use case clear 2022-09-17 00:10:22 -04:00
Marek Roszko 3d5913c825 Remove convert_to_biu.h, merge contents to base_units.h 2022-09-16 21:09:28 -04:00
Marek Roszko 66e8931405 Remove IU_PER_MM thats standalone 2022-09-16 21:09:27 -04:00
Marek Roszko 7a5829f8d6 Move IU2Mils 2022-09-16 21:09:27 -04:00
Marek Roszko e6ed275c25 Repoint IU_PER_MILS 2022-09-16 21:09:26 -04:00
Marek Roszko a8613ee80f Combine Iu2Millimeter & remove PcbMm2iu 2022-09-16 21:09:26 -04:00
Marek Roszko ade5178c8c Remove two common source files from gerbview
These are strangely already part of common but redeclared here
2022-09-16 21:09:01 -04:00
Seth Hillbrand 524b129c64 ADDED: Support for explicit DNP field
Dims elements shown as DNP.  Adds property `dnp` to explicitly denote
parts that should not be populated. These parts are not included in X/Y
files
2022-09-16 22:26:16 +00:00
Mark Roszko b00178adb3 Nuke base_units from orbit 2022-09-16 04:38:10 +00:00
lulu731 0180bcf90a ADDED: Implement Drag and Drop
dropping files to Kicad manager :
  *.kicad_pro, *.pro -> open project;
  gerber and job files -> open in Gerbview editor;
  Eagle and Cadstar files -> open project.
dropping file to schematic editor -> append schematic;
dropping library file to Symbol editor -> add library;
dropping board file to PCB editor -> append board;
dropping library or footprint file to Footprint editor -> add library or import footprint;
dropping ZIP file or gerber files to Gerbview editor -> open files;
dropping sheet file to Drawing Sheet editor -> open sheet.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/11638
2022-09-14 22:28:09 +00:00
jean-pierre charras babffb230d Revert "Gerber viewer: move layer colors with layers"
This reverts commit 75ed6b3ce7.
It was a not really tested feature: It has a serious side effect: the color
settings are modified each time a .gbrjob is loaded (or loaded layers are sorted)
2022-09-13 18:33:31 +02:00
jean-pierre charras a0d859c324 Gerbview: fix some issues related to color settings.
Now colors can be set both from the Layer manager and the
color settings panel, without loss of settings.
2022-09-11 14:40:04 +02:00
jean-pierre charras 6eb7c176a7 Gerbview: fix some issues (not all) related to color settings.
Some are old issues, probably related to Kicad code change.
2022-09-10 20:16:20 +02:00
Jeff Young b95d9d660d Move gerbview colors to preferences dialog. 2022-09-10 16:11:24 +01:00
jean-pierre charras 9626f0b66c Gerbview: fix a minor but annoying issue about the drawing sheet color.
The color was not always the selected color but sometimes the default color.
2022-09-08 20:34:32 +02:00
jean-pierre charras 0b233d593a Gerbview: fix missing pad shapes when exporting to Pcbnew. 2022-09-08 18:43:07 +02:00
Jeff Young c30a557810 ADDED netclass assignment from PCB canvas.
Fixes https://gitlab.com/kicad/code/kicad/issues/5975
2022-09-03 19:29:59 +01:00
Jeff Young 9188838e50 RIP EDA_RECT. 2022-08-31 23:57:24 +01:00
Jeff Young ebe9617e77 More EDA_RECT expungification, and an attempt to fix the python test. 2022-08-31 17:19:48 +01:00
Jeff Young f17a865593 Move EDA_ITEM hitTest to BOX2I. 2022-08-31 17:18:45 +01:00
Jeff Young 2dc6300501 Move EDA_ITEM bounding boxes to BOX2I. 2022-08-31 10:16:55 +01:00
Jeff Young 5679b9dbdc Remove a few EDA_RECT instances. 2022-08-31 01:22:49 +01:00
Seth Hillbrand b736460e71 Move optional access from value() to *operator
`value()` throws.  Where we check for existence, we don't need to use
the throwing version and should just use the unprotected variant
2022-08-30 13:59:39 -07:00
jean-pierre charras 7768c8f119 Gerbview: fix a typo that breaks gerber items collector. 2022-08-30 20:56:55 +02:00
Marek Roszko f0956e48f2 Make EDA_TEXT common
Since EDA_TEXT is a base class, we can just force the child classes to pass the correct iu scaled size

ALLOW_BOLD_THICKNESS removed because it's a pre-custom font holdover
2022-08-29 07:31:03 -04:00
Marek Roszko 9acc5ac7ea base_screen became free of base_unitry awhile ago 2022-08-27 14:02:51 -04:00
Marek Roszko bf964d8678 Commonize page_info by simply making the Iu scale a parameter on call. 2022-08-27 13:36:00 -04:00
Marek Roszko d807ab3089 Fix unused var warnings 2022-08-26 20:12:00 -04:00
Seth Hillbrand f1261e71d4 Replace boost::optional with std::optional 2022-08-25 15:50:47 -07:00
Marek Roszko fc99b3ba95 Don't link gdiplus everywhere anymore
Tested on msys2 which is the only place it would have been buggy
CMake seems to share the gdiplus linkage with the other dependencies automatically now
2022-08-23 23:51:35 -04:00
Maciej Suminski b7a734ad61 Stop passing the focus to the layer widget on layer change
Most often it is not needed, but with the Object Inspector in place,
it keeps deactivating the properties panel.
2022-08-22 21:32:32 -04:00
Jeff Young 4f0136db3b Attempt to fix std::initializer_list lifetime issue. 2022-08-21 20:54:41 +01:00
Jeff Young aa2ad3b44c Move KICAD_T[] to std::initializer_list<KICAD_T>. 2022-08-20 10:28:11 +01:00
Seth Hillbrand 35ac39844f Clean up some auto usage
Don't make new copies of shared_ptr if we can use references.  Keep auto
usage down to hard-to-type-out sequences
2022-08-15 11:29:45 -07:00
Marek Roszko a8505d9c76 SEARCH_RESULT -> INSPECT_RESULT
To fix the name squatting it's doing for future functionality
2022-07-29 20:01:10 -04:00
Mike Williams aea89a632b Gerber Viewer: fix high contrast mode, respect high cycle shortcut 2022-07-26 18:42:55 +00:00
Mike Williams 9911f3a943 Gerber Viewer: X2 mode paste layer above mask and silk 2022-07-26 18:42:55 +00:00
Mike Williams 23e2e57e09 Gerber Viewer: put drills/outlines/keep outs on top by default
For file extension sorting, this priorities drills/outlines/KOs.

For X2 sorting, this changes the default priority to make
unknown-priority layers on top since if they contain anything that can
be plotted, it's probably drill data.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/10598
2022-07-26 18:42:55 +00:00
Mike Williams 75ed6b3ce7 Gerber viewer: move layer colors with layers
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/10600
2022-07-26 18:42:55 +00:00
Mike Williams 1460442a80 Gerber viewer: don't go to next layer if on last layer 2022-07-26 18:42:55 +00:00
Mike Williams 4a6ac8ca2f Gerbview: remove used/unused row indicator
No longer relevant as we only show in use layers
2022-07-26 18:42:55 +00:00
Mike Williams 23a4b1001f Gerbview: change shortcuts for next/prev layer, add for move layer
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/11909
2022-07-26 18:42:55 +00:00
jean-pierre charras 4d48376eae Fix some warnings detected by PVS-STUDIO (not used vars) 2022-07-26 16:00:14 +02:00
Jeff Young f41af10007 Clean up hole shapes for safety (smart pointer) and consistency. 2022-07-22 23:06:07 +01:00
Jeff Young 57acce9e55 Share more code between selection tools. 2022-07-11 19:04:08 -06:00
Seth Hillbrand 03c279ffd4 ADDED: Threadpool
Thread pools are long-lasting executors that have close to zero overhead
when launching new jobs.  This is advantageous over creating new threads
as we can use this for threading smalling jobs and smaller quanta.  It
also avoids the heuristics needed to determine the optimal number of
threads to spawn
2022-06-24 22:59:24 +00:00
jean-pierre charras 3fcd959757 Gerbview: minor cosmetic enhancement: show if the file is X1 or X2 format. 2022-06-24 15:44:13 +02:00
Ian McInerney b51d8c9825 Introduce new CMake variable to store kiface install location 2022-06-22 23:40:25 +01: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
jean-pierre charras 7eeefdb3c5 Gerbview export to kicad_pcb file: remove calls to Simplify and Fracture.
They are not needed to export polygons because they are already fractured,
and these calls are very time consuming.
2022-05-05 19:26:31 +02:00
Marek Roszko f88e0481c8 Change the behavior of ACTION_MENU::Add to require clones if required outside the function
This reverts commit 2a5769607f.
2022-04-11 19:03:01 -04:00
Seth Hillbrand 2a5769607f Revert "Change the behavior of ACTION_MENU::Add to require clones if required outside the function"
This reverts commit 403992a6f4.
2022-04-11 11:39:03 -07:00
jean-pierre charras ac8e2d0768 Ensure "Open Recent" and "Clear files" menu titles are updated after language change. 2022-04-11 11:09:05 +02:00
Marek Roszko 403992a6f4 Change the behavior of ACTION_MENU::Add to require clones if required outside the function
Fix https://gitlab.com/kicad/code/kicad/-/issues/10994
2022-04-10 22:38:13 -04:00
Marek Roszko 5bb2cdf73d Revert "Stop leaking submenu items"
This reverts commit 34c70a51ea.
2022-04-10 22:33:43 -04:00
Marek Roszko 34c70a51ea Stop leaking submenu items
Our menu bar code is interestingly complex. But we were throwing away newly made menu items to the void in the cases of constructed on the fly submenus
2022-04-10 22:04:48 -04:00
Jeff Young 92a229eec7 ADDED separate user-defined color for page limits.
Fixes https://gitlab.com/kicad/code/kicad/issues/5271
2022-03-24 14:11:41 +00:00
jean-pierre charras 93066004f1 QA: fix altium qa tests now the altium to pcbnew coordiantes are rounded
to the near 10nm value.
2022-03-24 12:36:46 +01:00
jean-pierre charras e2cda7837f Gerbview: Fix incorrect rendering of aperture macros combining polygons.
A aperture macro can have polygons with holes, and/or many polygons.
When combining polygons holes can be created. So ensure the resulting polygon
is fractured before drawing it.
Fixes #11218
https://gitlab.com/kicad/code/kicad/issues/11218
2022-03-23 20:50:29 +01: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
jean-pierre charras 3a5530d441 Gerbview: fix typo that prevent lo load a .gbrjob file from command line
Fixes #10921
https://gitlab.com/kicad/code/kicad/issues/10921
2022-02-21 11:32:36 +01:00
jean-pierre charras 233f86e8cf Gerbview: fix missing handling of ID_GRID_SETTINGS event.
Fixes #10885
https://gitlab.com/kicad/code/kicad/issues/10885
2022-02-18 08:31:32 +01:00
jean-pierre charras f8d6dd1efd Gerbview: fix a long standing issue: negative objects are now correctly printed. 2022-02-12 11:44:34 +01:00
Seth Hillbrand 79f5325697 Fix float scaling to use single fn
Function `scaletoIU` was updated in a8c275ae5d but this missed other
conversion points that re-implemented the same routine.  This unifies
the scaling for both ReadIJCoord and ReadXYCoord to use the same routine
as calls from am_primitive

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

(cherry picked from commit d937abb5b8)
2022-02-10 12:36:34 -08:00
jean-pierre charras c125cb673e gerbview: fix incorrect render of regions defined by a 360 deg arcd (a circle)
these regions were missing.
Fixes #10805
https://gitlab.com/kicad/code/kicad/issues/10805
2022-02-10 09:56:27 +01:00
Seth Hillbrand c79916b359 Fix relative return with nullptr condition
Previous fix for CVE munged return conditions for gerber files in some
cases.  This restores the proper order where a nullptr will return 0,0
in the relative case and the current coordinate in others

Also fixes incorrect scale factor for inches/mils conversion to mm
2022-02-10 09:53:55 +01:00
Marek Roszko 41f54349a5 Replace inserts/push_backs with emplace in some spots 2022-02-05 19:53:31 -05:00
Jeff Young 4e3109a633 Wide string decls for gerbview. 2022-02-05 22:34:45 +00:00
Seth Hillbrand 7ed569058c Review ReadXY/ReadIJ to avoid static char arrays
Tighten up the code a bit, removing extra calls and loops.  Removes
unchecked use of stack char array

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

(cherry picked from commit 927afe313d)
2022-02-02 17:18:25 -08:00
Seth Hillbrand 54b20cb049 Fix overflow vulnerability in Gerbview
Corrects an unguarded read that could lead to arbitrary code execution
in specifically crafted gerber files.

Fixes https://gitlab.com/kicad/code/kicad/issues/10700
2022-02-01 15:50:27 -08:00
Seth Hillbrand 098e8f7d9b Revert "cmake: adding KICAD_MACOSX_APP_BUNDLE option"
This reverts commit ea9f960cc1.

Reverted for updates as this currently breaks kicad-mac-builder
2022-01-31 15:57:56 -08:00
Jeff Young 60bcfd1bf1 Bug fixes in arc & textbox printing.
Also removal of the no-longer-used clipping code from GR*.
2022-01-31 20:00:47 +00:00
Davide Gerhard ea9f960cc1 cmake: adding KICAD_MACOSX_APP_BUNDLE option
ADDED: with cmake KICAD_MACOSX_APP_BUNDLE option the user can disable
the macOS app bundle creation when compiling on macOS. This permit to
use/install KiCad like any other *nix platform (/usr/bin, /usr/share,
ecc.). By default, cmake build the app bundle.
2022-01-28 15:49:37 -08:00
jean-pierre charras f651e31965 Fix minor compil and Coverity warnings. 2022-01-25 12:52:13 +01:00
Mike Williams 20788897ee Gerbview: display Start and End position of drawable items
Originally written by Tarun Johar.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/8426
2022-01-24 08:40:49 -05:00
Mike Williams 6ddd5ec37f Gerbview: Add menu item to open files with autodetection
Needs an icon at some point
2022-01-24 08:40:49 -05:00
Mike Williams 8692014691 Gerbview: consolidate some dialog code
Preparing also for a third usage where we autodetect the file type
2022-01-24 08:40:49 -05:00
Mike Williams db407a1c0b Gerbview: clean up loading files to prepare for more autodetection 2022-01-24 08:40:49 -05:00
Mike Williams eee20f9f67 Gerbview: reduce redundant file loading code 2022-01-24 08:40:49 -05:00
Mike Williams 4140ab118e Gerbview: remove extra linebreaks from errors messages 2022-01-24 08:40:49 -05:00
Mike Williams 7043498875 Gerbview: handle unexpected invalid char
Attempting to print this as a char was causing wxWidgets to assert since
some input is neither ASCII or valid UTF-8.

Reproducable by trying to open zip files as gerber files from the
command line.
2022-01-24 08:40:49 -05:00
Mike Williams c83f1ea1cd Gerbview: support more filetypes from the command line, e.g. zip
Also parse other extensions, and use new heuristics to guess if we don't
know the extension.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/5680
2022-01-24 08:40:49 -05:00
Mike Williams 2612b94519 Gerbview: always search for the first available layer 2022-01-24 08:40:49 -05:00
Mike Williams 9a0d4f5ba4 Gerbview: don't erase current layer before loading files
Since we now load into the next available layer, don't erase our current
layer.
2022-01-24 08:40:49 -05:00
Mike Williams 45f1287a6c Gerbview: Allow layer move up, move down, and delete 2022-01-24 08:40:49 -05:00
Mike Williams 5767a08008 Gerbview: select first layer of opened archive 2022-01-24 08:40:49 -05:00
Mike Williams 2dd6b98b89 Gerbview: Load files into new layers 2022-01-24 08:40:49 -05:00
Mike Williams 3c1a6e95d8 Gerbview: Don't show unused layers 2022-01-24 08:40:49 -05:00
Mike Williams 3338745637 Gerbview: auto sort zip files based on X2 or extensions 2022-01-24 08:40:49 -05:00
Mike Williams da2e7e158b Gerbview: Attempt to parse unknown files as gerber/drill
Test parsing function transmogrified from gerbv 2.7.0. gEDA suite is GPL
2+ so should be license compatible with our GPL3.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/1848
2022-01-24 08:40:49 -05:00
Mike Williams 21a8dd6302 Gerbview: Better file extension association when opening zips
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/7855
2022-01-24 08:40:49 -05:00
Mike Williams a9379ecf39 Gerbview: Add ability to sort layers by file extension 2022-01-24 08:40:49 -05:00
Mike Williams d827f06a74 Gerbview: fix borked cleanup of layer remapping
Happened in 4ba3937f8a
2022-01-24 08:40:49 -05:00
Jeff Young 4eac8d7c66 Remove unit-less angles from geometry lib APIs. 2022-01-20 21:10:04 +00:00
Jeff Young 4a05b36bc6 Prefer EDA_ANGLE to naked radians. 2022-01-20 21:10:04 +00:00
Jeff Young 0091c76a6f Excise deci-degrees from UNIT_BINDER.
Fixes https://gitlab.com/kicad/code/kicad/issues/10495
2022-01-19 00:10:32 +00:00