Commit Graph

2691 Commits

Author SHA1 Message Date
Tomasz Włostowski ba9576b014 router: snap to clearance boundaries in Highlight Collisions mode
Fixes: lp:1655819
* https://bugs.launchpad.net/kicad/+bug/1655819
2017-01-19 17:47:15 +01:00
Maciej Suminski 3c61b16e7b Code formatting 2017-01-18 13:22:40 +01:00
Maciej Suminski c758f434c0 Removed unused fields in VIEW & ANTIALIASING_SMAA classes 2017-01-18 13:22:18 +01:00
Maciej Suminski 004ca3c6f9 Fixed a memory leak in VIEW_ITEM (proper way of doing 9bc2bb2)
The problem with simple deleting VIEW_ITEM_DATA upon VIEW_ITEM removal was
caused by the default copy constructors that copied pointers.
Once a copy of an item was destroyed, the VIEW_ITEM_DATA has been
destroyed, effectively invalidating m_viewPrivData for the other item.
2017-01-16 14:57:50 +01:00
jean-pierre charras d0db2de015 Cosmetic enhancement in pcbnew menubar: use specific icon in menuitems to switch canvases, and add a marker to the mode currently in use 2017-01-14 14:43:45 +01:00
Maciej Suminski 88eb648cbb Alternative way of handling OpenGL initialization & errors
Some faults could result in a crash, as they were not properly
handled. Now the rendering loop is wrapped with try..catch block
which will revert to Cairo in case of an error and display an
error message.

Fixes: lp:1655766
* https://bugs.launchpad.net/kicad/+bug/1655766
2017-01-13 16:50:36 +01:00
Maciej Suminski ca085de6aa Initialize fields in COMPOSITOR 2017-01-13 16:46:45 +01:00
Maciej Suminski e0577c0218 checkGlError() may throw exceptions or display an error message 2017-01-13 16:46:02 +01:00
Maciej Suminski 5a7604cbb4 More code formatting 2017-01-13 10:36:59 +01:00
Maciej Suminski 67b0a8c990 Fixed type casting in SHADER class 2017-01-11 17:37:10 +01:00
Maciej Suminski da00d64877 OpenGL antialising code clean up & formatting 2017-01-11 16:20:37 +01:00
decimad 32a125a767 improve class observable 2017-01-11 16:20:37 +01:00
decimad 5a4e247564 EDA_DRAW_PANEL_GAL now takes the gal display options per dependency injection
Add a hack so that the pad properties base dialog constructor can pass in the dependency. Since the derived dialog's constructor takes the parent by this exact type, the static cast is safe.
2017-01-11 16:20:37 +01:00
decimad e71070fe1b final touch-ups (license information, includes) 2017-01-11 16:20:37 +01:00
decimad 77138e3702 Add UI control to set up gal opengl antialiasing and load/store the settings 2017-01-11 16:20:37 +01:00
decimad bbaeeceeac A model/subscribe helper-class OBSERVABLE to common 2017-01-11 16:20:37 +01:00
decimad 2a8dd508c4 Add smaa (subsample morphological antialiasing) 2017-01-11 16:20:37 +01:00
decimad 02bb410cdb Refactor COMPOSITOR/OPENGL_COMPOSITOR to enable customization of scene rendering and presentation 2017-01-11 16:20:35 +01:00
decimad 77f9cd0cb0 remove custom shader header generation build-step in favor of c++11 raw string literals
rework shader loading code to handle an arbitrary amount of to-be-concatenated strings
2017-01-11 16:20:34 +01:00
decimad 047f52e7cb Move builtin font resources out of opengl_gal translation unit 2017-01-11 16:20:33 +01:00
John Beard f1c5b9a9ae Add context menu to GAL DRAWING_TOOL, including the zone menu
Includes a tiny class for scoped set-reset of a variable, which is used
here to store the current drawing mode.

Fixes: lp:1218629
 * https://bugs.launchpad.net/kicad/+bug/1518629
