jean-pierre charras
cd8d6ba079
3D viewer: fix bad rendering of circles and segments due to truncation.
...
the item radius or thickness was a int. should be a double.
Fixes #10357
https://gitlab.com/kicad/code/kicad/issues/10357
2022-01-11 13:13:51 +01:00
Jeff Young
73a2984963
Fixes for rotated footprint text.
2022-01-10 15:30:19 +00:00
Jeff Young
e811a39881
Readability.
2022-01-10 15:05:57 +00:00
Jeff Young
236feeb592
Cleanup GRText APIs, 3D Viewer <-> board APIs, and Plotter APIs.
...
Also fixes a bug where outline fonts weren't being handled for footprint
text in 3D Viewer, and a copy/paste error in stroke font handling for
both PCB and footprint text in 3D Viewer.
Fixes https://gitlab.com/kicad/code/kicad/issues/10319
2022-01-10 14:17:11 +00:00
Jeff Young
7d032f9c2f
Outline font rendering for Cairo, plotter, printer and 3D viewer.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/10319
2022-01-10 01:54:28 +00:00
Jeff Young
aef2a3fca4
Default font for eeschema.
2022-01-08 16:47:45 +00:00
Marek Roszko
c4c56de708
Neurotically update position wxPoint usages
2022-01-01 11:55:51 -05:00
Marek Roszko
2d1357dc54
Swap some of the 3d viewer to VECTOR2I
2021-12-29 14:20:40 -05:00
Jeff Young
ccb94fd1a7
APIs for passing KIFONT::FONT pointers around.
...
Also some clean-up and bug fixes.
2021-12-29 17:32:19 +00:00
Jeff Young
fa908e1f98
Dimensions for footprints.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/8441
2021-12-24 21:10:28 +00:00
Jeff Young
ef10b36948
Add mask-to-copper clearance parameter and rename mask margin.
2021-12-24 12:36:41 +00:00
Jeff Young
92e589b398
Use board maxError value, and return SH_ARC for unfilled circle.
2021-12-23 20:36:11 +00:00
david-beinder
fd6a75b779
Do not call TransformToPoly for negative sized PADs
2021-11-12 15:40:08 +00:00
Jeff Young
6c0110ecd3
Naming conventions.
...
There's nothing "legacy" about the OpenGL 3D renderer.
2021-10-21 14:30:03 +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
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
Wayne Stambaugh
78e5e98ea0
Pass VECTOR2I 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
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
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
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
jean-pierre charras
c08f74168c
3D viewer: BOARD_ADAPTER::createPadWithClearance() add missing handling of SH_ARC shape.
2021-03-20 14:15:47 +01: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
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
Wayne Stambaugh
f8efe4a65a
3D viewer code cleaning round 5.
2020-12-16 17:11:05 -05: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
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
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
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
Marek Roszko
304e5faf36
Move wxStringSplit to kicad_string
2020-10-24 00:17:07 -04: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
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
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
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
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
Mario Luzeiro
1ab968e72f
3D-Viewer: render different materials plated and non plated copper
...
implement on OpenGL
2020-09-08 21:02:19 +00:00
qu1ck
636285311e
Make DRAWSEGMENT::GetRectCorners return vector
...
... instead of modifying the argument.
This will make the method usable in python API and will not incur
permormance penalty because named return value optimization (NRVO)
is a thing since C++11.
But even if copy is not elided vector is moved instead of copied.
https://en.cppreference.com/w/cpp/language/copy_elision
2020-09-07 05:33:10 +00:00
Jeff Young
56a531109a
Don't try and shrink shapes generated from pads.
...
It ends up being different from shrinking the final outline.
2020-08-28 20:48:47 +01:00
Jeff Young
2c4269d03e
When inflating dummy pad make sure to reset clearance to zero.
...
And, the inflate-dummy-pad hack doesn't work for custom pad shapes,
so turn it off there.
Fixes https://gitlab.com/kicad/code/kicad/issues/5363
2020-08-28 11:05:58 +01:00
Jeff Young
393bb0fd83
Fix assert where geometry routine wasn't ready to handle layers.
...
This introduces layer handling to a lot of the geometry routines.
Many of them don't do much with it now, but it does help multi-layer
zones and will help when padstacks are implemented.
2020-08-12 22:20:08 +01:00
jean-pierre charras
29d6fe88f0
3D viewer: do not show via/pad shapes of pads not connected on copper layers.
...
Show the same vias/pad shapes as plot functions.
2020-08-11 11:26:00 +02:00
Tomasz Wlostowski
89a953e039
Migrated GetEffectiveShape(s) to SHAPE_COMPOUND
2020-07-29 23:14:03 +02:00
Jeff Young
bf445c1a95
Performance enhancements.
...
1) cache pad polygon outlines
huge improvement in connectivity performance and a decent
improvement in DRC performance
2) don't pre-allocate CONTEXT stack
significant improvement in DRC rule performance
2) don't keep re-encoding strings
decent improvement in DRC rule performance
2020-07-25 13:03:33 +01:00
Jeff Young
d85a707385
Move rest of DRC to SHAPE collision architecture.
2020-07-06 20:00:50 +01:00
Jeff Young
40a72d9530
Add SH_RECT handling to 3D shape conversion.
...
Also add some debugging for not-implemented shape cases in other
places to catch simmilar issues in future.
Fixes https://gitlab.com/kicad/code/kicad/issues/4757
2020-06-30 18:32:31 +01:00
Jon Evans
0d4ee39f75
CHANGED: Copper zones can be on more than one layer
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1963
2020-06-28 08:52:37 -04:00
Jeff Young
d01b29ab37
Cleanup pad geometry handling.
...
There were a lot of plotters, exporters, etc. that were rolling their
own implementations.
This also introduces a lazily-built set of SHAPE objects for doing
collision detection and some forms of rendering (and later DRC).
2020-06-22 22:28:37 +01:00
Jeff Young
970921f88b
Support for filled DRAWSEGMENT::S_RECT and S_CIRCLE.
...
One more step in unifying pad primitives and draw segments.
2020-06-20 14:34:53 +01:00
Seth Hillbrand
08c61e6788
Ensure triangulation follows moving zone
...
Dragging filled zones in OpenGL was extremely slow due to the
invalidated triangulation cache. Moving the zone should also move the
triangles and keep the cache valid.
2020-06-17 19:43:11 -07:00
Jeff Young
aeed8e6e2c
Finish implementation of DRAWSEGMENT::C_RECT.
...
It's currently only supported in the Footprint Editor. It could be
easily added to the board editor (all the code is there), but the board
editor is a little short on room in the drawing tools toolbar.
2020-06-15 20:51:31 +01:00
Jeff Young
874f13e29e
Fix some issues with rotated oval pads.
2020-05-01 18:49:42 +01:00
Jeff Young
2b6089240a
Change super/subscript syntax to ^{foo} and _{foo}.
2020-04-18 21:04:41 +01:00
Jeff Young
9c8941e040
Remove a bunch of globals.
2020-04-16 17:34:46 +01:00
Jeff Young
6e800bddae
Rationalize penWidth processing as first step in removing some globals.
2020-04-13 20:58:13 +01:00
jean-pierre charras
2c8ada42a0
Arc shaped track segments: fix 3D viewer and track to polygon converter.
2020-04-09 10:37:17 +02:00
Jeff Young
5134856f18
Rationalise 3D settings data-structure.
...
Move the camera out to its own so that everything else is board-
related, and then rename BOARD_ADAPTER.
At some point the flags should probably be moved out too, and they
can have the EDA_3D_SETTINGS name.
2020-03-28 16:09:40 +00:00
jean-pierre charras
04d6ea982d
3D viewer: fix an issue with solder paste layer having negative clearance.
...
The code tried to draw outlines with segments having a negative thickness.
It happens mainly on solder paste layers.
Fixes #4090
https://gitlab.com/kicad/code/kicad/issues/4090
2020-03-26 13:46:14 +01:00
jean-pierre charras
5f7bcb9c34
3D viewer: fix a minor issue in solder paste rect pads:
...
the solder paste mask clearance was no taken in account for rect and trap shapes.
2020-03-25 13:04:30 +01:00
Jeff Young
d69ebfae49
Push tool framework base down into TOOL_HOLDER.
...
This allows us to use it outside of EDA_BASE_FRAMEs (in this case, in
PANEL_PREVIEW_3D.)
2020-03-24 19:00:25 +00:00
Jeff Young
baeb3689b5
Improve SNR (and spelling).
2019-08-20 18:02:28 +01:00
Seth Hillbrand
59ed9f086f
3d-viewer: Remove dead code
...
The 2d-bbox of the 3d viewer was calculated and set but never used
2019-08-16 10:56:32 -07:00
Simon Schubert
e01348cccc
3d canvas: use radius, not width for circles
2019-08-15 14:02:00 -07:00
Jeff Young
65821f747d
Bring 3D viewer in line with Pcbnew's solder mask rendering.
2019-06-25 11:34:28 +01:00
jean-pierre charras
34ccd0f004
Pcbnew: prepare the new zone filling algo (filled polygons with no thickness). Work in progress.
2019-06-04 09:39:17 +02:00
Seth Hillbrand
6a45446496
pcbnew: Remove the last dlist from modules/pcbnew
2019-06-01 20:55:32 -07:00
Seth Hillbrand
9163ac543a
pcbnew: Move pads to std::deque
2019-06-01 16:23:54 -07:00
Jeff Young
d6e9bdf07b
Convert remaining legacy drawing code to print code.
2019-05-31 21:54:22 +01:00
Seth Hillbrand
ac435ecd68
Moving further arc approximations down
...
This corrects an issue with fill segments-per-circle and moves the error
to segmetns calculation down in a number of functions to expose the
single value for approximation
2019-05-22 14:35:17 -07:00
Seth Hillbrand
ddc6079ceb
Move remaining hard-coded segment counts
...
This removes the remaining hard-coded segments counts and replaces them
with the relative error calculation where the segments per arc is
determined by the maximum error we allow (smaller arcs = fewer segments)
2019-05-16 08:49:55 -07:00
jean-pierre charras
d259459a14
Pcbnew: add a new primitive pad shape: chamfered round rect pad.
...
Allows 0 to 4 chamfered corners, not only one.
A custom shape allow this kind of shape. However because it is a primitive,
it is easier to edit and it support thermal reliefs.
2019-03-11 10:26:15 +01:00
Seth Hillbrand
a46f5c3af5
3d-viewer: Clamp inner radius of rings
...
Thick segments can cause radius to be set negative. Effective radius of
these segments should be 0.
Fixes: lp:1803797
* https://bugs.launchpad.net/kicad/+bug/1803797
2019-01-04 16:49:21 -08:00
Seth Hillbrand
25f8b1ce72
pcbnew: Update multiple zone segments
...
Where we can get away with lower segment counts (localizing an anchor),
we keep the low-def 16 segment count. Intermediate values and values
that are visible to the user are set to high definition. Most are
simply hints to the inflation correction but where they show, the user
show see smooth lines.
2019-01-03 17:34:59 -08:00
jean-pierre charras
830c5e7db7
3D viewer: ensure 0 sized circles (that crash the viewer) are skipped.
2018-11-05 08:30:54 +01:00
Seth Hillbrand
df562b7ec0
pcbnew: Prevent degenerate values in Eagle import
...
Importing Eagle files allowed for invalid zone values for clearance and
minimum width that triggered asserts in the 3d-viewer.
Fixes: lp:1801188
* https://bugs.launchpad.net/kicad/+bug/1801188
2018-11-04 11:01:08 -08:00
Seth Hillbrand
f8784f30a8
Removing OpenMP
...
This commit finishes the removal of OpenMP from the KiCad codebase.
Removed in this commit are the OpenMP calls in 3d-viewer and
qa/polygon_triangulation as well as all references in CMakeLists.txt
std::thread is used instead for multithreaded computation
2018-09-21 12:44:20 -07:00
Seth Hillbrand
d139a49690
3d-viewer: corrected rrect zero-length radius
...
Previous commit mistakenly included the full clearance for the rounded
rectangle circle. The CFILLEDCIRCLE2d takes the radius rather than the
diameter.
2018-09-20 08:52:41 -07:00
Seth Hillbrand
8efcf81cf5
3d-viewer: Approximate 0-length element is rrect
...
Apply same logic of using a filled circle to represent a zero-length
element as a filled circle with radius of the line.
Fixes: lp:1785823
* https://bugs.launchpad.net/kicad/+bug/1785823
2018-09-19 20:19:37 -07:00
Seth Hillbrand
8999f4604f
3d-viewer: Require simplified polygons
...
3d viewer requires simplified polygons not just for triangulation but
also for its own internal routines.
Fixes: lp:1793085
* https://bugs.launchpad.net/kicad/+bug/1793085
2018-09-18 09:35:30 -07:00
Seth Hillbrand
a6325aab29
Replacing Tesselation
...
Replaces Poly2Tri with updated code to process polygons faster and more
robustly. Notably, we can now handle overlapping holes in the polygons,
allowing us to cache the triangulation of complex boards
2018-09-01 19:30:50 -07:00
jean-pierre charras
3c6e8c4a40
More support of DRW_SEGMENT Bezier curve (support in 3D viewer, and PnS router).
2018-07-22 18:39:48 +02:00
jean-pierre charras
458f9f5c97
3D viewer: fix incorrect calculation of pad shapes with clearance (i.e. pad shapes on solder paste and solder mask layers)
...
Fixes: lp:1767209
https://bugs.launchpad.net/kicad/+bug/1767209
2018-04-28 12:41:43 +02:00
jean-pierre charras
7f6e26e55a
DrawGraphicText: remove a static variable, and replace it (when needed) by a new parameter in argument list.
...
It make this function thread-safe (as far as wxString is thread-safe)
2018-04-07 19:57:26 +02:00
jean-pierre charras
4c5bd01887
Rename a few files
2018-01-28 22:02:31 +01:00
jean-pierre charras
5d08f1a0d9
Breaks the large create_layer_items.cpp file into 2 smaller specialized files, to make changes in 3D shapes calculations more easy.
2018-01-28 14:05:17 +01:00