Commit Graph

302 Commits

Author SHA1 Message Date
Ian McInerney 961c127ebe Convert mouse coordinates to native pixesl in the 3D viewer
All operations in the camera are done using the native pixel sizes,
so we need to ensure the mouse coordinates are converted to native
pixels to make the mouse operations line up with the view.

Fixes https://gitlab.com/kicad/code/kicad/issues/2561
Fixes https://gitlab.com/kicad/code/kicad/issues/8410
2021-10-10 17:52:12 +01:00
Seth Hillbrand 548e5f49bd Clean up unused variable usage
Unused variables in function calls can be commented out.  Unused
return variables get a new routine `ignore_unused()` that silences the
warnings with zero overhead.
2021-10-05 10:00:30 -07:00
jean-pierre charras d98e93de7e 3D viewer: fix color issues when using the colors stackup:
- Add missing Yellow (.gbrjob predefined color) in list
- silkscreen colors: add .gbrjob predefined colors in list
- Use a default body color (FR4) for dielectric material not in known list
2021-08-25 18:33:49 +02:00
Jeff Young e6ca9837a2 Clear numbers from non-numberable pads and don't run DRC on them.
This was also the last straw on the misnamed PAD::GetName() and
PAD::SetName(), which are now PAD::GetNumber() and PAD::SetNumber().

Fixes https://gitlab.com/kicad/code/kicad/issues/9017
2021-08-24 01:03:06 +01:00
Jeff Young 89d943a90c Transfer custom colours from board stackup to 3D viewer. 2021-08-16 20:05:35 +01:00
jean-pierre charras e1bbb717f6 3D viewer: ensure 3D shapes are loaded when switching 3D shapes visibility option to ON.
Fixes #8959
https://gitlab.com/kicad/code/kicad/issues/8959
2021-08-16 16:28:59 +02:00
Jeff Young bff247b08a Hook up 3D viewer colors to board stackup.
Fixes https://gitlab.com/kicad/code/kicad/issues/5173
2021-08-14 14:00:17 +01:00
Jeff Young 77680eba30 Naming conventions. 2021-08-05 14:31:36 +01:00
Jeff Young 6aaf4413b3 Fix kicad_string.h / string.cpp mismatch.
They don't define a KiCad string class, so the header file name was
somewhat misleading. But the fact that they didn't match definitely
made coding more difficult.
2021-07-29 16:03:25 +01: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 78e5e98ea0 Pass VECTOR2I objects by reference instead of on the stack. 2021-07-27 08:41:27 -04:00
Wayne Stambaugh 89b1fdabe9 Pass COLOR4D object by reference instead of on the stack. 2021-07-26 13:28:56 -04:00
Seth Hillbrand 3e815882c1 Threading additional 3d transform
Transforming solid areas to polygons can be time-intensive for some
boards.  This threads the transformation to all simultaneous builds in
different layers
2021-07-22 12:12:27 -07:00
jean-pierre charras e00f609bdd 3D viewer: add a bit more activity messages during 3D scene building. 2021-07-22 16:13:38 +02:00
Jeff Young 0fb864d596 Pull some name changes back from 7.0 to ease merging. 2021-07-21 20:58:59 +01:00
jean-pierre charras 1c1f7ac07e 3D viewer: fix a Coverity warning and add more messages when loading a board. 2021-07-19 08:27:01 +02:00
jean-pierre charras a43ca978df 3D viewer: do not build the board 3D data during 3D frame creation, but after.
Building the 3D data is time consuming, so creating the data after the 3D
frame is shown is better, and the build activity is visible, especially on Linux.
2021-07-18 17:55:40 +02:00
Jeff Young ea6769b702 The REPORTER interface is inherently line-based.
Also fixes a bunch of error messages that were similar but not
identical (which just increases translation burden).

Fixes https://gitlab.com/kicad/code/kicad/issues/8723
2021-07-05 13:41:06 +01:00
Jeff Young 16047b7419 3D preferences bug fixes.
1) Make sure prefs get saved when closing parent frame.
2) Add camera projection mode to settings.

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