2017-01-11 10:41:08 +01:00
Simon Wells 5fee9b2405 Performance counter: use correct std::chrono clock 2017-01-06 09:54:38 -05:00
jean-pierre charras d56a49d218 Performance counter rework: More comments, code cleaning, and move GetRunningMicroSecs() prototype from common.h to profile.h.
profile.h should now contain all info for profiling.
2017-01-02 13:49:36 +01:00
jean-pierre charras fff449ecf0 Performance counter rework: Add comments, fix coding style issues. 2016-12-31 13:00:24 +01:00
Simon Richter ac9f858813 Performance counter rework 2016-12-31 12:57:42 +01:00
jean-pierre charras b8b08dafd6 Code cleaning: remove pcbcommon.* which contains nothing really useful. The very few lines of code are moved to a better place. 2016-12-31 12:56:21 +01:00
jean-pierre charras a9fbedfb12 More Coverity warnings fixes. 2016-12-30 14:36:23 +01:00
jean-pierre charras dec2d6e8cc Fix a few Coverity warnings. A bit of clean code in export_vrml.cpp. 2016-12-30 12:40:05 +01:00
jean-pierre charras 9be5398cd2 Add bitmaps to Align/distribute menu ans menu items 2016-12-20 17:50:29 +01:00
jean-pierre charras 0265a5bac5 Add a specific icon to the Flip board menuitem command 2016-12-13 19:36:17 +01:00
Maciej Suminski 139521750b Fixed a crash on finishing line drawing in the legacy FP editor
Fixes: lp:1649597
* https://bugs.launchpad.net/kicad/+bug/1649597
2016-12-13 17:25:34 +01:00
Maciej Suminski c8676db84e Fixed panning & cursor control with arrow keys in flipped view 2016-12-12 16:45:52 +01:00
Maciej Suminski 3ea8f12555 Handle flipped view text rendering for Cairo 2016-12-12 16:45:52 +01:00
Maciej Suminski effc8bebb1 Store view flip setting between canvas changes 2016-12-12 16:45:52 +01:00
Maciej Suminski 7ad5fca6de More code formatting, updated copyright headers 2016-12-12 16:45:52 +01:00
Maciej Suminski 8afae179ab convert_to_biu: Changed defines & functions to constexpr 2016-12-12 16:45:52 +01:00
Maciej Suminski a2a950fdae Reduced the Cairo command entry size 2016-12-12 16:45:52 +01:00
Maciej Suminski 660e4ca9d4 Cairo group arguments are stored in a union. 2016-12-12 16:45:52 +01:00
Maciej Suminski c96db4f5c4 Removed aCreateUndoEntry flag from COMMIT::Push()
It was not used anywhere and COMMIT should handle creating
undo buffer entries.
2016-12-12 16:45:52 +01:00
Maciej Suminski 89055c4425 Code formatting 2016-12-12 16:45:52 +01:00
Tomasz Włostowski da28e163d2 Optimizations/fixes to the VIEW/GAL classes:
- much faster Cairo rendering (outperforms legacy)
- improvements in VIEW update handling
- fixed issue with grid rendering in flip view mode
2016-12-12 16:45:52 +01:00
Tomasz Włostowski 3f7c5a0845 fixed post-rebase issues 2016-12-12 16:45:52 +01:00
Tomasz Włostowski c661c30f68 pcbnew: added flip view mode 2016-12-12 16:45:52 +01:00
Tomasz Włostowski 1c1f4e9a50 Refactoring of VIEW/VIEW_ITEM classes:
- Remove dependency of EDA_ITEM on VIEW
- VIEW_ITEM is now a pure virtual interface
2016-12-12 16:45:52 +01:00
Tomasz Włostowski 27a10e8597 Multiple simplifications to GAL tools in PCBNew:
- Finalize transition to BOARD_COMMIT (removed all remaining uses of PICKED_ITEMS_LIST) and implicit view/ratsnest updates
- Simplified SELECTION class, it now can be directly added to a VIEW
- Removed unnecesary casts and templates
- Introduced C++11 features (range based for, lambdas) where they improve code readability
- Added non-undoable COMMITs, which can be used to propagate change notifications to interested listeners (e.g. ratsnest/view)
2016-12-12 16:45:52 +01:00
Tomasz Włostowski 470ccafaeb Added C++ wrapper for prof_counter 2016-12-12 16:45:52 +01:00
Tomasz Wlostowski 5476e97bfa Pcbnew: fix segfault when importing netlist with no footprint assignments.
Fixes lp:1647803

https://bugs.launchpad.net/kicad/+bug/1647803
2016-12-10 10:20:21 -05:00
Maciej Suminski 524dddaf70 Sync the PNS model when its changed 2016-11-28 15:51:18 +01:00
jean-pierre charras c225af747f mathplot: fix a bug and remove unused variables ( it fixes a few compil warnings) from Coverity analysis.
Uncrustify mathplot.h and fix a few coding style issues.
2016-11-28 14:18:22 +01:00
jean-pierre charras 30df041de6 fix shadowed local variables 2016-11-25 18:17:34 +01:00
jean-pierre charras fe3c72b6de Remove duplicate definitions only needed only by old python wizards. No more useful in master branch, since a long time. 2016-11-25 13:30:11 +01:00
unknown 334c50477a Auto save: fix case of auto save interval is set to 0 (disabling auto save feature)
This fix allows also the new value of the auto save interval immediately taken in account.
2016-11-22 11:26:31 +01:00
Wayne Stambaugh 64c892ee23 Make footprint ID into a generic library ID.
Rename FPID to LIB_ID as is now used as a generic library identifier and
is no longer specific to footprints.

Remove all mention of footprint from the new LIB_ID doxygen comments and
code.

Rename files fpid.h and fpid.cpp to lib_id.h and lib_id.cpp.

Rename fp_lib_table.keywords file to lib_table.keywords and adjust CMake
build dependencies accordingly.

Update all source files effected by the code and file name changes.

Update .gitignore for file name changes.
2016-11-20 18:35:08 -05:00
Wayne Stambaugh 40e93d263d Split out library table common code into separate source files. 2016-11-20 13:34:03 -05:00
Wayne Stambaugh 888c5d2a97 Change boost header file in an attempt to make clang happy yet again. 2016-11-19 19:42:43 -05:00
Wayne Stambaugh 2bfce154cc Add boost header file in an attempt to make clang happy. 2016-11-19 19:18:12 -05:00
Wayne Stambaugh b9c296420a Complete library table and library table row refactor.
Derive LIB_TABLE_ROW from boost::noncopyable for use in boost pointer
containers.

