Instead of iterating through the segment list each time, we use a kdTree
structure to efficiently query a 2d point cloud for the nearest
neighbors
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21352
Use only C-locale functions wxString::ToCDouble and fmt::format{}
functions so that we do not need to set the locale for file io
operations
This also introduces a cmake check that looks for certain banned
functions (strtod, strtof and atof) that convert strings into doubles
by the user locale or formatting specifiers like %f/%g that convert
doubles into strings by the users locale. It will prevent compilation
in this case.
For the limited cases where we want to show the user a string in their
locale, we have an override string "format:allow" that can be added to
lines in order to allow them with %f/%g format specifiers
(This will allow us to hack-fix wxWidgets' bug
for determining the height when fonts are scaled.
This commit includes such a fix, but I have no
idea if this particular one will work or not.)
This adds the ability to export the pin table content to a CSV file
or the clipboard as CSV, then re-import it from CSV or TSV. This allows:
* to round-trip pin table data via a spreadsheet program, so that the pin
data can be manipulated in a richer/more familiar editing environment
* an import method to bring in tabular pin data from other formats
"semi-automatically", without having to write a full-blown symbol generator.
Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/19207
Glew has the problem that it has to be selected at build time if GLX or
EGL is supported by the library, and this in not encoded in the library
name, nor ABI, nor anything.
Then it's easy to get into the situation that a binary is built but
cannot run because glew supports an API different from the one used by
wxWidgets, or the binary fails to link in the end after all objects are
compiled.
epoxy can support both with the same library avoiding this problem.
epoxy is not initialized explicitly, replaced initialization with
version check where one was not done already.
It seems to be available as vcpkg https://vcpkg.link/ports/libepoxy
There are problems related to GL context switching on Windows which does
not seem to be used in kicad
https://github.com/anholt/libepoxy#known-issues-when-running-on-windows
There is also a problem related to multithreaded rendering on Windows
https://github.com/anholt/libepoxy/pull/265 It's harder to tell if
threading is used for rendering but it does not look like kicad is doing
anything complex enough to warrant using multiple rendering threads.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20630
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12543
- Adds time and delay units
- Adds time domain tuning parameters entry and storage
- Adds pad-to-die delay property
- Adds time domain parameter interface for length / delay calculations
- Adds unit tracking for numerical constants through LIBEVAL
- Will need future work to truly propagate through binary expressions
- Adds time domain tuning to meander placers
- Adds time delay display to net inspector panel
- Modifies DRC to handle time domain constraints
This reverts commit e587e5029c487e69222f6bf545a0ad0f07e0f210.
Revert "Print dlgs: add panel printer to select the current printer. Windows only"
This reverts commit 4ef2853ae51afa028350c0c42ee01286837e5178.
Also flip the dependence between json_schema_validator and kicommon,
and create a shared JSON_SCHEMA_VALIDATOR so that we don't have to
copy/paste the schema loading code as much
This means when you switch a pad to be roundable (round rect or
chamfered-with-round), you get the same behaviour as in the dialog
(and an IPC-compliant pad by default).
Also fixes the radius visibility in the properties panel for
chamfered pads (which can have radii).