Fixes https://gitlab.com/kicad/code/kicad/issues/8626
2021-06-17 12:22:18 +01:00
Jeff Young 096e342386 Prefix TRACK, ARC and VIA. 2021-06-11 22:07:02 +01:00
Jeff Young 16b0147af8 Prefix DIMENSION types. 2021-06-11 17:59:44 +01:00
Marek Roszko 10e60acf34 Clean up including of board_design_settings.h 2021-06-06 15:03:42 -04:00
Marek Roszko 4df3cb912d Remove another leaky wx/log.h header 2021-06-03 08:11:15 -04:00
jean-pierre charras d1061b9683 3D viewer: Fix broken handling of text thickness, thus creating erroneous item positions
Especially, texts having a not centered justification were shown with artifacts.
2021-05-15 13:18:06 +02:00
Jeff Young ac58a3f9f0 Add preference for 3d-model-highlight-on-rollover.
Fixes https://gitlab.com/kicad/code/kicad/issues/8349
2021-05-11 20:53:53 +01:00
Marek Roszko 03cf2b517f Enum class PAD_ATTR_T
Renamed such that python stays the same
2021-05-01 10:51:54 -04:00
Marek Roszko b243c2280d enum class PAD_SHAPE_T 2021-05-01 08:22:35 -04:00
Marek Roszko 21fde9b629 enum class PCB_SHAPE_TYPE_T 2021-04-30 22:36:12 -04:00
david-beinder e0f69ad28b 3D viewer: Fix gap between plating and annulus copper
Hide transition by ending layer copper withing the annulus of the cylinder. Also always use hole wall thickness and set more realistic solder mask thickness
2021-04-19 13:19:32 +00:00
Ian McInerney 0a0935e0f3 Remove ACTIONS::TranslateLegacyId and TOOL_DISPATCHER::DispatchWxCommand
After commit 9535153f9e there were no more IDs inside the legacy ID
system. Therefore the entire system for dispatching and looking up
the legacy ideas and handling those events can now be removed and
the tool dispatcher simplified (it no longer needs to know about
the ACTIONS class).
2021-03-30 23:20:22 +00:00
jean-pierre charras 23667fc4c4 3D viewer: make solder paste layer thickness bigger than the mask layer.
Some specific footprints need shapes on paste layer covering the mask layer,
so ensure these shapes are visible.
Fixes #8041
https://gitlab.com/kicad/code/kicad/issues/8041
2021-03-26 18:02:30 +01:00
Jon Evans c04e19f9ac Include optimization: move some things from common.h to point-of-use 2021-03-20 12:09:18 -04:00
jean-pierre charras c08f74168c 3D viewer: BOARD_ADAPTER::createPadWithClearance() add missing handling of SH_ARC shape. 2021-03-20 14:15:47 +01:00
Marek Roszko 907e282347 Silence some msvc warnings
- exception variables that were unused
- RAYSEG2D improperly foward declared with class instead of struct
- unused vars
2021-02-20 11:58:55 -05:00
Marek Roszko f2552d7bc1 Tweak the reported last render message slightly 2021-02-15 17:47:43 -05:00
Marek Roszko f88be65825 Remove mention of FPS
We are not a real time rendering engine
2021-02-15 17:00:00 -05:00
Marek Roszko 36d8ca7954 Fix statusbar conflict in 3d viewer
Fix #7544
2021-02-15 17:00:00 -05:00
Seth Hillbrand 624a231cc0 Remove unused line width option
You had to set the line width in the SVG export dialog in order to
change the displayed line width in the 3d viewer.  The line width did
not affect the SVG export.  Removing in favor of the Board design
settings for line widths
2021-02-06 06:44:53 -08:00
Jeff Young e72262a007 Don't render un-enabled layers.
Fixes https://gitlab.com/kicad/code/kicad/issues/7313
2021-01-30 16:31:27 +00:00
Roberto Fernandez Bautista 49f454e32b Line width already factored into polygon shapes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7130
2021-01-16 08:39:20 +00:00
Jeff Young ee6ec2c35c Line width already factored in to rectangle polygon.
Fixes https://gitlab.com/kicad/code/kicad/issues/7113
2021-01-14 16:54:20 +00:00
Wayne Stambaugh 926cc3a00d 3D Viewer: more code cleaning and naming improvements. 2021-01-07 14:33:43 -05:00
Wayne Stambaugh 1c7a5c46e5 3D Viewer: member variable and method naming improvements.
A few build improvements thrown in for a good measure.
2021-01-05 17:24:29 -05:00
Wayne Stambaugh 710e621c6a 3D Viewer: remove all instances of "c" prefix from file names. 2021-01-03 17:44:49 -05:00
Wayne Stambaugh 8416c1fc37 3D Viewer: remove all instances of "C" prefix from object names. 2021-01-02 17:45:36 -05:00
Jeff Young 5ea88c897a Go back to AuiMgr strategy for 3D-viewer infobar.
There some issue with using the 3D canvas as a parent in the new
strategy.
2020-12-27 01:01:25 +00:00
Jeff Young 0b6c524dda Missing file from last commit. 2020-12-24 21:35:31 +00:00
Jeff Young ef25c78a04 Separate polygonization error from chaining error.
This way we can report anything that doesn't exactly chain while still
applying  a fudge factor for our own stuff.