Use std::unique_ptr to manage PROPERTIES pointer.

Add clone support for boost pointer containers.

Split common library table code out from FP_LIB_TABLE into base LIB_TABLE
object.  The FP_LIB_TABLE object only contains the code specific to
footprint library tables.

Use boost::vector_ptr for storing library table row objects.

Fix move up and down bugs in footprint library table edit dialog.
2016-11-19 17:16:43 -05:00
jean-pierre charras 07e2ccdb59 Eeschema: cosmetic enhancement. 2016-11-19 09:05:58 +01:00
jean-pierre charras 682c15ed62 Add connection highlight to eeschema, step 2: Fixes, refinements, add hot key, cleanup code. 2016-11-16 13:09:34 +01:00
Marvin Schmidt 66aee09388 Add missing include in kicad_string.h
Without this include the HAVE_STRTOKR define won't be available to
the preprocessor and the strtok_r function will be declared
unconditionally and eventually clash with the declaration from the
system provided equivalent.
2016-11-07 12:36:42 -05:00
jean-pierre charras c7fcb2695c Add a specific bitmap for show electrical type option (component editor and component viewer) 2016-11-04 13:59:45 +01:00
Wayne Stambaugh 192d4b87ad Rework footprint library table for use in symbol library table.
Factor out ROW object from FP_LIB_TABLE so it can be reused to create a
symbol library table row object.

Create base LIB_TABLE_ROW object from ROW object common code.

Derived FP_LIB_TABLE_ROW object from LIB_TABLE_ROW to provide support for
footprint library table rows.

Update all instances of FP_LIB_TABLE::ROW with FP_LIB_TABLE_ROW.

Purge wxT() macros from modified files where possible.
2016-10-28 09:12:28 -04:00
jean-pierre charras 89f9b7df5c Pcbnew: when update PCB from schematic, spread footprints also in legacy mode. Remove also one useless undo command level after update. 2016-10-25 15:34:59 +02:00
decimad 402f53a302 update font code along with the changes done in the msdf atlas tool (use codepoint spans and refined char placement)
add font coordinate system clarification drawing (svg)
2016-10-20 14:31:09 +02:00
Tomasz Włostowski bb20a7f592 common: remove dependency on libbitmaps in EDA_ITEM::GetMenuImage() 2016-10-19 17:54:00 +02:00
Wayne Stambaugh 129fa52b65 CvPcb: remove broken footprint documentation feature.
At one point, all of the footprints provided by the KiCad footprint
libraries were merged into a single pdf file.  The link to open this
file was provided on the toolbar.  Since the footprint libraries have
been split out into individual repositories, this file is no longer
created so the toolbar button and the underlying code to open this
file were removed.

Improve a few CvPcb menu strings.

Fixes lp:702785

https://bugs.launchpad.net/ubuntu/+source/kicad/+bug/702785
2016-10-11 15:08:40 -04:00
Cirilo Bernardo 48ed9f080e Add Help Menu item to open browser at kicad-pcb.org/contribute 2016-10-10 19:01:45 -04:00
jean-pierre charras 89914fa9de Fix 2 Coverity warnings. 2016-09-26 19:58:32 +02:00
Maciej Suminski 1420a0179f Removed deprecated pragmas to mute warnings 2016-09-26 14:53:43 +02:00
Simon Richter ad088db6d2 Add more "override" markers. 2016-09-25 13:59:41 -04:00
jean-pierre charras 48c18604fc Layers manager: add (in context menu) show all layers and hide all layers, and code cleanup. 2016-09-25 13:08:04 +02:00
Simon Richter 59c81976dc Explicitly mark overriding functions. 2016-09-24 14:53:15 -04:00
Maciej Suminski 3623421912 Fixed a PNS crash after undoing the last operation while routing 2016-09-23 13:58:33 +02:00
decimad 6a9c1cb6a1 Split the undo/redo event into the two stages "pre" and "post" for convenient synchronization of dependent state. 2016-09-23 13:29:25 +02:00
Cirilo Bernardo 33948e572d Added STEP Export menu item and supporting code 2016-09-22 08:37:16 -04:00
Dick Hollenbeck 29be200843 Add SWIG support for NETCLASSPTR. Reduce SWIG visibility from C++ headers. 2016-09-21 19:52:04 -04:00
Simon Richter eeae8c741a Synchronize forward declaration with definition
The actual definition uses "class", so the forward declarations should do
so, too.
2016-09-21 16:35:00 -04:00
decimad ee3d75f273 Add coroutine call invocation context to identify the main stack frame.
Run the text draw-tool on the main stack frame.

Fixes: lp:1547282
* https://bugs.launchpad.net/kicad/+bug/1547282
2016-09-21 11:56:40 +02:00
Dick Hollenbeck 7311f07eaf SWIG Improvements
*) Extend SWIG support deeper into the BOARD class.
*) Move swig *.i files into a directory identified for SWIG, in preparation
   for a parallel universe involving Phoenix's SIP.
*) Move swig files which will be common to both eeschema and pcbnew into
   common/swig.
*) Sketch out a "common" python module, and plan on dovetailing that into a
   libkicad_shared.{dll,so}
*) Add common/swig/ki_exceptions.i and define a macro HANDLE_EXCEPTIONS()
   which is to be applied to any function which needs C++ to python
   exception translation.
*) Move the test for SWIG tool into top level CMakeLists.txt file for use
   in all python modules beyond pcbnew, i.e. eeschema and common.
*) Add SWIG_MODULE_pcbnew_EXTRA_DEPS which generates a better Makefile, one
   which rebuilds the swig generated *.cxx file when one of its dependencies
   change.
*) Re-architect the board.i file so that it can be split into multiple *.i
   files easily.
*) Make some KIWAY from python progress, in preparation for Modular KiCad
   phase III.
2016-09-20 11:59:43 -04:00
Dick Hollenbeck 9ad49dc2d1 Split IO_ERROR out of richio.* and store Problem() and Where() separately 2016-09-20 11:56:18 -04:00
jean-pierre charras 3f104448df Rename libedit_icon to icon_libedit, bo be consistent with other icon names. 2016-09-20 13:23:17 +02:00
jean-pierre charras 6edee2ae1d Prepare Plot Gerber file to include advanced aperture and net attributes.
This option is not yet activated because the net attributes are not yet fully fixed by Ucamco, in Gerber file format specifications.
(To activate it, see dialog_plot.cpp, line 43)
2016-09-19 13:01:36 +02:00
Maciej Suminski 516510774c Fixed ratsnest for nodes surrounded with zones 2016-09-13 17:13:42 +02:00
Maciej Suminski 03f4a89521 More descriptive method names for RN_NODE 2016-09-13 10:06:25 +02:00
Maciej Suminski 694aa7ff5b Handle pad autonumbering when the number set is empty. 2016-09-12 13:45:57 +02:00
Maciej Suminski 6481ff75c9 Changed one of COMMIT::Stage() methods to COMMIT::Modified() 2016-09-12 13:45:57 +02:00
Maciej Suminski 65b1225231 Added CHT_DONE flag to COMMIT::Stage to skip add/remove step 2016-09-12 13:45:57 +02:00
Maciej Suminski 6701b80f77 Converted global deletion, global text size setting & module exchange to BOARD_COMMIT. 2016-09-12 13:45:57 +02:00
Maciej Suminski 74d53e517c VIEW_GROUP objects redraw itself after a change 2016-09-12 11:50:06 +02:00
Maciej Suminski acd7214586 Moved commit.h to 'include' directory 2016-09-12 11:50:06 +02:00
Maciej Suminski b5bfa14057 Removed unused EDA_ITEM::m_Image field. 2016-09-12 11:50:06 +02:00
Maciej Suminski 1dd43d1d98 Unified undo buffer handling code for PCB & module editor.
Replaced UR_MODEDIT with UR_CHANGED.
2016-09-12 11:50:06 +02:00
Maciej Suminski b897c5f290 BOARD_ITEM_CONTAINER class. 2016-09-12 11:50:06 +02:00
Maciej Suminski 09e0311d4e Replaced Copy() method with operator=. Removed Copy() where default copy ctor was enough. 2016-09-12 11:50:06 +02:00
Maciej Suminski f95628c132 Switched to default constructor and operator= for EDA_TEXT. 2016-09-12 11:50:06 +02:00
Ian Roth 7ad2f37391 Add %L formatter to worksheets to print layer name. 2016-09-10 14:23:59 -04:00
Chris Pavlina 4b6d28333e Revert "Memoize SHAPE_LINE_CHAIN bounding box computation"
This reverts commit 30566de69a, which
caused some issues in PNS.
2016-09-01 12:09:06 -04:00
jp-charras 26b1c732de Simulator: add simulator icon, and colored icons to identify more easily traces in trace list and cursor list. 2016-08-29 11:39:54 +02:00
jean-pierre charras 9f46d83175 Gerbview: locate item now does not take in account not visible layers. Remove an unused file
3d viewer: Remove a few ToUTF8() bad  usage (replaced by GetData() )
2016-08-19 09:45:59 +02:00
Maciej Suminski 630d5e04fe Ratsnest NODE stores its parents in a set instead of a list
It happens that the same parent is assigned multiple times, but then removed once, causing ratsnest artifacts.
2016-08-18 17:17:52 +02:00
Simon Richter bfb6e0bbb2 Convert remaining occurences of stri[n]cmp to str[n]casecmp.
This also reverses the substitution logic if strcasecmp is missing (config.h.cmake)
2016-08-16 10:27:09 +02:00
jean-pierre charras f1226afc89 Gerbview: support of %TA.AperFunction (aperture attribute) and better support of %TO (currently work in progress) object attribute. 2016-08-16 12:56:20 +02:00
Maciej Suminski 2f4c9b7263 Do not mark wxMathPlot docs as the main Doxygen page 2016-08-16 09:49:39 +02:00
jean-pierre charras 01d3c72dda Cosmetic enhancement: add a dismiss icon to clarification menu "title" (the "title" is also the close menu command) 2016-08-15 20:22:54 +02:00
Maciej Suminski 0ef866ee74 Code formatting 2016-08-15 17:16:53 +02:00
Tomasz Wlostowski df50a10510 VIEW: replace boost with std 2016-08-15 17:16:45 +02:00
Wayne Stambaugh a4570f74bb Pcbnew: fix several auto save file issues.
* When Pcbnew is launched in the stand alone mode with no board file command
  line option, the project path is set to the current working directory.  The
  user may not have write access to the current working directory which would
  cause the auto save to generate an error.  If the user does not have write
  access to the current working directory, set the path to a platform specific
  temporary path that the user has write permission.