Fixes https://gitlab.com/kicad/code/kicad/issues/1795
2020-12-24 21:02:14 +00:00
Wayne Stambaugh f8efe4a65a 3D viewer code cleaning round 5. 2020-12-16 17:11:05 -05:00
Jeff Young b1f0bf7334 More consistent naming. 2020-12-08 13:05:39 +00:00
Jeff Young 3ca06700fc Formatting. 2020-11-29 20:00:16 +00:00
Jeff Young 889408c96a More improvements to new selection disambiguation.
Also a rationalization of text polygon generators, with the "standard"
version inherited from BOARD_ITEM now giving the bounding box.  This
requires callers who want the (much) more expensive stroke-based one
to call it explicitly (and brings PCB_TEXT in line with the was FP_TEXT
already was.

Fixes https://gitlab.com/kicad/code/kicad/issues/6525
2020-11-29 14:02:46 +00:00
Jeff Young 9c7c05c161 Mostly formatting cleanup but a few type-casting cleanups too. 2020-11-24 22:16:41 +00:00
Jeff Young 2f3f4c209e Make sure DRC reports a missing board outline.
Fixes https://gitlab.com/kicad/code/kicad/issues/6481
2020-11-24 14:22:27 +00:00
Jeff Young 1391774f64 Re-factor boundary/courtyard checker error handling.
ADDED Footprint Checker dialog to display the results in.

Fixes https://gitlab.com/kicad/code/kicad/issues/6446
2020-11-21 20:57:35 +00:00
Jeff Young b123318cf6 Encourage use of full DRC for board & footprint malformed outlines.
It shows much more detail.  Removes some nag dialogs and places
hypertext links in others.

Also fixes the auto-layer-showing to correctly show Edge.Cuts or
F.CrtYd or B.CrtYd for errors relating to them.

Fixes https://gitlab.com/kicad/code/kicad/issues/6446
2020-11-20 17:24:52 +00:00
Marek Roszko 16e3e59495 Split out arrayDim and MIRROR templates from macros.h
These were not macros
2020-11-17 20:21:04 -05:00
Jeff Young ec020dd19f First-class support for filled shapes. 2020-11-14 01:40:32 +00:00
Jeff Young bdbb68f813 MODULE -> FOOTPRINT. 2020-11-13 16:04:03 +00:00
Jeff Young 3451ac3088 PCB_MODULE_T -> PCB_FOOTPRINT_T 2020-11-13 15:16:24 +00:00
Jeff Young 63a54d003e More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young 9106cc19bf Yet another tranche of module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young 8c947b69b0 More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young fc9cf1d827 More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young 52a46341db More module -> footprint. 2020-11-13 15:16:24 +00:00
Jeff Young f5443de7f9 D_PAD -> PAD. 2020-11-13 15:16:24 +00:00
Jeff Young 84dd5108ba Remove some "class_" prefixes from files. 2020-11-13 15:16:23 +00:00
Jeff Young f7333ad64a Update some classnames including archaic zone names. 2020-11-12 10:31:25 +00:00
Ian McInerney 11e6cac42b Introduce EGL backend support for the OpenGL canvas
wxWidgets 3.1.5+ on Linux will compile with the Wayland EGL
canvas as the backend instead of the X11 backend. This requires a
version of GLEW compiled with the proper EGL defines and a different
header/code for certain parts that are X11 GLEW specific.

This introduces an in-tree version of GLEW that will be built with the
GLEW_EGL flag then statically linked into the KiCad executables when
EGL support is needed.
2020-11-11 00:41:02 +00:00
Mario Luzeiro e105451f44 3D-Viewer: when possible, uses only the board edges to calculate boundings
Add Report messages to Raytracing

Fixes https://gitlab.com/kicad/code/kicad/issues/6316
2020-11-10 17:32:24 +00:00
Mario Luzeiro 753383d6ec 3D-Viewer: disable layer subtraction operations on non realistic mode 2020-11-10 14:40:42 +00:00
Roberto Fernandez Bautista ae26c92a16 Remove modal message box when catching exceptions in EDA_3D_CANVAS::DoRePaint
Rely on the wxInfobar instead
2020-11-07 15:39:57 +00:00
Roberto Fernandez Bautista 1bbc569151 Fix DoRePaint routine in EDA_3D_CANVAS
- Check that we aren't already painting (return if we are)
 - Check that GLEW functions exist before calling them in 3D canvas and throw exception if they are no longer available
 - Catch above exceptions in paint routine and show an infobar message to the user
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6246
2020-11-07 15:39:57 +00:00
Mario Luzeiro 89fea36ddd 3D-Viewer: OpenGL, remove outline polygons where it intersects a hole at edge of board 2020-11-06 20:21:40 +00:00
Mario Luzeiro b06db80151 3D-Viewer: raytracing, implement an outline board cut
it cut board items that are outside and on the edge of the board.
Allows castellations render.
2020-11-06 20:21:40 +00:00
Marek Roszko 304e5faf36 Move wxStringSplit to kicad_string 2020-10-24 00:17:07 -04:00
Jeff Young cce557b9ad Redo the board-edge-building logic to return better error reports.
Fixes https://gitlab.com/kicad/code/kicad/issues/6119
2020-10-22 21:29:04 +01:00
Seth Hillbrand f8a4edb1c9 First pass renaming module to footprint
This is mostly in comments and the few remainin text strings that
reference module
2020-10-20 20:49:11 -07:00
Seth Hillbrand 4085757aeb Remove beginning/ending spaces in translations
Adding space padding makes translations more difficult by increasing
string counts
2020-10-20 12:08:04 -07:00
Jeff Young 1703729269 Require explicit decl of maxError and errorLocations.
This should reduce both performance issues and clearance issues.
2020-10-13 13:49:07 +01:00
Mario Luzeiro d31c5c41e6 3D-Viewer: add an infobar to the panel preview 2020-10-06 10:42:46 +00:00
Mario Luzeiro 1cbe8fcc1f 3D-Viewer: check for minimum required version of OpenGL
Fixes https://gitlab.com/kicad/code/kicad/issues/5286
2020-10-06 10:42:46 +00:00
Jeff Young 37906511f5 Class renaming.
DRAWSEGMENT  -> PCB_SHAPE
EDGE_MODULE  -> FP_SHAPE
TEXTE_PCB    -> PCB_TEXT
TEXTE_MODULE -> FP_TEXT
2020-10-05 11:55:33 +01:00
Jeff Young 7a4900b8dc PCB_LINE_T -> PCB_SHAPE_T and PCB_MODULE_EDGE_T -> PCB_FP_SHAPE_T
Also updated footprint text and zone types for consistencey.
2020-10-04 16:49:04 +01:00
Jeff Young 3c01147f10 Fix 3D hole knock-out of silkscreen.
It still doesn't knock-out the board edges, but this is a good first
step.

Fixes https://gitlab.com/kicad/code/kicad/issues/4837
2020-10-01 11:49:28 +01:00
Ian McInerney a5ed5e5675 Handle single line segments on footprint edgecuts
Also, only display an infobar message for footprints when
there is no footprint loaded (instead of if the outline
isn't closed).

Fixes https://gitlab.com/kicad/code/kicad/issues/4866
2020-09-30 23:34:04 +01:00
Seth Hillbrand bf3cb0b1d0 Standardize pad type enums 2020-09-30 08:38:35 -07:00
Jeff Young d3f8f2b81e Remove confusion between pad->IsOnLayer and pad->IsPadOnLayer 2020-09-30 11:50:51 +01:00
Mario Luzeiro ab57c93c98 3D-Viewer: add selection color as an option 2020-09-28 02:26:25 +00:00
Mario Luzeiro ec3c20bf84 3D-Viewer: do not use selection while on preview 2020-09-28 02:26:25 +00:00
Mario Luzeiro 10676eb926 3D-Viewer: only show intersection information while using opengl 2020-09-28 02:26:25 +00:00
Mario Luzeiro 6bc19dbfe9 3D-Viewer: intercect modules and cooper items
show module and net information.
highlight shapes when selected.
2020-09-28 02:26:25 +00:00
Mario Luzeiro 0ab82ef66a 3D-Viewer: add an option to enable render of plated pads
by default this option is disabled and will render as in previous
version.
2020-09-27 13:35:55 +00:00
jean-pierre charras 0b03d8a5ff Fix a few Coverity warnings. 2020-09-20 16:30:23 +02:00
Jon Evans e9b627bfd8 ADDED: Center marker dimension type 2020-09-16 20:55:11 -04:00
Jon Evans 75ffce1a0b ADDED: Leader dimension object
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5555
2020-09-15 23:37:38 -04:00
Jon Evans b11e315d10 Refactor DIMENSION to hide internal details; add some new properties
This is a board file format change to account for the new properties.
Also, we now only store the critical information about the dimension's
geometry in the board, rather than storing every drawn line.

The DIMENSION object is now an abstract base, and ALIGNED_DIMENSION
is the implementation that exists today (we will add more dimension
types in the future)
2020-09-11 21:12:36 -04:00
Jeff Young e2bc7557cc Clean up arc/circle polygonization.
1) For a while now we've been using a calculated seg count from a given
maxError, and a correction factor to push the radius out so that all
the error is outside the arc/circle.  However, the second calculation
(which pre-dates the first) is pretty much just the inverse of the first
(and yields nothing more than maxError back). This is particularly
sub-optimal given the cost of trig functions.

2) There are a lot of old optimizations to reduce segcounts in certain
situations, someting that our error-based calculation compensates for
 anyway.  (Smaller radii need fewer segments to meet the maxError
condition.) But perhaps more importantly we now surface maxError in the
UI and we don't really want to call it "Max deviation except when it's
not".

3) We were also clamping the segCount twice: once in the calculation
routine and once in most of it's callers.  Furthermore, the caller
clamping was inconsistent (both in being done and in the clamping
value). We now clamp only in the calculation routine.

4) There's no reason to use the correction factors in the 3Dviewer;
it's just a visualization and whether the polygonization error is
inside or outside the shape isn't really material.

5) The arc-correction-disabling stuff (used for solder mask layer) was
somewhat fragile in that it depended on the caller to turn it back on
afterwards.  It's now only exposed as a RAII object which  automatically
cleans up when it goes out of scope.

6) There were also bugs in a couple of the polygonization routines where
we'd accumulate round-off error in adding up the segments and end up with
an overly long last segment (which of course would voilate the error
max). This was the cause of the linked bug and also some issues with vias
that we had fudged in the past with extra clearance.

Fixes https://gitlab.com/kicad/code/kicad/issues/5567
2020-09-11 11:23:49 +01:00
Mario Luzeiro e288218c4f 3D-Viewer: subtract pads poly to F_Cu and B_Cu poly layers 2020-09-08 21:02:20 +00:00
Mario Luzeiro 1ab968e72f 3D-Viewer: render different materials plated and non plated copper
implement on OpenGL
2020-09-08 21:02:19 +00:00