* When Pcbnew is launched in the stand alone mode with no board file command
  line option, the default BOARD object has no file name.  Set the file name
  to "noname.kicad_pcb" to fix incorrect auto save file name and set the path
  to the user's platform specific document folder.

* Delete orphaned auto save files when closing without saving due to broken
  auto save file generation logic which prepended the file name with "$" rather
  than "_autosave-".

* Fixes: lp:1596382
2016-08-11 15:13:47 -04:00
Chris Pavlina 30566de69a Memoize SHAPE_LINE_CHAIN bounding box computation
For a specific project+system combination, this gives a 38% speedup on
the pcbnew side of netlist sync.
2016-08-11 09:34:58 -04:00
Maciej Suminski 557f9270c7 wxMathPlot basic code formatting 2016-08-11 14:42:18 +02:00
jp charras b2f60009a6 wxWidgets 3.1/Win7 fixes 2016-08-11 14:42:15 +02:00
Tomasz Wlostowski b20f941bd0 sim: hopefully final version of plot axis unit/suffix handling. 2016-08-11 14:42:10 +02:00
Maciej Suminski 63bdb3995e Fixes for limited view panning 2016-08-11 14:42:08 +02:00
Tomasz Wlostowski e9609fe19d mathplot: removed some warnings, fixes to labelling code 2016-08-11 14:42:04 +02:00
Maciej Suminski 9d8b40b93d Reset scales when a plot is removed 2016-08-11 14:42:03 +02:00
Tomasz Wlostowski d0e1f2e412 mathplot: silence debugging messages 2016-08-11 14:42:01 +02:00
Tomasz Wlostowski 8c14f2f6b1 sim: working on UX 2016-08-11 14:42:00 +02:00
Maciej Suminski 5c32e35d27 Minor fixes to wxMathPlot 2016-08-11 14:41:56 +02:00
Maciej Suminski b25781814d Fixed cursors 2016-08-11 14:41:55 +02:00
Tomasz Wlostowski e8d6a42e1a simulator: working on magnitude/phase plots 2016-08-11 14:41:49 +02:00
Tomasz Wlostowski b9e31f6d3a mathplot: further improvements for simulator [wip] 2016-08-11 14:41:49 +02:00
Tomasz Wlostowski 30c87527da mathplot: slave scale locking [wip] 2016-08-11 14:41:48 +02:00
Tomasz Wlostowski d2f4d5c2fb mathplot: various improvements, added log scale [wip] 2016-08-11 14:41:48 +02:00
Maciej Suminski 06463252d7 wxMathPlot: Limited zooming and panning 2016-08-11 14:41:37 +02:00
Maciej Suminski f634cff206 wxMathPlot: Removed mouse help related functions 2016-08-11 14:41:36 +02:00
Maciej Suminski a35e324c3f Mouse controls in simulation plot made coherent with the rest of KiCad 2016-08-11 14:41:27 +02:00
Maciej Suminski c4e67c088d wxMathPlot: Fixed a method name (Set->Get), GetName() returns a const reference 2016-08-11 14:41:26 +02:00
Maciej Suminski f3fabeb9fb Right click context menu for signals (including adding cursors) 2016-08-11 14:41:25 +02:00
Maciej Suminski d5ce31dc8e mathplot.h code formatting 2016-08-11 14:41:25 +02:00
Maciej Suminski 51906625ee Replaced sim plotting widget with wxMathPlot 2016-08-11 14:41:21 +02:00
Maciej Suminski 75b0e3e0a2 Missing include in reporter.h 2016-08-11 14:41:07 +02:00
Tomasz Wlostowski f1f69979e6 ngspice: something starts to work 2016-08-11 14:41:01 +02:00
Maciej Suminski cdc951d0a3 Fixed a crash when dragging a line was interrupted
Crash was caused by removing an element from m_activeTools list, causing other iterators to be invalidated.
2016-08-08 17:20:02 +02:00
Michael Steinberg 86496d3141 Pcbnew: fix dangling board reference crash in GAL. (fixes lp:1584489) 2016-08-05 13:45:14 -04:00
decimad 18b7dbf4d1 Refactor coroutine to improve readability and removed unnecessary heap allocations. Added documentation/links to various boost doc revisions. 2016-08-02 11:39:39 +02:00
Dick Hollenbeck 7434e68876 Pcbnew: improved track scripting support. 2016-07-19 16:34:09 -04:00
Mrio Luzeiro d8eab321f7 3D Viewer: complete refactor of the 3D viewer.
* Split and rewrite the preview window and canvas.
* Create a new class for handling the board information.
* Adds new render targets: openGL, legacy, and ray tracing.
* Render targets take full advantage of the new 3D plugins system and 3D cache
  for a fast 3D model loading.
* Faster board loading.
* New OpenGL render is faster than the old one.
* New ray tracing render target with a post processing shader.
* Use of new 3D plugins (WRL, X3D, STEP and IGES) and 3D model caching.
* Preview of 3D model while browsing the file name.
* 3D preview of the footprint while adding / align 3D shapes.
* Render of 3D models according to attributes: Normal, Normal+Insert, Virtual.
* Pivot rotation centered in one point over the PCB board.
* Shortcuts keys improved for XYZ orientation..
* Animated camera.
2016-07-19 13:35:25 -04:00
Dick Hollenbeck e24990146d Pcbnew: major swig fix.
* Switched hashtables.h over to std::undordered_map from boost version.

* Added new macros DECL_VEC_FOR_SWIG() and DECL_MAP_FOR_SWIG() in macros.h.
  These along with future DECL_HASH_FOR_SWIG() unify the declaration to swig
  and C++ so that the resultant type name is common in both languages, and
  the types AGREE.

* Fixed swigging of NETINFO_ITEM and NETINFO_LIST via magic.

* Newly exposed (python wrapped) are: D_PADS, TRACKS (was TRACK_PTRS),
  NETNAME_MAP, NETCODE_MAP, wxString (without constructor purposely, read
  comment in wx.i), MARKERS, ZONE_CONTAINERS, NETCLASSPTR, KICAD_T types.

* std::vector<SOMETHING*> tends to end up named SOMETHINGS in C++ and python.
  Having the name consistent between like types is helpful, and between
  languages.  std::map<> ends up as SOMETHING_MAP.

* NETINFO_LIST::m_netNames and NETINFO_LIST::m_netCodes are now std::map
  instead of hashtables, because swig does not yet support std::unordered_map.

* You can now get to any netclass or net info.   NETNAMES_MAP and NETCODES_MAP
  are traversable basically the same as a python dictionary using a python
  string (not wsString) as the key!  The wxString typemap converts python
  string to wxString before the lookup happens.  Iteration also works.
2016-07-18 13:23:09 -04:00
jean-pierre charras 98bc4d3ba1 Fix dialog size issues (some widgets have a incorrect size when initialized inside a TransferToWindow() method because the SetSizeHints() method was called before the init) and fix OS X copy/close bug in a few dialogs. 2016-07-14 16:25:35 +02:00
Dick Hollenbeck c2b8a4ee43 Move from class INSPECTOR as the EDA_ITEM::Visit() callback interface to a std::function
callback.  This improves conciseness and encourages use of Visit() due to the lower cost
of entry in C++.
2016-07-12 15:05:54 -04:00
Wayne Stambaugh 98ad5096b0 Eeschema: add saving schematic files to schematic plugin.
* Add SCH_PLUGIN::Save() for current file format and code for saving all
  SCH_XXX objects.

* Add function to SCH_FIELD to get the position of the field in the component
  not the position added to the component position which is what GetPosition()
  does.  This was required because saving the component field expects position
  of the field sans the position of the component.

* Remove public members from BITMAP_BASE object and fix all associated
  code.

* Fix the never ending coding policy violations found making these changes.
2016-07-11 15:48:46 -04:00
jean-pierre charras 34469c1d9c Pcbnew, legacy mode: used spread_footprints to place new footprints after reading a netlist, like in GAL mode.
However they are put inside the "best" area, and not put inside a moving block, like in GAL, due to limitations of legacy mode.
2016-07-11 09:48:51 +02:00
Jon Neal 1293d04a7a Fix a bunch of misspellings of length. 2016-07-10 23:09:18 -04:00
Wayne Stambaugh 4ed346ea64 Eeschema: initial schematic I/O plugin.
* Factor out PROPERTIES object from the PCB plugin code and move it into
  common so it can be used by both the Pcbnew and Eeschema plugins.

* Add schematic I/O plugin manager for loading and saving schematic and
  component library files.

* Add initial attempt at a parser for current schematic file format.  This
  parser will be infinitely more strict than the current parser which is very
  forgiving in what it parses.

* Make minor changes to the base bitmap class to support the new parser.

* Add find root sheet support to sheet object to allow fetching the root
  sheet from any sheet in the stack.
2016-07-06 05:22:56 -04:00
decimad 78bc3c65de use a guarded stack for coroutines in boost version 1.61 2016-07-05 18:02:50 +02:00
Michael Steinberg 06d4894fdb boost::context fixes to make it compatible with boost 1.61 2016-07-05 00:14:32 +02:00
Maciej Suminski 33e7fe6211 Fix a crash caused by invalid iterator (thanks to Michael Steinberg)
TOOL_MANAGER::finishTool() caused iterator to become invalid when an element was removed from the m_activeTools deque.
2016-07-04 16:12:21 +02:00
jean-pierre charras 4a20f376a3 Move call of SetSizeHints in a few dialogs form the dlg ctor to a wxInitDialogEvent event, because some widgets sizes are not fully initialized before this event is fired.
It is especially true in some Window Managers like KDE, but can be true in any WM, when initializations are made by TransferDataToWindow() method, called by the default wxInitDialogEvent handler.
2016-07-02 18:32:03 +02:00
jean-pierre charras 0eea3cffcf DIALOG_SHIM: add void FinishDialogSettings() method which calls the usual methods at end of a dialog, to ensure proper size and position, the first time the dialog is called.
Fix an incorrect size of dialog_pcb_text_properties (due to the fact the dialog was not really initialized when its min size was calculated)
2016-07-02 11:35:52 +02:00
Simon Richter 1b2fd6a382 Replace BOOST_FOREACH with C++11 range based for. 2016-06-29 16:07:55 -04:00
Simon Richter da5699de0a Replace boost::shared_ptr with std::shared_ptr. 2016-06-29 11:09:55 -04:00
Simon Richter 1cb9260972 3D Viewer: drop extra copy ctors from IFSG_NODE.
* This is unnecessary.  Explicitly specifying the regular copy ctor will
  inhibit any generated versions.
2016-06-29 09:52:48 -04:00
Michael Steinberg fde12ebd25 Replace boost::function and boost::bind with their std:: counterparts 2016-06-29 12:23:11 +02:00
Maciej Suminski b82ccc3b4e Reverted 6912 with minor changes (LockCtx requires to specify canvas that locks a context). 2016-06-13 16:43:33 +02:00
Chris Pavlina 5285962775 Remove option to not show footprint ratsnest when moving
This option only exists in legacy, with no real plan to port it to GAL. Nobody
seems to use this; there isn't really much of a point to it. Bye!
2016-06-11 22:34:07 -04:00
Chris Pavlina 9eef653625 Remove legacy option to zoom to selection on middle mouse button
This feature was not reliably available: neither pl_editor nor GAL supported
it. It has been replaced over the past few commits with a new zoom-to-selection
tool available in all applications and modes.
2016-06-11 19:37:43 -04:00
Chris Pavlina d49ecb1b91 Add zoom-to-selection and block move to pl_editor 2016-06-11 09:51:05 -04:00
Maciej Suminski b7ec4ea160 Corrected the last instance check in OPENGL_GAL. 2016-06-10 17:07:12 +02:00
Maciej Suminski 5850b1ced0 GL_CONTEXT_MANAGER: Call SetCurrent() only when a different context is used. 2016-06-10 17:06:54 +02:00
Simon Richter 5ce4abd0ac Use size_t for sizes and offsets. 2016-06-10 17:06:00 +02:00
Chris Pavlina 8c01318141 Add zoom-to-selection tool 2016-06-08 07:19:53 -04:00
Maciej Suminski 3fcae6b120 Fixes for OpenGL resources handling. 2016-06-07 14:42:42 +02:00
jean-pierre charras 6d1e904334 Code cleanup: Remove outdated decimils to/from iu defines and conversion functions (decimils are no more in use since a long time).
Remove convert_from_iu.h file, only used for one define, and containing brokenand duplicate defines. Only convert_to_biu.h is now used.
2016-06-05 13:49:25 +02:00
Maciej Suminski b4ad18a3ea Do not rebuild shaders on each OPENGL_GAL construction. 2016-06-03 15:46:13 +02:00
Maciej Suminski b83c148e10 Delete OpenGL context on GLCanvas subclasses destruction. 2016-06-03 15:46:13 +02:00
Maciej Suminski 68b6da57c0 Removed OPENGL_GAL::instanceCounter. 2016-06-03 15:46:12 +02:00
Maciej Suminski 01f32dd52c GL_CONTEXT_MANAGER class to avoid unexpected GL context switches. 2016-06-03 15:46:12 +02:00
jean-pierre charras 3e2cae946c Corrected wxDC objects used by EDA_DRAW_PANEL_GAL & OPENGL_GAL. 2016-06-03 15:46:11 +02:00
jean-pierre charras e2cc78b2b5 Code cleanup: remove dead code (some removed methods were broken), and update or add comments. 2016-06-01 11:28:07 +02:00
Simon Richter dca358076e Make sure KIFACE_GETTER linkage is consistent
This makes sure that the declaration is always the same within a single
module, so all users have the same idea of whether the symbol is imported.

In all dynamically linked objects, all users should be aware that the
symbol is imported, while in the statically linked bitmap2component
program, no import/export decorations should be used.
2016-05-28 13:10:06 -04:00
Simon Richter b9a6c4988f Avoid conflicting declaration for Pgm()
This function has two conflicting definitions in the "kicad" executable and
the other wrapper programs. As the kifaces can be loaded from either, this
silently assumes compatible data layout for the PGM_KICAD and PGM_BASE
types when passed by reference, which is valid only when the compiler is
aware of the cast.

If the return type is encoded in the symbol name (such as when using the
MSVC compiler), this also causes an error during linking, as the symbol
names no longer match.
2016-05-28 12:57:29 -04:00
Simon Richter 96ec9db5d6 Add missing C++ stdlib headers
The GCC standard library headers often include other headers, which makes
some code compile that forgets to include several headers.
2016-05-28 12:46:29 -04:00
Simon Richter f7fdf43ea8 Use std::atomic for portable locale init counting 2016-05-28 12:46:22 -04:00
jean-pierre charras 1c21410f1f Gerbview: code cleanup (with the help of Mark Roszko's work) 2016-05-25 11:45:55 +02:00
Maciej Suminski 3ca7026aa0 More robust checks for OpenGL canvas visibility. 2016-05-20 12:06:08 +02:00
ejs-ejs f8ae428428 Add Lithuanian language to language list menu. 2016-05-22 12:31:08 +02:00
jean-pierre charras 620ccc5483 Try to fix a compil issue on OSX (no viable conversion from 'const wxString' to 'const wxChar *', in colors.cpp) 2016-05-17 09:10:15 +02:00
Chris Pavlina 445db7da58 Fix uninitialized fields
Coverity: CIDs 102698, 147347, 147349, 147350
2016-05-10 22:36:23 -04:00
Chris Pavlina e9a9a269b4 pcbnew legacy: remove option to hide via drill
Via drills are now shown in all cases, matching GAL behavior, and the option no
longer exists in the preferences dialog.
2016-05-10 16:47:37 -04:00
Chris Pavlina f9386fcbc0 Add support for PCB and footprint format versioning
Currently, kicad_pcb files have a (version ...) tag, but it is ignored. This
commit does the following:

1. Parse the version. If it's later than the last supported version, present an
alternative error message suggesting an upgrade if the file does not load
correctly. The version will be interpreted as an integer YYYYMMDD to suggest
a KiCad release date.

2. Accept a (version ...) tag also in kicad_mod files, but do not write them
yet. If no version tag is present in these files, assume the version to be that
of the current format version at the time of this commit.

This is meant to be merged to the 4.x stable series, and preps for KiCad 5
which will start emitting version tags also in footprints - users with what
will then be 'old stable' will not get a parse error when we introduce this for
footprints, and we can safely increment the format version later.
2016-05-10 15:07:35 -04:00
jean-pierre charras ec096cc1d2 Fix an issue in LOCALE_IO class, used to switch to/back locale "C" when reading/writing files: the back to locale was broken, and created issues in countries using the ',' as fp separator, especially when the non default language was used.
It was reported in many bugs.
2016-05-10 09:11:09 +02:00
Maciej Suminski d9f4877c94 Fixed a crash when starting pcbnew with OpenGL GAL. 2016-05-09 17:23:01 +02:00
Maciej Suminski ce8f400645 Added menu for locking tracks & vias (GAL). 2016-05-09 10:29:06 +02:00
jean-pierre charras 63decd70e6 Minor fixes: Fix a few shadowed local variables, and deprecated warnings is a few dialogs generated by wxFormbuilder (using a very recent wxFormbuilder version, after apr 25, 2016) 2016-05-06 17:15:30 +02:00
Maciej Suminski 06637a17d6 Added 'Reset Grid Origin' hot key (GAL). 2016-05-04 14:59:14 +02:00
Maciej Suminski 8d952f35c6 Fixed text vertical alignment for bitmap font (OpenGL). 2016-05-03 11:58:48 +02:00
Maciej Suminski 09d2d5367a Store grid settings for GAL. 2016-05-02 16:15:25 +02:00
Maciej Suminski ed0b95d710 Added an option change grid style. Refactored DIALOG_SET_GRID. GAL can draw grid using lines or dots now. DIALOG_SET_GRID was refactored to use Transfer{From,To}Window() methods. 2016-05-02 16:15:24 +02:00
Maciej Suminski f3fae70fb2 Removed 'inline' keyword from virtual functions. 2016-05-02 16:15:24 +02:00
Maciej Suminski 58ed0c8cce Improved grid drawing routine (OpenGL). 2016-05-02 16:15:24 +02:00
Maciej Suminski 2f09e0ee40 Alternative version of CACHED_CONTAINER::defragmentResize() Certain GPUs do not support glCopyBufferSubData(), therefore there is an alternative version working with good, old memcpy(). 2016-05-02 16:15:24 +02:00
Maciej Suminski fff3abc9a0 Support for overbars in bitmap fonts (OpenGL GAL). 2016-05-02 16:12:18 +02:00
Maciej Suminski 59fe8df269 Split bitmap text drawing routine into smaller functions (GAL). 2016-05-02 16:12:18 +02:00
Maciej Suminski 5a8adcdf52 Improved testing/profiling code for CACHED_CONTAINER. Switched from wxLogDebug to wxLogTrace. Adjusted CACHED_CONTAINER_TEST levels required for certain tests. Added a test to check used space in the container. 2016-05-02 16:12:17 +02:00
Maciej Suminski 54f3105cfb More changes to CACHED_CONTAINER. Removed m_itemSize field (error-prone, as it had to be synchronized with m_item->GetSize()) Fixed a bug in reallocate() method, changed a bit it is behaviour. VERTEX_ITEM is not stored in the item set if its size is 0. 2016-05-02 16:12:17 +02:00
Maciej Suminski a9c3a1730b Free chunks in CACHED_CONTAINER only if they are really not needed. 2016-05-02 16:12:16 +02:00
Maciej Suminski 702be4903f Vertices are stored in GPU memory (OpenGL GAL). 2016-05-02 16:12:16 +02:00
Maciej Suminski 01912aaabd Minor refactoring in CACHED_CONTAINER. 2016-05-02 16:12:16 +02:00
Maciej Suminski bda3011519 Initial support for bitmap fonts (OpenGL GAL). 2016-05-02 16:04:45 +02:00
Maciej Suminski 82a63a8c2a Fixed the drawing order for selected items in OpenGL GAL. 2016-05-02 15:56:17 +02:00
Maciej Suminski c0465e5519 Instance counter for OPENGL_GAL to avoid double freeing. 2016-05-02 15:56:16 +02:00