Compare commits

..

1021 Commits

Author SHA1 Message Date
Wayne Stambaugh 84427f463c Tag release 5.0.0. 2018-07-13 15:53:52 -04:00
Wayne Stambaugh bded0cfc19 KiCad: make initial minimum main frame width show all icons.
Fixes lp:1780300

https://bugs.launchpad.net/kicad/+bug/1780300
2018-07-13 15:53:03 -04:00
Wayne Stambaugh eaf938c7e9 Pcbnew: fix missing undo when deleting footprint text object.
Fixes lp:1781224

https://bugs.launchpad.net/kicad/+bug/1781224
2018-07-12 09:36:13 -04:00
Carsten Schoenert 3e22e5ccd3 fix misspelled 'an other' -> 'another' 2018-07-11 10:35:35 -04:00
Carsten Schoenert e81faa2d5f fix misspelled 'allow to' -> 'allow one to' 2018-07-11 10:35:14 -04:00
Carsten Schoenert 9f7109826d fix misspelled 'allows to' -> 'allows one to'
Fixup small grammar issues around used 'allows to ...' almost in
code comments.
2018-07-11 10:35:03 -04:00
Carsten Schoenert 9a13dd48af fix misspelled 'Toogle' -> 'Toggle'
A small typo fixup for misspelled word Toogle.
2018-07-11 10:34:53 -04:00
Maciej Suminski 14ce518208 Speed-up Spice model library loading
Thanks to Jeff Wheeler for determining the slow down cause.

Fixes: lp:1779566
* https://bugs.launchpad.net/kicad/+bug/1779566
2018-07-10 20:55:37 +02:00
Maciej Suminski 0013e0cad1 DRC: test for items located on disabled layers
Fixes: lp:1779281
* https://bugs.launchpad.net/kicad/+bug/1779281
2018-07-10 18:24:15 +02:00
jean-pierre charras 840a8b1d36 Eeschema, renumbering components: Fix multiparts IC supply renumber problem.
With "reset but keep order of multi-units parts" option on, these units were incorrectly grouped.

Fixes: lp:1780876
https://bugs.launchpad.net/kicad/+bug/1780876
2018-07-10 17:53:06 +02:00
Baranovskiy Konstantin 5e1605af19 Values of argc and argv transfers to python environment. 2018-07-08 08:10:44 +02:00
Seth Hillbrand 101b68b610 pcbnew: Keep dp placer on initial layer
Changing the layer after starting the differential pair placer should
not change the inital track layer.

Fixes: lp:1779800
* https://bugs.launchpad.net/kicad/+bug/1779800
2018-07-03 08:23:16 -07:00
jean-pierre charras 3df27430c7 Fix eeschema crash when updating fields from libraries, and when a symbol in schematic is not found in libs
Fixes: lp:1779722
https://bugs.launchpad.net/kicad/+bug/1779722
2018-07-02 21:02:27 +02:00
Wayne Stambaugh 520c6116f5 Version 5.0.0-rc3-dev commit. 2018-06-30 11:16:42 -04:00
Wayne Stambaugh 66a489f6b6 Version 5.0.0-rc3 commit. 2018-06-30 11:02:38 -04:00
Martin Aberg 9b1f2447b6 fp_lib_table: explicit assumption by assert
This commit makes an implicit assumption explicit by describing it with
an assert.

Fixes lp:1778426

https://bugs.launchpad.net/kicad/+bug/1778426
2018-06-29 19:36:58 -04:00
Seth Hillbrand b3db6572e8 pcbnew: diff pair filter bugfix
Added required action on the std::remove_if construct to erase elements
matching the filter
2018-06-29 13:05:44 -07:00
Seth Hillbrand 4af699e919 hotkeys: Don't import v4 hotkeys automatically
Hotkey options have shifted some options from context-specific to global
hotkeys.  This causes conflicts with old hotkey definitions.  Instead,
we keep the v5 eeschema/pcbnew hotkeys completely separate.  Users can
still import their custom hotkey files from v4.

Fixes: lp:1778408
* https://bugs.launchpad.net/kicad/+bug/1778408
2018-06-29 11:20:11 -07:00
Maciej Suminski a14b552d89 Eagle PCB import: handle DRC rules where min value > max value
Fixes: lp:1779126
* https://bugs.launchpad.net/kicad/+bug/1779126
2018-06-29 19:53:20 +02:00
Seth Hillbrand eb2857deab Removing pspice from CMakeLists.txt 2018-06-29 09:27:25 -07:00
Maciej Suminski 42d05e21a7 Updated demos
- moved pspice to simulation
- imported netlists in layout files
2018-06-29 14:04:29 +02:00
Simon Richter d3deaf5ff5 Rewrite test for valid characters in names
The ternary operator decays array arguments to pointers, so they can no
longer be assigned to array references.
2018-06-29 09:42:10 +02:00
Maciej Suminski 47c44b4d83 Unselect 'copy default sym-lib-table' when unavailable
It used to be selected as the primary choice even though the option was
disabled.
2018-06-29 09:19:41 +02:00
Maciej Suminski b43b78bdd2 pcbnew: Prevent double items recaching on start
Thanks to Seth Hillbrand for pointing out the issue.

Fixes: lp:1779002
* https://bugs.launchpad.net/kicad/+bug/1779002
2018-06-29 08:51:46 +02:00
Seth Hillbrand 33075e55a4 pcbnew: Draw the clearance outline first
In Cairo, we don't have z-ordering implemented, so we need to draw the
clearance outline first otherwise it will draw a large, grey overlay
that hides the actual track while routing.

Fixes: lp:1779228
* https://bugs.launchpad.net/kicad/+bug/1779228
2018-06-28 20:28:12 -07:00
Seth Hillbrand ce379f56af pcbnew: Remove extraneous OpenMP shared decl 2018-06-28 12:22:41 -07:00
Seth Hillbrand b0b5d91390 pcbnew: fix OpenMP synch issue
Fixes: lp:1778454
* https://bugs.launchpad.net/kicad/+bug/1778454
2018-06-28 09:28:52 -07:00
Seth Hillbrand 0748c118dd pcbnew: Synchronize zone removal
After refilling zones, we need to unconditionally remove the filled
polys from the map because their fills map have changed.  Left-over
filled polygons will not map to current polygons, creating "ghost"
islands in the connectivity.  Removing these can overflow the polygon
count.

Fixes: lp:1778454
* https://bugs.launchpad.net/kicad/+bug/1778454
2018-06-28 08:12:55 -07:00
Jeff Young 246a9286a9 Fix dialogs with wxID_CANCEL as the window ID.
Fixes: lp:1778990
* https://bugs.launchpad.net/kicad/+bug/1778990

Fixes: lp:1778991
* https://bugs.launchpad.net/kicad/+bug/1778991
2018-06-28 08:38:12 -06:00
John Beard 8181646794 Fix -Wshadow warning in sch_sheet_path.cpp
Three instances of variables named "reference" shadow a typedef
within std::vector producing:

warning: declaration of ‘reference’ shadows a previous local [-Wshadow]
 note: shadowed declaration is here
           typedef typename _Alloc_traits::reference  reference;

This patch works around by renaming "reference" to "schReference".
2018-06-28 10:04:43 -04:00
Seth Hillbrand 06ff56325c eeschema: Fix assignment from d30ac2967 2018-06-28 05:58:22 -07:00
Seth Hillbrand 76f151b4d8 Fix issue with prev d83cff63f
Corrected the new/delete idiom
2018-06-27 16:40:57 -07:00
Seth Hillbrand d83cff63f6 fix memory leak
When staging a commit for an object that has already been modified,
there is a Clone() made for the hypothetical entry.  We need to free it
if we are not storing a new entry.
2018-06-27 16:15:27 -07:00
Seth Hillbrand d30ac2967a eeschema: Rescue symbols with illegal chars
When parsing component names, we need to account for the possibility of
illegal characters (e.g. "/", ":") in the names from v4 libraries.  They
are fixed internally by the cache parser but if we don't fix them
in the rescue routine, the symbol won't match it's cache name.

This standardizes all schematic illegal character routines into LIB_ID

Fixes: lp:1774774
* https://bugs.launchpad.net/kicad/+bug/1774774
2018-06-27 14:15:30 -07:00
Wayne Stambaugh 7eea8f808d Minor Pcbnew dialog fixes.
Fix get footprint by name dialog button sizer padding.

Fix export gencad dialog file name, options, and button sizer padding.
2018-06-27 14:28:18 -04:00
Maciej Suminski 80fa480388 Disable the DRC dialog while the checks are running
Closing the DRC dialog while zones are refilled leads to a crash.
Disabling the dialog prevents the crash.
2018-06-27 19:05:06 +02:00
Maciej Suminski f10aa6c857 Use paths relative to the executable on Windows
Paths based on DEFAULT_INSTALL_PATH do not work on Windows,
as in fact there is no default install path, as in case of Unix-based
systems. In such case, the initial paths point to mingw subdirectories
that normally do not exist on user machines.

The patch changes the initial path values to make them relative to
the executable and follow the current Windows installer scheme.

Fixes: lp:1775796
* https://bugs.launchpad.net/kicad/+bug/1775796
2018-06-27 11:02:48 +02:00
Martin Aberg 9d1b5698e9 Standardize "assign footprints" terminology.
ref: 611d5a0dc4
2018-06-26 13:20:02 -06:00
Tomasz Wlostowski 01c2d93a81 pcbnew: don't rebuild dynamic ratsnest when moving items without a net (e.g. board outlines)
Fixes: lp:1778321
* https://bugs.launchpad.net/kicad/+bug/1778321
2018-06-25 16:30:16 +02:00
John Beard 847f4f50b1 Pcbnew python plugins: fix some pad arrays
Fixes some pad array init functions that were not calling the
class hierarchy's init functions correctly.
2018-06-25 09:34:32 -04:00
John Beard 930f3dd74f Documentation: add logo to Doxygen pages
This adds a small KiCad logo in the top left of the Doxygen pages.

54px used as 55px is maximum recommended height for Doxygen logos.

For the main docs and the dev docs, this is easily done in the Doxyfile,
for the Python docs, as that is run from the binary dir, the source dir
is passed as an Environment variable.
2018-06-25 08:23:17 -04:00
jean-pierre charras ef38a198d1 GerbView: incorrect handling of polygon primitive: broken parameters rotation and drill size.
Fixes: lp:1778459
https://bugs.launchpad.net/kicad/+bug/1778459
2018-06-25 11:00:53 +02:00
Andrzej Wolski 1f6f76beb9 Fix overbar drawing for non-italic text
Overbar was always indented inward, regardless if text was italic or not.
2018-06-24 12:01:10 -04:00
jean-pierre charras f785d27498 Eeschema, label editor dialog: fix a very minor cosmetic issue when resizing the dialog. 2018-06-23 17:53:29 +02:00
jean-pierre charras b8bbb15aa1 Eeschema: fix a bug in sheet properties dialog that break the annotation of the symbols inside this sheet (Windows only)
For the path separator in full filename, the sheet filename from the dialog uses the Unix notation,
and the "old" sheet filename uses the default notation (it is the actual filename).

Therefore, on Windows, after closing the dialog, the filename was always seen as modified,
and the hierarchy was incorrectly modified (annotation cleared).
2018-06-23 16:58:00 +02:00
Martin Aberg 47a4099e64 Disable logging at exit on FreeBSD.
This commit fixes a crash on KiCad exit for FreeBSD.

Usage of the wxLog functions in destructors on program generates an
infinite recursive call loop and segfault on this platform.

The workaround is inpired by:
  https://people.freebsd.org/~wpaul/kicad/kicad_instructions.txt

Fixes: lp:1778334
* https://bugs.launchpad.net/kicad/+bug/1778334
2018-06-23 15:11:32 +02:00
Maciej Suminski 73a8d2a9d5 OPENGL GAL: Fixed the iteration condition when drawing triangulated polyset
The loop used an incorrect variable size as the loop limit,
occasionally causing out of bounds accesses.

Fixes: lp:1778288
* https://bugs.launchpad.net/kicad/+bug/1778288
2018-06-23 02:05:21 +02:00
Maciej Suminski 1751e4631c Code formatting 2018-06-23 01:59:49 +02:00
Andrzej Wolski a7cd62ad12 Save through hole pads color to config file
TH Pads color is now user settable, so should be saved in config file.
2018-06-22 11:34:56 -04:00
Seth Hillbrand dd436b658a pcbnew: Thread safety for connections
Moving the mutex to the class from a local variable protects the
connectivity list against corruption from multiple threads computing the
ratsnest.
2018-06-21 09:34:56 -07:00
Seth Hillbrand e2122db587 pcbnew: Clear unused code 2018-06-21 09:20:48 -07:00
Seth Hillbrand cf04d341ec pcbnew: standardize itemlist/zonelist connectivity
The itemlist and zonelist in connectivity can both contain many items,
so both use the same OpenMP routine.  However, we can only clear the
dirty flag when we conduct a full search, including zones.  Otherwise we
missing connections to zones when propogating changed items that are
then marked as not dirty.

Fixes: lp:1777993
* https://bugs.launchpad.net/kicad/+bug/1777993
2018-06-21 09:19:26 -07:00
jean-pierre charras f634b75652 Pcbnew, plot parameters: fix an issue for the "outputdirectory" parameter.
When the outputdirectory string was similar to a number, the .kicad_pcb file was no longer loadable.

Fixes: lp:1777957
https://bugs.launchpad.net/kicad/+bug/1777957
2018-06-21 12:33:51 +02:00
Seth Hillbrand a552b4ccca box2: fix bug in SetMaximum()
When setting the maximum represented box, std::numerical_limits::min
returns the most negative number only for integers.  For floating point,
it returns the smallest positive number.  std::numerical_limits::lowest
is the same as min for integers but returns the most negative number for
floating point as well.
2018-06-20 20:21:03 -07:00
Seth Hillbrand a1ef441dd9 origin viewitem needs to account for size zoom
The origin item doesn't have a fixed size.  It is constant on the screen but
changes the effective BBox size based on the zoom level.
But we can't simply set it to the maximum size as this causes a splitting degeneracy
when compiling for Debian i386.  By modestly adjusting the bbox, we avoid the degeneracy
while keeping the origin visible at all zoom levels

Fixes: lp:1777379
* https://bugs.launchpad.net/kicad/+bug/1777379
2018-06-20 12:08:57 -07:00
Wayne Stambaugh 8394e2b71e Fix broken LIB_ID library nickname illegal character tests.
During the symbol library table implementation, the legal character
tests for the footprint library table were changed and the forward
slash '/' character became illegal.  This change broke editing some
users footprint library tables that already had '/' in library table
nicknames.  This change split the library nickname and library item
name illegal character tests.
2018-06-20 14:36:40 -04:00
Jeff Young 79e0bb08d0 Architecturally-simpler fix for grid context menu unit changes.
Fixes: lp:1777519
* https://bugs.launchpad.net/kicad/+bug/1777519
2018-06-20 16:54:24 +01:00
Wayne Stambaugh 77217b2089 Fix resizing issues of global track and via properties dialog. 2018-06-20 11:39:11 -04:00
Maciej Suminski 44337dec56 pcbnew GAL: Fix bouncing zoom on mouse wheel scroll in Windows
Handling wxEVT_SCROLLWIN_LINE{UP,DOWN} executes the scroll event handler
too many times causing zoom bounces.

Fixes: lp:1562173
* https://bugs.launchpad.net/kicad/+bug/1562173
2018-06-20 16:55:14 +02:00
Seth Hillbrand 147c1e6088 pcbnew: Allow clearing local ratsnest
The local ratsnest needs to be able to hide as well as show visibility.
Clicking a module will toggle the visibility while clicking off all
modules clears the local ratsnest display.

Fixes: lp:1531332
* https://bugs.launchpad.net/kicad/+bug/1531332
2018-06-19 15:12:20 -07:00
Seth Hillbrand 6990824597 pcbnew: Hide routing options that are not available
Options that do not have code implementing them are now hidden from the
user so that they are not searching for ways to enable the greyed out
options.  Similarly, when selecting a routing option that disables
free-mode, we show the effect of disabling the mode in the dialog.
2018-06-19 11:11:18 -07:00
jean-pierre charras f52763f22b Legacy canvas: fix issue when zooming in/out using mousewheel: slightly shifts screen up/down.
It happens only when the 'warp and center cursor on zoom' option is disabled.

Was created after modifying the code in EDA_DRAW_FRAME::AdjustScrollBars(),
making EDA_DRAW_FRAME::RedrawScreen2() not working very well.

(partial fix of bug 1562173)
2018-06-19 19:53:00 +02:00
Tomasz Wlostowski f6f726acab router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click
Fixes: lp:1777688
* https://bugs.launchpad.net/kicad/+bug/1777688
2018-06-19 19:30:03 +02:00
Seth Hillbrand 462549fc84 modedit: Add hotkey to switch arc posture
Allows switching arc clockwise/counterclockwise orientation while
drawing in module editor.

Fixes: lp:1777524
* https://bugs.launchpad.net/kicad/+bug/1777524
2018-06-19 09:42:04 -07:00
Jeff Young 3c7b91b96a Always create grid menu so units are up-to-date.
Fixes: lp:1777519
* https://bugs.launchpad.net/kicad/+bug/1777519
2018-06-19 10:52:36 +01:00
Maciej Suminski 81a5c0e3bf GAL: Show ratsnest lines when dragging
GAL is strict regarding which layers are rendered, therefore to show
ratsnest lines when an item is dragged - the ratsnest layer must be kept
enabled. Ratsnest line visibility is enabled per item and this is the
way to show/hide the lines.

Fixes: lp:1666473
* https://bugs.launchpad.net/kicad/+bug/1666473
2018-06-19 11:29:36 +02:00
Maciej Suminski a08c0ac08c kicad2step: Added minimum distance parameter 2018-06-19 10:37:07 +02:00
Maciej Suminski 7ef97e0bca kicad2step: Simplified unit conversion
Instead of using 'm_inch' flag, dimensions are converted in place.
2018-06-19 10:37:07 +02:00
Maciej Suminski 04a462e48f kicad2step: Converted #defines to constexprs 2018-06-19 10:37:07 +02:00
Maciej Suminski f0b3cf8077 STEP export: Stricter contiguity check
Stricter contiguity check points the user to gaps in the outline.

Fixes: lp:1774351
* https://bugs.launchpad.net/kicad/+bug/1774351
2018-06-19 10:36:21 +02:00
Maciej Suminski 1541cbdf04 kicad2step: Add short segments to fix outline contiguity for arcs
STEP exporter keeps outline contiguous by storing the last point
coordinates and using them as the starting point for the next segment. It
might create a problem for arcs, as one of the arc end points may become
translated (changed to the last outline point), while the remaining
points (center and the other endpoint) are kept original. For large
deltas it renders an arc invalid, as it cannot pass through a modified
endpoint anymore.

To fix this, short segments are added to link the last outline point
with an arc endpoint, but only if the distance between the two is below
a certain threshold. This way the outline is kept contiguous and the arc
end point is unmodified, warranting its correctness.

Fixes: lp:1774351
* https://bugs.launchpad.net/kicad/+bug/1774351
2018-06-19 10:29:18 +02:00
Seth Hillbrand 44c1f5785b pcbnew: Set dp clearance based on netclass
Minimum differential pair clearance should be limited to the netclass
differential pair spacing.  This also cleans up some unused code that
was left over from previous work on differential pair clearances.

Fixes: lp:1673632
* https://bugs.launchpad.net/kicad/+bug/1673632
2018-06-18 14:23:25 -07:00
Jeff Young feebb3a36c Don't double-move module text when parent is also selected.
Fixes: lp:1776871
* https://bugs.launchpad.net/kicad/+bug/1776871
2018-06-18 22:03:39 +01:00
Wayne Stambaugh 11c248a463 Fix a typo made in commit 52734058. 2018-06-18 14:57:01 -04:00
Wayne Stambaugh 52734058a7 Remove string translation wrappers used in commit 94891b75.
Translating internal file name and path strings will almost certainly
result in a bug on MacOS.
2018-06-18 12:14:48 -04:00
Maciej Suminski ba3f2b30ee kicad2step: More diagnostic messages to determine export issues 2018-06-18 17:51:22 +02:00
jean-pierre charras 03fa645743 pic_programmer demo: fix a typo in a symbol name. 2018-06-18 08:12:17 +02:00
Adam Wolf 94891b75f9 Handle STEP export properly on MacOS when launched from standalone pcbnew. 2018-06-17 13:09:33 -04:00
Andrzej Wolski a99eeb44d3 Do not allow setting zero Y size for oval holes 2018-06-17 16:30:14 +02:00
Andrzej Wolski 834d9335dd Do not plot zero width oval holes in Gerber X2 drill files
In case there are zero width oval holes on the PCB,
it is safer to not plot them at all, rather than plotting
with width arbitrarily increased to 10 mils.
This also makes Gerber outputs consistent with Excellon outputs.
2018-06-17 16:26:23 +02:00
jean-pierre charras ae02039ed4 Update pic_programmer demo 2018-06-17 09:28:36 +02:00
Seth Hillbrand 4959f91dac pcbnew: Ensure Connectivity RTree gets updated
When removing items, we perform a two-pass removal, checking first
for the cached rectangle collision.  Then, if we do not find the item
being removed, we perform a second, more expensive pass over the full
tree.  This second pass is required as we cannot be certain that an
item's bbox has not been modified between insertion and deletion.  In
which case, keeping stale pointers in the tree will lead to segfaults.

Fixes: lp:1777246
* https://bugs.launchpad.net/kicad/+bug/1777246
2018-06-16 21:45:55 -07:00
Maciej Suminski 7b7355772e Do not display Interactive Routing Settings dialog twice
The dialog was displayed due to a global TOOL_ACTION and a hotkey
assigned to a top menubar entry. Removing the hotkey from the menubar entry
is not ideal, but less irritating than a dialog showing up twice.
2018-06-15 17:32:00 +02:00
Maciej Suminski 583a9c08c0 Remove duplicated PNS TOOL_ACTIONs to display routing settings 2018-06-15 17:12:15 +02:00
Maciej Suminski 94b6f848bb pcbnew_control.cpp: change C-style asserts to wxCHECK/wxFAIL 2018-06-15 17:11:32 +02:00
Maciej Suminski eb97634bdf Enable 'Delete Item' toolbar icon in the Footprint Editor when the tool is active 2018-06-15 17:10:12 +02:00
Maciej Suminski 7d66dc0cc3 Fixed an assert on pasting items in the Footprint Library Editor
The assert in the title line verifies that an item does not belong to
any DLIST when it is being added to one. Items in clipboard are already
owned by DLISTs, therefore they need to be removed from the original
DLISTs before being added to new ones.
2018-06-15 14:35:55 +02:00
Andrzej Wolski 316ff2898d Fix footprint selection
Commit 72b49acc changed behavior of MODULE::ViewBBox(),
which now includes text fields area. This caused problems
with selecting footprints with relatively large text fields.
This patch fixes this problem by using MODULE::GetBoundingBox instead.

Fixes: lp:1776942
* https://bugs.launchpad.net/kicad/+bug/1776942
2018-06-14 19:32:09 -07:00
Wayne Stambaugh b82bf7c449 Fix minor layout issue in keepout area properties dialog. 2018-06-14 11:12:34 -04:00
Jeff Young b37969f584 Reset tools before switching footprints.
Fixes: lp:1776777
* https://bugs.launchpad.net/kicad/+bug/1776777
2018-06-14 09:55:29 +01:00
jean-pierre charras 0d4d24ed22 Update demos. 2018-06-14 09:52:23 +02:00
Seth Hillbrand 11ab8f6dc1 pcbnew: Fix a couple of duplicate hotkeys 2018-06-13 22:53:06 -07:00
Alexis Lockwood 860a95ca30 Correct my name in AUTHORS.txt and About dialog 2018-06-13 23:10:27 -06:00
Seth Hillbrand f6bd6b1360 3d: Replace glFinish with glFlush
glFinish is meant to ensure every aspect of the screen is fully-drawn
before continuing.  This causes issues with certain chipsets (Intel
4-8k)

glFlush is more of a suggestion that CPU work is complete and the GPU
should complete its work in a "timely" fashion.

We add an additional glFinish call before getting a screenshot as this
will copy the actual data from the card buffer.

Fixes: lp:1775976
* https://bugs.launchpad.net/kicad/+bug/1775976
2018-06-13 15:32:18 -07:00
Seth Hillbrand 4dd2de9057 pcbnew: Prevent mouse capture after actions
After an action is completed that required the screen to pan when the
cursor reaches the edge of the screen, we should release the cursor to
allow the user to move their mouse without panning.

Fixes: lp:1763860
* https://bugs.launchpad.net/kicad/+bug/1763860
2018-06-13 14:05:32 -07:00
John Beard 34c6393b71 Pcbnew Python docs: remove obsolete Doxygen parameters
These two parameters were unused and were producing warings:

* XML_SCHEMA
* XML_DTD
2018-06-13 11:12:24 -04:00
John Beard 41d6fc648d Pcbnew Python: use python super for inherited classes 2018-06-13 11:12:15 -04:00
John Beard 1f04b5fc7d Pcbnew Python: Add PadArray module documentation 2018-06-13 11:12:08 -04:00
John Beard 468d26d9d1 Pcbnew Python: Add plugin documentation
This adds the Python plugin helper classes to the generated
documentation.
2018-06-13 11:12:02 -04:00
John Beard 939450856a Pcbnew FP wizard: add rounded and chamfered box aids
These functions are fairly common drawing operations that otherwise
require fairly complex calculations, which would be better not to
have to repeat.
2018-06-13 11:11:55 -04:00
John Beard 5001b056ac Pcbnew FP wizard: add docstring for parameters
Adds more verbose and complete explanations of the
FootprintWizardBase and FootprintWizardDrawingAids functions.
2018-06-13 11:11:49 -04:00
John Beard 137799165d Pcbnew FP wizard: minor style fixes
This contains only a few minor style fixes according to PEP8
for FootprintWizardBase.py, and some spelling fixes
2018-06-13 11:11:42 -04:00
jean-pierre charras 9302bbce59 Pcbnew: fix a duplicate hotkey (E for edit properties) 2018-06-13 09:46:22 +02:00
jean-pierre charras 5411b951ae Minor compil warning (signed/unsigned compare) fix 2018-06-13 08:05:10 +02:00
Seth Hillbrand bc7bd107d9 Fix a number of untranslated strings. 2018-06-12 17:05:25 -07:00
Seth Hillbrand fb1aa56b77 modedit: Don't activate measure tool without a footprint
There's no risk in measuring an empty footprint but there's no benefit
either.  This matches the measure tool to the other, deactivated
footprint tools.
2018-06-12 16:48:59 -07:00
Seth Hillbrand 04706d9d02 pcbnew: Add placement hotkeys
Assigns configurable hotkeys to the placement commands.

Fixes: lp:1712629
* https://bugs.launchpad.net/kicad/+bug/1712629

Fixes: lp:1167895
* https://bugs.launchpad.net/kicad/+bug/1167895
2018-06-12 16:08:06 -07:00
Seth Hillbrand 47106b6861 pcbnew: Adding meander hotkeys to assignment
Allows increase/decrease spacing/amplitude hotkeys to be
assigned/changed.

Fixes: lp:94fb13aec
* https://bugs.launchpad.net/kicad/+bug/94fb13aec
2018-06-12 16:08:01 -07:00
Seth Hillbrand aae30cc7c1 pcbnew: Hotkey minor fixes
- Ordering of Hotkey list by function
- Use Hotkey assignment instead of hard-coded hotkey for length tuning
- Adjust default Length Tuning settings hotkey to CTRL-L so that we
don't overlap with "Lock" (overlaps are not editable)
2018-06-12 14:22:46 -07:00
Seth Hillbrand 70506cc31d pcbnew: Standardize HK display in Routing
Routing menu should display assigned hotkeys for all items, not just
route track.
2018-06-12 14:22:32 -07:00
Seth Hillbrand e95d06e811 OCC: Fix issues for OpenCascade 7.3
OpenCascade 7.3 deprecates some TK libraries that were not required by
KiCad, therefore we should not include them in the compile.

Also correct missing compiles for STEP import/export induced by 584409b2e when using OCCT.  There is no effect on OCE to this change.
2018-06-12 10:03:13 -07:00
jean-pierre charras cee313da8c Pcbnew: legacy canvas: make trace len display working while creating the trace.
Previously, the full trace length was always displayed as 0 during track creation in the info canvas.
2018-06-12 18:21:46 +02:00
Seth Hillbrand 5de246c5be Add handlers for scrollbar events
Fixes: lp:1776120
* https://bugs.launchpad.net/kicad/+bug/1776120
2018-06-12 08:53:50 -07:00
Maciej Suminski 72b49acccf Commit supplementing 9605dd8e
Once SELECTION_TOOL has been changed to use EDA_ITEM::GetBoundingBox(),
selection area had to cover the footprint and its ref/value texts,
even hidden ones. To fix this, ref/val strings are taken into account
only in the ViewBBox().
2018-06-12 17:40:56 +02:00
jean-pierre charras e624bbae8a fix test_002_board_class.py according to changes (fixes) in bounding box track calculations 2018-06-12 17:21:03 +02:00
Wayne Stambaugh ade3c2b129 Minor Python scripting documentation fixes.
Change the Doxyfile project name from KiCAD to KiCad.  It doesn't look
very good when we don't get the project name capitalization correct.

Clean up trailing whitespace in some of the helper scripts and Doxyfile.
2018-06-12 10:24:59 -04:00
Jeff Young 660aed71b4 Make sure initially loaded footprint is rendered.
Also sets the initial footprint to the current footprint when
doing a Choose Footprint from the Eeschema Edit Property
dialog.

Fixes: lp:1776126
* https://bugs.launchpad.net/kicad/+bug/1776126
2018-06-12 13:41:53 +01:00
John Beard 16411c8c1e Fix -Wparentheses in track_cleaner.cpp
Changes "wxBusyCursor( dummy );" to just "wxBusyCursor dummy;"

Fixes warning: ../pcbnew/tracks_cleaner.cpp:155:17:
warning: unnecessary parentheses in declaration of ‘dummy’ [-Wparentheses]
     wxBusyCursor( dummy )
2018-06-12 14:23:59 +02:00
Maciej Suminski 9605dd8e1d Fix selection clearance for via and tracks
- fixed via bounding box calculation in TRACK::GetBoundingBox()
- moved clearance to TRACK::ViewBBox()
- modified the Selection Tool to use EDA_ITEM::GetBoundingBox() rather
than VIEW_ITEM::ViewBBox() to determine selection

Fixes: lp:1776314
* https://bugs.launchpad.net/kicad/+bug/1776314
2018-06-12 10:59:30 +02:00
jean-pierre charras 5d276a43f6 PCB_EDIT_FRAME::EraseRedundantTrack() Fix incorrect detection of the new trace boundaries in a specific case.
It happens if the first segment of the new trace is inside a pad: the other segments are not found.
And the erased trace is not the right trace.

However this fix is more a workaround than a fix: currently the detection of the trace boundaries (BOARD::MarkTrace())
does not work very well for segments inside a pad.

Fixes: lp:1776121
https://bugs.launchpad.net/kicad/+bug/1776121
2018-06-12 10:05:12 +02:00
Seth Hillbrand 4186626069 Fix overzealous checking in 2798035f8
Checking for NULL fields prevents a useful dialog from being displayed
now that the exception is handled.
2018-06-11 20:49:13 -07:00
Seth Hillbrand 2798035f85 eeschema: Catch parameter errors in SPICE sim
Any errors in the dialog should be handled and, at worst, allowed to
redo.  SPICE_VALUE throws KI_PARAM_ERROR, so we catch that explicitly.

Fixes: lp:1776051
* https://bugs.launchpad.net/kicad/+bug/1776051
2018-06-11 18:02:20 -07:00
Seth Hillbrand 61c3bc4af4 pcbnew: Don't stage undo commits on new items
New items just being placed on the board are still temporary.  Although
we can modify their orientations/positions, we can't stage these changes
for undo/redo without corrupting the undo stack.

Fixes: lp:1776312
* https://bugs.launchpad.net/kicad/+bug/1776312
2018-06-11 16:43:30 -07:00
John Beard 896ad3774d "Select Connection" menus enablement
Previously, the "Select Connection" sub-items were greyed out when the
selection contained both tracks and vias. This meant that you couldn't
access "Select Copper Connection" when the selection contained both
tracks and vias (though the keyboard shortcuts did work).

Change to use SELECTION_CONDITIONS::OnlyTypes( GENERAL_COLLECTOR::Tracks
) to allow any combination of track elements to be selected.

Fixes: lp:1772249
* https://bugs.launchpad.net/kicad/+bug/1772249
2018-06-11 10:58:26 -07:00
John Beard 0555bbc656 Pass PCB display settings to PNS router tool
This allows the tool to set display options like the clearance.

Fixes: lp:1766836
* https://bugs.launchpad.net/kicad/+bug/1766836
2018-06-11 10:48:05 -07:00
Jeff Young 8a2639325d Update footprint value when doing a Save As to library.
Fixes: lp:1570120
* https://bugs.launchpad.net/kicad/+bug/1570120
2018-06-11 14:43:32 +01:00
Jeff Young 5c65881fde Allow Global Fields Editor to Cancel with no changes. 2018-06-11 12:10:19 +01:00
Ben Gamari da61285a29 field editor: Save checkbox states
This refactors the symbol field editor's checkbox state-saving code to
deal with multiple projects with disjoint field sets more consistently.

For instance, imagine I have a two projects

 * Proj1 has fields A, B, C
 * Proj2 has fields A, B, D

Under the old scheme, when I switch from one project to the other the
state of fields C and D will be forgotten. With the new approach,
however, they are retained.

Not to mention, the implementation is considerably simpler.  Fixes
2018-06-11 12:08:59 +01:00
Jeff Young de7791cc8b Add context menu to footprint viewer for zoom & grid.
Fixes: lp:1776126
* https://bugs.launchpad.net/kicad/+bug/1776126
2018-06-11 11:37:48 +01:00
Maciej Suminski 813c1a2ba2 Dealing with inconsistent wxGLCanvas::IsDisplaySupported()
wxGLCanvas::IsDisplaySupported() handles wxGL_{MINOR,MAJOR}_VERSION
attributes only in 3.0.4. Since 3.1.0 the attributes are apparently not
supported, so instead wxGLContext::IsOK() is used (introduced in 3.1.0).

Fixes: lp:1775995
* https://bugs.launchpad.net/kicad/+bug/1775995
2018-06-11 12:26:59 +02:00
Ben Gamari 3f783d2318 field editor: Find components when reference field is clicked
This makes it significantly easier to find a particular component when
using the field editor, as I often do for part selection.

Fixes: lp:1772169
* https://bugs.launchpad.net/kicad/+bug/1772169
2018-06-11 10:27:49 +02:00
Maciej Suminski 850aac5ec5 Set OpenGL_GL_PREFERENCE for CMake 3.11+ 2018-06-11 10:27:49 +02:00
Jeff Young 9edfd25b95 Select best-matching component when filtering.
This also fixes the old bug of scrolling to the selected best
match.

Fixes: lp:1774110
* https://bugs.launchpad.net/kicad/+bug/1774110

Fixes: lp:1744703
* https://bugs.launchpad.net/kicad/+bug/1744703
2018-06-10 23:21:05 +01:00
Damien Espitallier 0e3be5776c Add library name pseudo-hash in fp_list_table GenerateTimestamp output 2018-06-09 16:18:40 +01:00
Simon Richter 8444b1b617 Add missing header 2018-06-08 17:15:17 -07:00
Jeff Young b9874da3a6 Remove background fp loading from Choose Symbol dlg.
There are a bunch of problems with event processing and closing
documents, etc., when enabled.  See the bug report for more
info.

Fixes: lp:1774777
* https://bugs.launchpad.net/kicad/+bug/1774777
2018-06-09 00:51:39 +01:00
Jeff Young 5098c5796a Prevent another case of "fall behind" dialogs. 2018-06-09 00:51:39 +01:00
Seth Hillbrand c5c52c3dfd pcbnew Check for valid nodes before drawing ratsnest
We can invalidate a node by rotating.  Make sure that our endpoints for
the ratsnest are valid before attempting to draw.

Fixes: lp:1775727
* https://bugs.launchpad.net/kicad/+bug/1775727
2018-06-08 16:34:37 -07:00
Seth Hillbrand fb9ccd855d eeschema: Check for dangling ends when switching sheets
When you search for an item that exists on a separate sheet in the
schematic, the newly loaded schematic sheet needs to have the dangling
flags set so that we don't have a mess of non-connected "o" markers.
2018-06-08 12:51:54 -07:00
Seth Hillbrand 72238e260a Fix overload compile warning 2018-06-08 11:25:27 -07:00
Seth Hillbrand 7558c71aca When clearing annotations, keep units
Clearing annotations should only clear the settings that can be set by
the matching annotate function.  Even in components where the units are
functionally the same, the unit choice should be retained as there are
often other considerations when chosing the unit.

Fixes: lp:1769457
* https://bugs.launchpad.net/kicad/+bug/1769457
2018-06-08 10:51:56 -07:00
Seth Hillbrand 68f6e3ad44 pcbnew: Differential pairs obey netclass settings
PNS routing options allow trace width to be chosen by the assigned
netclass.  This extends that to differential pair width/gap settings as
well.

Fixes: lp:1672126
* https://bugs.launchpad.net/kicad/+bug/1672126
2018-06-07 08:58:12 -07:00
jean-pierre charras 6d77e594b5 Python binding: fix pcbnew.Refresh() to make a better re-initialization.
Minor fixes in comments.

Fixes: lp:1775003
https://bugs.launchpad.net/kicad/+bug/1775003
2018-06-07 10:04:29 +02:00
Seth Hillbrand a5b92a1fe4 Constrain dimension tool while creating
The dimension tool is optionally constrained (MD_CTRL) while editing the
dimension.  This ensures same behavior for the creation step.
2018-06-06 17:04:28 -07:00
Seth Hillbrand 40d2535625 Recalculate ratsnest when moving footprint in legacy
Legacy shows the local ratsnest when moving a footprint.  Therefore we
need to recalculate it when the move ends.

Fixes: lp:1775473
* https://bugs.launchpad.net/kicad/+bug/1775473
2018-06-06 15:40:58 -07:00
Seth Hillbrand abd8927d71 Dimension Edit window passes default action
Processing enter from within the dimension editor window is only set to
the default action for top-level items.  Within the sizer, enter is
handled by the first registered button (Cancel) unless explicitly set.

Fixes: lp:1774035
* https://bugs.launchpad.net/kicad/+bug/1774035
2018-06-06 12:31:48 -07:00
Seth Hillbrand a5c213c23d Set footprint splitter window canvas to transient
The splitter window can not be the parent to any additional windows.
If it acquires a child that persists past the lifetime of the splitter
window, we get a segfault.
2018-06-06 10:03:00 -07:00
Maciej Suminski 64e98c8e54 Fixed Symbol Library editor crash on start
Added a null pointer check missing in 51c7381f

Fixes: lp:1775414
* https://bugs.launchpad.net/kicad/+bug/1775414
2018-06-06 17:01:06 +02:00
Maciej Suminski 228881f552 Eagle SCH import: validate package (footprint) names 2018-06-06 10:12:04 +02:00
Maciej Suminski 51c7381fd5 Fix Choose Symbol dialog freezes in eeschema
Scrollbars are always enabled to prevent an infinite event loop caused
by alternating CreateLayout() and OnSize event handler.
More details: http://trac.wxwidgets.org/ticket/18141

Fixes: lp:1767848
* https://bugs.launchpad.net/kicad/+bug/1767848
2018-06-06 09:11:15 +02:00
Jeff Young 9552e02727 Handle description when reading netlist. 2018-06-06 01:59:56 +01:00
Jeff Young 271826f8f3 Fix crash when deleting from library with nothing selected.
Fixes: lp:1775289
* https://bugs.launchpad.net/kicad/+bug/1775289
2018-06-06 00:01:47 +01:00
Damien Espitallier 5263558eaa Fix crash when delete button of footprint filter is clicked and no footprint is selected
Fixes: lp:1775296
* https://bugs.launchpad.net/kicad/+bug/1775296
2018-06-06 00:01:47 +01:00
Jeff Young a300006956 Fix dialog layout of Add 3D Shape.
Fixes: lp:1747652
* https://bugs.launchpad.net/kicad/+bug/1747652
2018-06-06 00:01:47 +01:00
Jeff Young e0c881b639 Output descriptions to components in generic netlist.
Also hooks up the Python netlist reader to the descriptions so
that they appear correctly in BOMs.  (The BOM generators used
to always get the root component's description rather than the
alias's description.)

Fixes: lp:1774358
* https://bugs.launchpad.net/kicad/+bug/1774358
2018-06-06 00:01:47 +01:00
Jeff Young aaf47bbe71 Replace "unsaved changes" dialog to Global Fields Editor. 2018-06-06 00:01:47 +01:00
Seth Hillbrand 7d62f14dd0 Set ViewBBox to viewitem size
Limit the bbox size of origin view item to item size.  This prevents
excessive redraw.

This also side-steps a degeneracy in the RTree calculation under certain
conditions in i386 where multiple, maximum-sized items are degenerate.

Fixes: lp:1774316
* https://bugs.launchpad.net/kicad/+bug/1774316
2018-06-05 15:35:58 -07:00
Seth Hillbrand 9e4511eb11 Update netclasses when loading footprint
When clearing the pcb in footprint editor, we need to transfer the
netclass settings to ensure we have the correct defaults for the new
footprint.

Fixes: lp:1751583
* https://bugs.launchpad.net/kicad/+bug/1751583
2018-06-05 12:44:43 -07:00
jean-pierre charras 9354372a0c Fix bug: Pcbnew crash on invoking footprint browser when already open (happens only in some distros)
Fixes: lp:1775178
https://bugs.launchpad.net/kicad/+bug/1775178
2018-06-05 20:05:56 +02:00
jean-pierre charras da392728d4 spice_value.cpp: replace std::invalid_argument by KI_PARAM_ERROR (replacement forgotten in commit a288d6199)
see commit a288d6199 for the reasons of this replacement.
2018-06-05 16:07:47 +02:00
jean-pierre charras a288d6199e Add KI_PARAM_ERROR, similar to std::invalid_argument but using wxString instead of std::string to throw errors.
std::invalid_argument does not work fine with translated strings as argument for message.
(the translated message is incorrectly or not displayed if it contains non ascii8 chars, at least on Windows).
KI_PARAM_ERROR can be throw-ed with a translatable/translated string (a wxString)
2018-06-05 13:29:51 +02:00
John Beard 58814e838d Common: Fix -Wcatch-value warnings (catching exceptions by value)
This fixes some warnings on GCC 8.1:

warning: catching polymorphic type ‘class std::out_of_range’ by value [-Wcatch-value=]
         catch( std::out_of_range )
                     ^~~~~~~~~~~~

This fix is along the same lines as:

* ff1802d7a "Fix Coverity "Big parameter passed by value" warnings"
2018-06-05 11:46:17 +02:00
Seth Hillbrand f95b77b61a Fix overflow on 32-bit machine
Bitmap hash incorrectly shifted by 60 bits on 32 bit machines while only
shifting 28 bits on 64 bit machines.
2018-06-04 16:41:16 -07:00
Seth Hillbrand ee34aab07a Async hardening
There are three related changes here to harden our handling of threads
in the footprint async loader.

1) Footprint async loader explicitly aborts any remaining loader threads
on exit.

2) We protect the thread join by a mutex

3) We do not pause during no-wait routines
2018-06-04 15:08:40 -07:00
Seth Hillbrand 39ac5e0af8 Pcbnew: List nets fix calculation speed
Similar to 6e5726613, we need to find net node count quickly without
iterating over all items in the board.
2018-06-04 11:08:54 -07:00
Wayne Stambaugh 7343e78347 Fix some Coverity uninitialized field warnings.
Fixes Coverity CIDs:

- 175824
- 169337
- 163191
- 175827
- 175440
- 175438
- 157136
2018-06-04 13:48:57 -04:00
Seth Hillbrand 5dbfa6a9c1 Correct node/pad count in pcbnew
Pads count all pads/pins on the board including unconnected and NPTH.
Nodes count only the pads that can connect to a net and are therefore
routable.  These were being calculated as the same number (displayed in
the info bar at the bottom of the screen)
2018-06-04 10:26:40 -07:00
Wayne Stambaugh ff1802d7a1 Fix Coverity "Big parameter passed by value" warnings.
Fixes Coverity CIDs:

- 175846
- 175841
- 175840
- 175837
- 175836
- 175834
- 102524
2018-06-04 12:30:00 -04:00
Seth Hillbrand 63a952d239 Adjust connectivity to use RTree
Connectivity searches were slow for large, complex boards.  This was
partly due to the need to search all lists for possible connections
between anchors.

We remove this requirement by creating an RTree based on items' bounding
boxes similar to the PNS router.  Then we get both the colliding items
and search forward/backward to see if there are connections between the
anchors and the other item.

Because we use RTree, we no longer need the maintenance overhead of multiple
item lists and an anchor list in the connectivity class.

Fixes: lp:1701791
* https://bugs.launchpad.net/kicad/+bug/1701791

Fixes: lp:1769408
* https://bugs.launchpad.net/kicad/+bug/1769408

Fixes: lp:1761989
* https://bugs.launchpad.net/kicad/+bug/1761989
2018-06-04 08:30:07 -07:00
Wayne Stambaugh 6f65f835f4 Fix assert in CvPcb when opening footprint equate file dialog.
Fixes lp:1774726

https://bugs.launchpad.net/kicad/+bug/1774726
2018-06-04 10:09:06 -04:00
Maciej Suminski e4a6f2e523 Switch canvas to Cairo if OpenGL is not supported on the first run 2018-06-04 12:17:58 +02:00
Maciej Suminski 6bd708621b Early check of supported OpenGL version 2018-06-04 12:17:58 +02:00
jean-pierre charras 0b8cf93888 Pcbnew, On line DRC in legacy canvas: Fix broken Drc test during track and zone creation or edition.
It was broken by commit c78171d01f.
During creation, the Drc must only display a error message, and do not create markers.
Markers are created only during a full board DRC test.
commit c78171d01f replaced this behavior by a incorrect one (create markers and do not show error messages)
2018-06-04 11:20:11 +02:00
Maciej Suminski 27c9c6ceed Enable the accelerated canvas on the first gerbview run if requested
Commit 8910894f applied to gerbview.
2018-06-04 10:47:44 +02:00
Maciej Suminski 8910894fab Enable the accelerated canvas on the first pcbnew run if requested
Fixes: lp:1769143
* https://bugs.launchpad.net/kicad/+bug/1769143
2018-06-04 10:41:34 +02:00
jean-pierre charras d3c41dd247 Remove dead code. 2018-06-03 19:55:03 +02:00
Seth Hillbrand 0a91f0bc9c Add 45º constraints to lines when moving with CTRL
Fixes: lp:1774750
* https://bugs.launchpad.net/kicad/+bug/1774750
2018-06-02 15:52:18 -07:00
Seth Hillbrand 975e777149 Fix threaded race condition in footprints
The progress reporter should not be cleared in the footprint
implementation to prevent dereferencing a NULL.

When cancelling the load, we should only allow setting of cancellation
to true to prevent a condition where the progress reporter resets
the cancellation.

Fixes: lp:1774777
* https://bugs.launchpad.net/kicad/+bug/1774777
2018-06-02 15:05:36 -07:00
jean-pierre charras 6e57266136 Pcbnew: optimize BOARD::SortedNetnamesList() for a must faster calculation time.
It is mainly used in copper zones dialog editor,
and previously created a noticeable delay to show this dialog with large boards (more than 900 nets)
2018-06-02 18:14:34 +02:00
Jean-Samuel Reynaud d4393b2813 Fix incorrect Eeschema BOM plugins install path on Linux.
Fixes lp:1697041

https://bugs.launchpad.net/kicad/+bug/1697041
2018-06-01 14:09:08 -04:00
jean-pierre charras 8f984c2899 OpenGL, DrawGrid(): use grid and axis alpha color value setting, instead of the fixed 1.0
In Cairo mode, this function uses already the alpha color value setting.
Now for low alpha values (usually they are low, as said in many GAL comments),
Cairo mode and OpenGL mode should have a similar look.
2018-06-01 18:29:04 +02:00
Seth Hillbrand 3cf9009f73 Delete GL context in GL destructor not program
Also lock the DeleteAll call with mutext to protect threaded access.

The OpenGL contexts are removed when OPENGL_GAL class is destroyed.
Explicitly deleting all contexts prior to destroying the OPENGL_GAL
class causes an assert when the destructor tries to lock its context
prior to cleaning up OpenGL memory.  In most cases, an unhandled assert
in a destructor-called function will simply exit the destructor.

Python thread cleanup will also attempt to close the context.  This can
cause a race condition with multiple threads accessing/deleting the
canvas.

Fixes: lp:1774096
* https://bugs.launchpad.net/kicad/+bug/1774096
2018-06-01 09:14:36 -07:00
jean-pierre charras bfa89039c4 Gerbview, GAL mode: fix "Zoom to fit" area size calculation when nothing is loaded.
Also ensure the worksheet is displayed after clearing the gerber layers.
2018-06-01 11:39:08 +02:00
jean-pierre charras 9a228d8ec9 Gerbview: GAL mode: shows the page worksheet, similar to legacy mode. 2018-06-01 09:11:43 +02:00
jean-pierre charras fc71fc6474 Gerbview: Fit to page: use the page size when nothing is loaded.
Previously, due to a minor bug, a very small default size was used (therefore a high zoom value), that was not a good choice.
2018-05-31 11:22:33 +02:00
Maciej Suminski 7c49bcd3a6 Clear selection before deleting DRC markers
Pcbnew crashes when a selected DRC marker is deleted. This a possible
fix to lp:#1773863.
2018-05-31 09:32:43 +02:00
Maciej Suminski f51f30fb1e eeschema: Disabled an assert checking if project path is empty
Empty project path is a valid case when eeschema is executed in
standalone mode without any file loaded.

There were no observed harmful consequences of running eeschema without
the project path set, but to stay safe the project specific
sym-lib-table load code is executed only when the project path is set.
2018-05-31 09:09:01 +02:00
Maciej Suminski c5cde53dff Symbol Editor: fixed a crash when modifying a symbol
In the scenario described in the bug report, the SCH_SCREEN current item
pointer stores an address of a stale object that had been deleted when
the symbol was reloaded. To prevent the crash, the current item pointer
is reset whenever a symbol is loaded.

Fixes: lp:1774296
* https://bugs.launchpad.net/kicad/+bug/1774296
2018-05-31 09:01:59 +02:00
Seth Hillbrand 3ce8a4856a Remove ToLayer_ID calls from color checks
Colors are assigned to virtual layers while the ToLayer_ID returns a
physical layer enum.  The GetLayerColor/SetLayerColor take LAYER_NUM
(int) values that can be larger than the physical layer count.
2018-05-30 13:51:20 -07:00
Jeff Young d90d4ff682 Fix bugs in Export to SVG.
We were trying to handle aOnlyOneFile at two different levels
which was preventing the Silk layer from going through the
right routine (and preventing board outlines from getting
drawn if selected).

We were also overwriting the references color local variable
before using it, meaning the reference was always rendered in
the value's color.

Fixes: lp:1774171
* https://bugs.launchpad.net/kicad/+bug/1774171
2018-05-30 20:49:05 +01:00
Seth Hillbrand fe1f837d0c Limit zoom out
We limit the minimum zoom to Z=0.3.  Minimum preset zoom level is 0.31,
so 0.3 is only reachable using the mouse wheel.  Smaller than 0.18, GAL
does not display properly.

Fixes: lp:1773215
* https://bugs.launchpad.net/kicad/+bug/1773215
2018-05-30 11:24:35 -07:00
Seth Hillbrand eeb273faa0 Partial revert of 3804f6 to correct assert change
ToLayerID function converts to PCB_LAYER_ID and needs to check against
that enum instead of GAL_LAYER_ID.
2018-05-30 09:17:51 -07:00
Baranovskiy Konstantin 36504b3071 SymLibEditor: synced state of search tree tool button with its panel
Button "Toggle the search tree" from left toolbar of Symbol Library
Editor does not show actual state of visibility of the search tree
panel. State of this button (checked or unchecked) changes on clicking
only. Toggling panel visibility from menu does not make effect on tool
state.

Applied changes makes tool state (checkd/unchecked) synced with panel
state (shown/hidden).
2018-05-30 16:55:55 +02:00
Jeff Young d03e92a3a2 Field Name Template (aka Default Fields) fixes.
Move from a "default" fields model to a "seed" fields model.  See
discussion on devlist:
https://lists.launchpad.net/kicad-developers/msg35823.html.
2018-05-30 09:46:52 +01:00
Maciej Suminski 8c63dac0c3 Component Chooser: do not create FP list when the FP preview is disabled 2018-05-30 09:53:58 +02:00
jean-pierre charras 52fceb3243 Eeschema: sheet filename renaming: fix a old issue that can set incorrect filenames in sheets inside a complex hierarchy.
Fixes: lp:1773500
https://bugs.launchpad.net/kicad/+bug/1773500
2018-05-29 19:57:18 +02:00
jean-pierre charras ce9cc4ea38 plot board: fix a stupid bug created by commit dfa91752 2018-05-29 19:51:50 +02:00
Maciej Suminski c5f56ef573 Eagle PCB import: made warning strings translatable 2018-05-29 15:02:26 +02:00
Maciej Suminski d2436e7478 Corrected "Add footprint library" dialog file filters
Fixes: lp:1773969
* https://bugs.launchpad.net/kicad/+bug/1773969
2018-05-29 15:02:26 +02:00
jean-pierre charras dfa9175209 Fix incorrect mask size for rectangular and trapezoid pads.
Fixes: lp:1773926
https://bugs.launchpad.net/kicad/+bug/1773926

Fixes: lp:1773961
https://bugs.launchpad.net/kicad/+bug/1773961
2018-05-29 13:45:45 +02:00
jean-pierre charras 71e64de3a4 gerber plot: fix incorrect string attribute for BGA pads on copper layer 2018-05-29 12:30:52 +02:00
Maciej Suminski 94f161b8c2 Eagle SCH import: validate imported symbol names
Fixes: lp:1753189
* https://bugs.launchpad.net/kicad/+bug/1753189
2018-05-29 09:29:22 +02:00
Maciej Suminski e789523632 Eagle SCH import: do not crash if nothing was imported 2018-05-29 09:29:21 +02:00
Jeff Young a12b9db584 Map Eagle values to fab layers.
Fixes: lp:1773256
* https://bugs.launchpad.net/kicad/+bug/1773256
2018-05-28 20:37:52 +01:00
Jeff Young f914558e7b Remove overly-strict assert.
Fixes: lp:1773807
* https://bugs.launchpad.net/kicad/+bug/1773807
2018-05-28 20:37:14 +01:00
Maciej Suminski a8db21319f Spice Simulator: set correct scale for constant plots
Fixes: lp:1772278
* https://bugs.launchpad.net/kicad/+bug/1772278
2018-05-28 16:42:15 +02:00
Marco Ciampa 2cb65f9c19 Make the Simulator error strings translatable 2018-05-28 14:51:10 +02:00
jean-pierre charras da66005254 Pcbnew, plot dialog: avoid slightly change in hpgl pen diameter (due to inch/mm conversion error) when the hpgl format is not selected 2018-05-26 17:36:07 +02:00
jean-pierre charras 7db88126c5 hpgl plot parameters: use double instead of int to store the pen diameter to avoid truncation.
This parameter, always in mm in a hpgl file, is for historical reasons stored in mils,
and using a int to store it created annoying rounding errors.
2018-05-26 09:37:42 +02:00
Seth Hillbrand da061718e5 Remove constraint on circle
Allows circle radius to snap to arbitrary points while editing

Fixes: lp:1773436
* https://bugs.launchpad.net/kicad/+bug/1773436
2018-05-25 12:30:47 -07:00
jean-pierre charras c614f73c50 HPGL plotter fix incorrect scaling factor
A 0.4% scale error in hpgl plots was previously existing since a long time.

Fixes: lp:1772828
https://bugs.launchpad.net/kicad/+bug/1772828
2018-05-25 20:50:00 +02:00
jean-pierre charras 250d958ebb Plot dialog: fix broken dialog management.
Previously, the dialog was created only once, with the current board setup and the current units selection.
Therefore, after changes in board or units, the dialog was really broken.

Now, the dialog is recreated when the plot command is run.
2018-05-25 19:48:07 +02:00
Jeff Young cd5f727880 Fix off-by-1 errors in zoom menus & use zoom steps in GAL canvas.
Also bumps the maximums a bit (at user request).

Fixes: lp:1773215
* https://bugs.launchpad.net/kicad/+bug/1773215
2018-05-25 13:01:58 +01:00
Jeff Young b89f6d4af3 Decrease allowed coverage ration when zones are involved.
A perfect solution would create holes in the coverage map
for the zone edges and handles, but that's a lot more
work.

Fixes: lp:1773204
* https://bugs.launchpad.net/kicad/+bug/1773204
2018-05-25 13:01:58 +01:00
Maciej Suminski 61597db12d Make the Simulator dialog strings translatable 2018-05-25 11:24:25 +02:00
Maciej Suminski 32f599654f Fixed normalizeAbsolutePaths() condition
normalizeAbsolutePath() used an invalid condition to
verify that the tested paths are on the same volume.
2018-05-25 11:07:51 +02:00
Maciej Suminski 145835661b Replaced footprint library wizard with a common file browser
As of v5 footprint library reorganization (one repo per library concept
is replaced with a common repo for all libraries), the Footprint Library
Wizard may handle only the old libraries. It has been replaced with
a file browser to select only local files.

Fixes: lp:1772209
* https://bugs.launchpad.net/kicad/+bug/1772209
2018-05-25 08:51:46 +02:00
Maciej Suminski adc61024d3 DIALOG_FILE_DIR_PICKER: dialog to select both files and directories
wxWidgets offers two dialog types: wxFileDialog and wxDirDialog, one
to select files, the other to select directories, but neither of them
handles both. DIALOG_FILE_DIR_PICKER fills that gap.
2018-05-25 08:51:45 +02:00
Jeff Young 81af2db614 Even out the Gerbveiw zoom steps and increase the max.
Fixes: lp:1773215
* https://bugs.launchpad.net/kicad/+bug/1773215
2018-05-24 19:04:10 +01:00
Jeff Young cb925a6646 Output defined default fields to netlists & BOMs.
Fixes: lp:1746814
* https://bugs.launchpad.net/kicad/+bug/1746814
2018-05-24 18:24:59 +01:00
jean-pierre charras 6090f9001e netinfo.i: fix incorrect position of a declaration, that was not taken in account.
Fixes: lp:1544750
https://bugs.launchpad.net/kicad/+bug/1544750
2018-05-24 09:43:04 +02:00
Jeff Young 8f5cb32598 Don't write empty fields from Global Edit Fields dialog. 2018-05-23 21:35:23 +01:00
Seth Hillbrand cf2a07559d Safely release thread memory
When starting async processes, we need to have a way to stop the process
before releasing memory.  Descoping FOOTPRINT_ASYNC_LOADER while the
threads were still running could cause crashes depending on the memory
structure.  To avoid this we define clear procedures for exiting a
running async processes and call these when exiting.

Fixes: lp:1772909
* https://bugs.launchpad.net/kicad/+bug/1772909
2018-05-23 08:55:55 -07:00
Maciej Suminski 190d4d6f55 Eagle PCB import: disable copper pour for imported *Restrict layer polygons
Fixes: lp:1772245
* https://bugs.launchpad.net/kicad/+bug/1772245
2018-05-23 17:51:49 +02:00
jean-pierre charras 3893c43eb0 Fix compil issues. 2018-05-23 11:31:13 +02:00
jean-pierre charras ca548809da Fix a qa test issue related to pad hit test. 2018-05-23 09:17:35 +02:00
Seth Hillbrand 8506cdf3ae Avoid numerical dereference of selections
The SELECTION is a std::set.  Numerical dereference of item n is O(n) as
the iterator is not random access.  Therefore, a for loop using
numerical dereference is O(n!) and quickly slows.

We avoid this by storing items to remove separately while iterating and
then removing the items after we complete.

Fixes: lp:1692081
* https://bugs.launchpad.net/kicad/+bug/1692081
2018-05-22 16:37:45 -07:00
Seth Hillbrand 8d52dc9451 Avoid re-checking items already selected
If you select a track with many segments (e.g. a length-tuned track) and
then select all connected items again ('U' -> 'U'), we would iterate
over all items in the selection and mark connections for each of the n
segments n separate times.

We avoid this by using the marked flag to show when the segment has
already been visited by the routine.  This means that if the segment has
been checked for connections because it was connected to the previous
item, it won't be checked for connections again.  However, a selection
that interleaves items from multiple connection segments will still
(potentially) be multiply checked as the BUSY flag is cleared each time
there is one not-BUSY track in the selection.
2018-05-22 16:26:52 -07:00
Seth Hillbrand b625d29151 Only search pads when the position hits module
On large boards with high pad-count modules, searching each pad for hits
becomes expensive.  We eliminate many of the pad searches by first
checking the module's bounding box before iterating over pads to look
for hits.
2018-05-22 15:37:24 -07:00
Seth Hillbrand 8c5037a48b Optionally sort reporter messages
It can be useful to have similar class messages grouped together so that
error messages in a larger report don't get lost among the
warning/info/action messages.

This patch allows sorting of messages for dialogs that benefit from
organization.  Default behavior of reporter messages remains
unchanged by this patch.

Fixes: lp:1772090
* https://bugs.launchpad.net/kicad/+bug/1772090
2018-05-22 13:55:02 -07:00
Seth Hillbrand b8f960ea09 Correct message panel sizing
Message panel in update PCB needs size hints from the dialog to
correctly choose the size.
2018-05-22 13:54:48 -07:00
Jeff Young c4b447f3f9 Initialize field visibility checkboxes in Fields Editor. 2018-05-22 19:24:37 +01:00
jean-pierre charras 6f249e5eb6 Add missing icons in lock/unlock context submenu 2018-05-22 14:36:35 +02:00
Jeff Young e3c4a96f5c Default field bug fixes.
1) Commit in-progress edits before closing preferences.
2) Handle default fields in Symbol Fields Editor.
3) Save state of checkboxes in Symbol Fields Editor.
2018-05-22 12:55:39 +01:00
Seth Hillbrand 2d812c2827 Remove FreeRouting icon and menu option
Freerouting-specialized menus are removed as FreeRouting is not
maintained or packaged for most OSes.  Users can still import/export
SPECCTRA files in KiCad allowing them to interface with a custom
FreeRouting installation.
2018-05-21 10:44:32 -07:00
Seth Hillbrand 5d8dd38664 Standardize graphical edit window
The graphical editor window for pcbnew and modedit have slight
differences, so different classes.  But they should appear the same to
the user.  This merges the differences into a dialog that looks the same
to the user.

Fixes: lp:1772389
* https://bugs.launchpad.net/kicad/+bug/1772389
2018-05-21 09:37:04 -07:00
Jeff Young 6a2dc8d4eb Roll back last 2 commits meant for the other resolver only.
Fixes: lp:1772255
* https://bugs.launchpad.net/kicad/+bug/1772255
2018-05-21 16:25:44 +01:00
Jeff Young cdde4c4b40 Fix a bug in how we check for differential pair tuning.
Fixes: lp:1545856
* https://bugs.launchpad.net/kicad/+bug/1545856
2018-05-21 13:49:40 +01:00
Jeff Young 0fd0e84162 Keep OK/Cancel buttons at bottom of Track/Via Properties.
Fixes: lp:1772260
* https://bugs.launchpad.net/kicad/+bug/1772260
2018-05-21 13:18:41 +01:00
Jeff Young 2b22cbe94d Release mouse before closing HTML_MESSAGE_BOX.
Fixes: lp:1772275
* https://bugs.launchpad.net/kicad/+bug/1772275
2018-05-21 13:18:41 +01:00
Jeff Young 10ec39a107 Move 3D file error messages to tracePathsAndFiles key.
Fixes: lp:1772255
* https://bugs.launchpad.net/kicad/+bug/1772255
2018-05-21 13:18:41 +01:00
Wayne Stambaugh c49a4398a1 Set KiCad version to 5.0.0-rc2-unknown for next development cycle. 2018-05-20 21:24:18 -04:00
Wayne Stambaugh b4f9b5359d Set KiCad version to 5.0.0-rc2. 2018-05-20 21:20:28 -04:00
Seth Hillbrand 0c2f9b1827 Keep circles controlled by radius
Circles are defined by center and a point on their edge.  This requires
the user to do extra math to figure out the size of the circle.  The
patch allows the user to edit and draw circles using radial coordinates.
2018-05-20 17:16:44 -07:00
Jeff Young 3a8a718e43 A pesky bug, this one is. (Said in best Yoda impression.)
There were two examples of the somewhat annoying error message.
This gets the second one.

Fixes: lp:1772255
* https://bugs.launchpad.net/kicad/+bug/1772255
2018-05-21 00:19:55 +01:00
Wayne Stambaugh 5678a166ee Fix template path bugs.
Remove KICAD_PTEMPLATE environment variable as it's purpose was not
clear and was often poorly defined as the path to the KiCad installed
templates.

Add a new KICAD_TEMPLATE_DIR environment variable which clearly should
be the path of the KiCad installed templates.  Make this environment
variable available in the user settings in case the default is wrong
which has been the case in some instances.  Use the standard search
stack to set the default system template path which has a much greater
chance of being correct.

Add a new KICAD_USER_TEMPLATE_DIR environment variable which clearly
should be the path of the user defined templates.  Users most likely
were not even aware of the old default user path unless they read the
fine manual.

Set template path search stack priority as follows:

* KICAD_USER_TEMPLATE_DIR
* KICAD_TEMPLATE_DIR
* Search stack template paths

Reverse template selection dialog and project path dialog for improved
user experience.

Fixes lp:1543443

https://bugs.launchpad.net/kicad/+bug/1543443
2018-05-20 18:56:11 -04:00
Jeff Young 8badfea17a Fix the build messages fall-behind problem...
... by getting rid of the separate window.  It makes more sense
to put the messages into the wizard anyway.

Fixes: lp:1492836
* https://bugs.launchpad.net/kicad/+bug/1492836
2018-05-20 23:48:29 +01:00
Jeff Young e27d31d51d Fix minor dialog layout issue. 2018-05-20 23:48:29 +01:00
Jeff Young c48e5b6423 Remove unhelpful warning message.
It appears far too often with the new libraries.

Fixes: lp:1772255
* https://bugs.launchpad.net/kicad/+bug/1772255
2018-05-20 23:48:29 +01:00
Jeff Young 052ca08546 Switch footprint-locked-can't-remove msg to warning.
Fixes: lp:1689898
* https://bugs.launchpad.net/kicad/+bug/1689898
2018-05-20 23:48:29 +01:00
Jeff Young 62a5ee8c21 Layout Track / Via Properties dialog.
It's sizing is dependent on the selection.

Fixes: lp:1772260
* https://bugs.launchpad.net/kicad/+bug/1772260
2018-05-20 23:48:29 +01:00
Jeff Young 63c9e11aae Bug fixes in Length Tuning UI.
1) hide the status popup when the dialog is brought up
2) forward events from the popup to the canvas so hotkeys work
3) make sure diff pair radius is always 100%
4) fix greyed-out Miter style label
5) make L a hotkey so it works before you start dragging

Fixes: lp:1545856
* https://bugs.launchpad.net/kicad/+bug/1545856
2018-05-20 23:48:29 +01:00
Maciej Suminski 8f6ae70400 Deterministic algorithm for picking field values in multiunit components
The original algorithm picked the value from the last component having
non empty value for a given field, but the processing order was
dependent on the layout of the components in the memory. It means that
for each component, the field values could have been taken from any
unit, randomly.

The patch improves the algorithm, trying to get all values from the unit
with the lowest number and resorts to other units only when there are
field values left empty.
2018-05-19 18:43:23 +02:00
Maciej Suminski dcf60f8e6f Eagle PCB import: handle keepout zones
Fixes: lp:1755886
* https://bugs.launchpad.net/kicad/+bug/1755886
2018-05-19 18:43:04 +02:00
Jeff Young 2bd0a027a2 Improved error messages for diff-pair routing.
Fixes: lp:1542592
* https://bugs.launchpad.net/kicad/+bug/1542592
2018-05-19 01:52:22 +01:00
Seth Hillbrand 6b1df2e992 Remove extraneous PROFILE
Accidentally committed in b2d063137
2018-05-18 17:08:52 -07:00
Seth Hillbrand 0c1172b17d Garbage collection optimization
We only need to iterate over the anchors when there are items that are
marked invalid.  We check once in the item list and only if there are
invalid items to remove do we trim the anchor lists.

However, the connected items might still need to be trimmed, so we leave
this final step outside of the conditional.
2018-05-18 16:59:36 -07:00
Seth Hillbrand b2d0631370 Split anchor vectors by layer
This is a speed commit for large boards.  Tracks and pads cannot connect
to elements that are not on the same layer.  Rather than checking for
this at the last step, this commit splits the anchor vectors by layer,
limiting the initial search space.
2018-05-18 16:59:36 -07:00
Seth Hillbrand 019ada0a92 Move some connectivity search to std::algs
Previously, binary search was hand-coded.  This moves the search to a
std::algorithm variant.  Also searches bbox by limits rather than
directly iterating.
2018-05-18 16:59:36 -07:00
Jeff Young 0bcfb2c7df Don't write library name to footprint files.
Fixes: lp:1772095
* https://bugs.launchpad.net/kicad/+bug/1772095
2018-05-19 00:57:15 +01:00
Jeff Young c5696738d2 Use diff-pair-via clearance when checking against vias.
Fixes: lp:1742275
* https://bugs.launchpad.net/kicad/+bug/1742275
2018-05-18 23:42:38 +01:00
Seth Hillbrand d62b4f36a6 Save hotkeys to combined app-based file
Unifies the different sections of hotkeys so that we are not storing two
[eeschema] or [pcbnew] sections in two different files.

Previous hotkey definitions are loaded at start if they exist but are
overwritten by the new format, if it exists.  Changes to hotkeys save
only in the combined format.

Hotkey editor for each application only shows the hotkeys relevant to
that application.

Fixes: lp:1741757
* https://bugs.launchpad.net/kicad/+bug/1741757

Fixes: lp:1668799
* https://bugs.launchpad.net/kicad/+bug/1668799
2018-05-18 12:57:38 -07:00
Seth Hillbrand d22fceca7c Revert hotkey save format
This reverts the hotkeys file format to a human readable and VCS
compatible listing by splitting individual hotkey assignments onto
separate lines instead of the single key. This unifies the hotkey format
between the application configuration and export Hotkey routines.

Both hotkey formats remain readable by the same routines.
2018-05-18 12:53:45 -07:00
jean-pierre charras bbc01e0c2b Add a tooltip in DIALOG_POSITION_RELATIVE. 2018-05-18 20:42:24 +02:00
Jeff Young 149f4f68c9 Leave decorations on LAYER_GP_OVERLAY.
In particular, don't reset them to 0, which happens to be F_Cu.

Fixes: lp:1658775
* https://bugs.launchpad.net/kicad/+bug/1658775
2018-05-18 18:18:40 +01:00
jean-pierre charras 45dad4ded5 DIALOG_POSITION_RELATIVE: make dialog more understandable.
Better texts, and add a helper comment.
2018-05-18 13:53:31 +02:00
Jeff Young 5010a461e1 Make polar coordinates consistent.
Use theta instead of phi (which normally describes the azimuth
angle).

Fixes: lp:1545107
* https://bugs.launchpad.net/kicad/+bug/1545107
2018-05-18 12:22:14 +01:00
jean-pierre charras 2363f36033 Fix compil issue in dialog_select_net_from_list.cpp with wxWidgets 3.1 2018-05-18 10:16:30 +02:00
jean-pierre charras ec98bbba11 Fix issue: HPGL (plot mode sketch) : polygons are not closed.
Fixes: lp:1771531
https://bugs.launchpad.net/kicad/+bug/1771531
2018-05-18 10:13:46 +02:00
jean-pierre charras 689db4f038 Pcbnew, D_PAD::buildCustomPadPolygon(): use PM_STRICTLY_SIMPLE instead of PM_FAST in polygon calculation.
It is slightly slower, but avoid any issue in polygon generation.
2018-05-18 08:38:03 +02:00
Seth Hillbrand d09445cf34 Fixing signed/unsigned warning 2018-05-17 16:47:51 -07:00
Seth Hillbrand 85921535b3 Cleaning SelectNet window display
Select net has two columns, so we should limit the column width to the
size of the grid.  The size should adjust with the window, so we take
the size of the first column as fixed and assign the rest of the grid
width to the second column.
2018-05-17 16:44:30 -07:00
Jeff Young 5e30e4d475 Don't allow replace on Power Symbol value fields.
Fixes: lp:1771398
* https://bugs.launchpad.net/kicad/+bug/1771398
2018-05-18 00:43:40 +01:00
Jeff Young 8cb68a3585 Wire up return in combobox to accept dialog.
(I've fixed a few of these now.  If memory serves, it's an OSX-
specific problem.)

Fixes: lp:1771515
* https://bugs.launchpad.net/kicad/+bug/1771515
2018-05-17 23:58:49 +01:00
Jeff Young df495b1d65 Fix typo in loading of preferences Reference ID Notation menu.
Fixes: lp:1771898
* https://bugs.launchpad.net/kicad/+bug/1771898
2018-05-17 23:46:32 +01:00
jean-pierre charras 1ebee39973 Gerber X1 format: add more structured comments in file. 2018-05-17 17:32:35 +02:00
jean-pierre charras d1cab6ec62 Gerber X1 plot files: prepare adding more structured comments (aperture and object attributes)
structured comments are lines starting by "G04 #@!" and are therefore Gerber X1 comments.
But these comments contain X2 attributes.
2018-05-17 17:32:35 +02:00
Maciej Suminski dfcdfe91fa Fixed the TOOL_STATE::idle field setting condition
The tools were being set as idle, whenever an event handler execution
finished (via TOOL_MANAGER::finishTool()). Such approach does not take
into account cases when a tool is active and receives an event causing
another event handler of the same tool to run. When this happend, the
tool has been incorrectly set as idle when the second handler finished
its execution.

In a particular case, invoking the router settings dialog caused the PNS
router to be incorrectly detected as inactive in
EDIT_TOOL::invokeInlineRouter(). Due to that, ROUTER_TOOL::CanInlineDrag()
requested a selection that required disambiguation menu for items
that were modified by the router, but not yet committed. After the drag
tool had finished, the disambiguation menu was eventually shown
with items existing only in the undo buffer. Removing such item lead to
track DLIST corruption, effectively erasing all tracks.

Fixes: lp:1767826
* https://bugs.launchpad.net/kicad/+bug/1767826
2018-05-17 16:24:13 +02:00
jean-pierre charras 7c52af2d50 Gerbview: cosmetic enhancement: add icons in Clarify menu. 2018-05-17 10:24:09 +02:00
jean-pierre charras 93e75af388 Rename plot_auxiliary_data.h file to gbr_metadata.h, according to the class names defined by this file 2018-05-17 08:07:29 +02:00
jean-pierre charras 144549ebca Pcbnew, plot: Fix: masks derived from custom pad shape have incorrect margin.
Fixes: lp:1771526
https://bugs.launchpad.net/kicad/+bug/1771526
2018-05-16 18:26:43 +02:00
jean-pierre charras afc28ef5db fix a minor compil warning 2018-05-16 18:14:06 +02:00
jean-pierre charras 828faecce9 Modify the priority of OCC/OCE include paths.
This is because on my msys2/32bits the OCE config.h file replaced our kicad config.h, due to include paths priorities
2018-05-16 17:30:37 +02:00
jean-pierre charras 904eb82368 Fix a DRC crash on some installs.
It looks like D_GLIBCXX_ASSERTIONS=ON activated on some Linux versions creates too zealous tests at run time.
This patch just calculate the same pointer value using a slightly different formula.

Fix also a hard-to-understand comment

Fixes: lp:1770414
https://bugs.launchpad.net/kicad/+bug/1770414
2018-05-16 09:20:04 +02:00
Seth Hillbrand 584409b2ef Make OpenCascade more secondary
The opencascade patch intrusively checked against libraries but broke
some build scripts.  This restores the default cmake OCE behavior that was
changed by 2bab30d9a and makes the OpenCascade search truly secondary.
2018-05-15 06:40:25 -07:00
Maciej Suminski 538ab0eb3f kicad_netlist_reader.py: Handle gracefully the case when a library symbol is not available for a component 2018-05-14 17:58:24 +02:00
Maciej Suminski 161b4a56fc kicad2step: Handle escaped quotes in sexpr parser 2018-05-14 17:58:24 +02:00
jean-pierre charras 509793a5b4 Symbol editor: Inversion sign ("~") incorectly ùmanaged in graphic texts.
It was always replaced with space in a graphic text, but it should happens
only in non quoted texts
Now graphic texts containing ' ' or '~' or '"' are always quoted
(work fine with 4.0 version)

Fixes: lp:1771105
https://bugs.launchpad.net/kicad/+bug/1771105
2018-05-14 17:49:30 +02:00
Maciej Suminski 23a9fcd91d Fixed a typo in the STEP generator message 2018-05-14 10:59:48 +02:00
jean-pierre charras 86d6ed5abf Demo update to used V5 libs 2018-05-14 09:33:45 +02:00
jean-pierre charras d8687e4eaf Gerbview: minor code cleanup 2018-05-14 09:05:11 +02:00
jean-pierre charras 8da242c593 Gerbview: accept any structured comment as X2 attribute.
A structured comment is a comment line starting by "G04 #@! " and in fact containing
a X2 attribute. It is used to create Gerber files contianing X2 metadata, but compatible
with X1 file format
2018-05-14 09:05:09 +02:00
Jeff Young 1a6e8d4713 Fix typo. 2018-05-13 21:48:13 +01:00
jean-pierre charras 2832f997c5 PcbNew; fix crash on copy/paste
Due to a bug introduced by commit ba1e0efda that tried to fix an other bug.

Fixes: lp:1771003
https://bugs.launchpad.net/kicad/+bug/1771003
2018-05-13 21:50:59 +02:00
Jeff Young a9dc417319 Fix bug in pruning of selection.
Fixes: lp:1770939
* https://bugs.launchpad.net/kicad/+bug/1770939
2018-05-13 15:23:41 +01:00
Jeff Young c30dd24cc1 Fixup sorting for expanded component groups.
Also adds shorthand notation for groups with adjacent components.
2018-05-13 12:21:55 +01:00
jean-pierre charras b94e0a2031 Fix forgotten change (m_Zone to m_SegZoneDeprecated) 2018-05-13 09:19:44 +02:00
jean-pierre charras 54766bac40 fix minor compil warning (signed/unsigned compar) 2018-05-13 08:56:17 +02:00
jean-pierre charras e57cd291ff class BOARD: rename m_Zone to m_SegZoneDeprecated to avoid mistakes in code.
m_Zone is a fully deprecated list of SEG_ZONE items (similar to TRACK), used to fill copper zones in *very old* boards.
it is even unlikely there are still boards that use them.
So it should be removed one day.
2018-05-13 08:39:36 +02:00
Jeff Young 9311393016 Add expand/collapse to grouped rows in Fields Editor.
Fixes: lp:1767746
* https://bugs.launchpad.net/kicad/+bug/1767746
2018-05-12 23:05:04 +01:00
jean-pierre charras ba1e0efdad Pcbnew, GAL mode: Fix incorrect management of zones in append board and copy from Paste from clipboard.
Fixes: lp:1770855
https://bugs.launchpad.net/kicad/+bug/1770855
2018-05-12 20:48:50 +02:00
jean-pierre charras 9704891c8f Cvpcb, fo viewer frame: fix a bug (close frame widget not active) due to a too zealous cleanup. 2018-05-12 11:32:06 +02:00
jean-pierre charras 6e5131be5a Minor fix in fp editor and fp viewer: display the fp info instead of the useless board info.
board info makes sense only in board editor, not in fp editor and fp viewer.
2018-05-12 10:44:31 +02:00
Seth Hillbrand 2bab30d9ac Allow Kicad to use OpenCascade
Adds the option of using OpenCascade not just the community edition.

Fixes: lp:1628950
* https://bugs.launchpad.net/kicad/+bug/1628950
2018-05-11 17:04:32 -07:00
Seth Hillbrand da5f2874c5 Adding white outline to zoom icons
All-black icons disappear when using a dark menu theme.  Adding a small
white outline allows them to be visible.

Fixes: lp:1760098
* https://bugs.launchpad.net/kicad/+bug/1760098
2018-05-11 16:45:05 -07:00
Seth Hillbrand 6a726ca299 Unify polygon point checks
Mutliple checks are made for point in polygons/closed line chains.  This
unifies the checks to a single (hopefully) place for improved debugging.
2018-05-11 15:42:41 -07:00
Seth Hillbrand f2aea97807 Calculate inside polygon using points
Minor improvement in polygon calculation to use consecutive points
rather than casting to a full segment.  Avoids division except when it
will not create a denormal.
2018-05-11 15:42:41 -07:00
Seth Hillbrand d67821d771 Add a clearance check for closed shape line chains
Also improves speed of multiple point checks by first eliminating points
outside of the BBox.
2018-05-11 15:42:41 -07:00
Jeff Young 108dc20fba Keep first segment of wire attached to sheet pin horizontal.
If allowed to go vertical it's very hard to see on top of the
sheet boundary and liable to short out other pins.

Fixes: lp:1685508
* https://bugs.launchpad.net/kicad/+bug/1685508
2018-05-11 21:50:43 +01:00
Jeff Young 62d6750ced Use default for attribute "display" if not found.
Fixes: lp:1767447
* https://bugs.launchpad.net/kicad/+bug/1767447
2018-05-11 16:11:38 +01:00
Jeff Young 09622a4c9f Replace messageBox with assert for non-fatal error.
Fixes: lp:1770505
* https://bugs.launchpad.net/kicad/+bug/1770505
2018-05-11 13:02:02 +01:00
Jeff Young e91e88bfa1 Make sure read-only attr sticks when grid table rebuilt. 2018-05-11 12:33:53 +01:00
Jeff Young 6e83f99c72 Relax fully-annotated constraint for BOM editor.
Also fixes a bug where unannotated components would get references
of the form R-1 (because their reference number was -1).

Fixes: lp:1768814
* https://bugs.launchpad.net/kicad/+bug/1768814
2018-05-11 12:33:44 +01:00
Maciej Suminski f73b9a55a7 Fixed an assert in DHEAD::append()
The previous one incorrectly expected the appended items to belong to
the target list, instead of the source list.
2018-05-11 10:23:40 +02:00
jean-pierre charras 2ed24a46b2 Try to fix Jenkins build error (link error). 2018-05-10 15:14:08 +02:00
jean-pierre charras daa7abec70 Update demo to use V5 libs 2018-05-10 14:22:38 +02:00
Jeff Young dffdf04cd9 Update footprint value when it's a proxy for FPID.
Fixes: lp:1769207
* https://bugs.launchpad.net/kicad/+bug/1769207
2018-05-10 12:16:00 +01:00
Jeff Young a65088419e More forgiving keyword search.
In particular, allow comma separators in footprint filters without
making users type them in when searching.

Fixes: lp:1391533
* https://bugs.launchpad.net/kicad/+bug/1391533
2018-05-10 12:16:00 +01:00
Jeff Young 933ff189ad Remember the last directory in FPLib Wizard.
Fixes: lp:1577965
* https://bugs.launchpad.net/kicad/+bug/1577965
2018-05-10 12:16:00 +01:00
jean-pierre charras e339007d22 3D viewer: fix some issues when opened from a frame and changes are made in a other frame:
* Refresh the view only when changes are made in the caller frame.
* Allows recreate a new instances when try to open the 3D view from a frame taht is not the initial caller
* Remove duplicate code in kicad frames.
2018-05-10 12:49:20 +02:00
Wayne Stambaugh d41e64b0ff Fix dialog grid sizer padding issue on GTK builds. 2018-05-09 17:38:06 -04:00
Wayne Stambaugh 7bd9fc9235 Fix footprint editor options dialog layout.
Add padding to standard dialog button sizer.  On windows, the buttons are
slammed against the bottom of the dialog with no border which looks awful.

Fix alignment and padding in grid sizers.
2018-05-09 14:12:26 -04:00
Wayne Stambaugh 7b887c4844 Fix static text iss in board editor footprint properties dialog.
Replace degree symbol with the word degrees.  On windows, this does not
translate to the degree symbol.
2018-05-09 14:01:50 -04:00
Wayne Stambaugh b67bab2f98 Fix layout issues in footprint editor footprint properties dialog.
Add padding to standard dialog button sizer.  On windows, the buttons are
slammed against the bottom of the dialog with no border which looks awful.

Replace degree symbol with the word degrees.  On windows, this does not
translate to the degree symbol.
2018-05-09 13:52:04 -04:00
Wayne Stambaugh 1f898b1e80 Fix control padding in choose footprint dialog. 2018-05-09 13:23:45 -04:00
Wayne Stambaugh 03b85c7544 Fix control alignment and padding in footprint properties dialog. 2018-05-09 13:11:36 -04:00
jean-pierre charras b9808da0a8 Use wxStdDialogButtonSizer in dialog.
Use .step instead of .stp as step file extension.
2018-05-09 18:14:49 +02:00
Wayne Stambaugh 787ee62db3 Fix inconsistent padding in Pcbnew plot dialog. 2018-05-09 11:33:26 -04:00
Maciej Suminski 194c57133c SCH_LEGACY_PLUGIN::loadHierarchy() uses a stack to maintain sheet paths
Path keeping stack copes well with paths pointing outside the project
directory (e.g. "../path"). The so far used wxFileName::GetDirCount() and
wxFileName::RemoveLastDir() remove too many directories, as ".." is also
counted as a directory.

Fixes: lp:1769746
* https://bugs.launchpad.net/kicad/+bug/1769746
2018-05-09 11:30:23 +02:00
jean-pierre charras 6866c0c8a5 Update demo to use V5 libs 2018-05-09 09:06:31 +02:00
Jeff Young 31b026c70f Another attempt to fix the initial button layout on GTK. 2018-05-08 20:01:29 +01:00
Jeff Young e5374981aa Improve spacing of Plot button on GTK. 2018-05-08 18:48:23 +01:00
Jeff Young 36850a539b Make layers manager terminology consistent.
Fixes: lp:1769788
* https://bugs.launchpad.net/kicad/+bug/1769788
2018-05-08 18:48:23 +01:00
Seth Hillbrand b90f70e230 Update footprint filter type-in to be implicit *
Footprint filter provides two Regex filtering options.  One for keywords
and one for footprint keywords.  The footprint keywords (contained in
the symbol files) need explicit '*' at the beginning and end of the
filters to allow matching start/end.  Type-in filters should search
implicitly matching any wildcard substring.

Fixes: lp:1769931
* https://bugs.launchpad.net/kicad/+bug/1769931
2018-05-08 10:44:14 -07:00
Jeff Young a997aad144 Fix issue on re-titling sdbSizer button on GTK.
While "fixes" isn't quite the right word, we do want this commit
associated with the following bug, and "fixes" is the easiest
way to do that:

Fixes: lp:1712579
* https://bugs.launchpad.net/kicad/+bug/1712579
2018-05-08 17:11:48 +01:00
jean-pierre charras 4cc62ce038 3D viewer: minor enhancement: display the name of the 3D shape being loaded. 2018-05-08 16:07:09 +02:00
jean-pierre charras 8a70acb821 Update demos to use V5 libraries. 2018-05-08 15:29:21 +02:00
Tomasz Włostowski dcf4d7caa7 router: allow placing via without track in shove mode
Fixes: lp:1769782
* https://bugs.launchpad.net/kicad/+bug/1769782
2018-05-08 15:18:10 +02:00
Maciej Suminski c8f4e1051b Eagle SCH import: keep multi-unit parts not interchangeable
Eagle supports more sophisticated unit swapping information,
so the safest choice is to prevent any unit manipulation.
2018-05-08 12:17:46 +02:00
Maciej Suminski 2b46bda2f2 PNS router: apply the last stable state after dragging
Previously, dragging changes were applied only if the last cursor move
finished with a successful drag operation. It made items squeezing
difficult, as it required accurate cursor movement to apply the changes.
2018-05-08 11:50:37 +02:00
Maciej Suminski 471e3de5a7 Fixed board append function, broken in 046e73ec
The previous implementation cleared all DLISTs, but has not added
everything back on append.
2018-05-08 11:21:55 +02:00
Maciej Suminski 8cb3aa79f2 pcbnew_control.cpp code formatting 2018-05-08 10:40:33 +02:00
Maciej Suminski 046e73ecac Clear the source DLIST when pasting items to a BOARD
Fixes the assert triggering when items already belonging to a list are
added to another one.
2018-05-08 10:40:33 +02:00
jean-pierre charras 44bf92ae64 Annotate schematic: fix annotation bug with multi-unit parts when these parts have a duplicate reference.
It happens only with option "Reset, but keep order of multi-unit parts, because the algo tried
to propagate the new reference to parts having the same old reference,
without testing if this old reference was duplicated.

Fixes: lp:1769250
https://bugs.launchpad.net/kicad/+bug/1769250
2018-05-08 09:46:25 +02:00
Jeff Young ad6956b05d Move zone fill check for plot to a checkbox option.
Fixes: lp:1712579
* https://bugs.launchpad.net/kicad/+bug/1712579
2018-05-08 00:22:45 +01:00
Wayne Stambaugh 5c5b74b29e Fix user configuration path bug on Linux.
Recent versions of wxWidgets wxStandardPaths::GetUserConfigDir() correctly
append ".config" on Linux build which was incorrect as the current code
already appended it to the path.  Add a check to see if ".config" is the
last path and append as required.

Check for XDG_CONFIG_HOME environment variable on all platforms not just
Linux.

Fixes lp:1769145

https://bugs.launchpad.net/kicad/+bug/1769145
2018-05-07 18:23:41 -04:00
Seth Hillbrand dbc2eea3db Optimize itemset
When counting items, many cases exist where we want to count all items
without checking flags.  This short-circuits the loop to provide the
immediate count.
2018-05-07 13:59:12 -07:00
Seth Hillbrand 4c7f5f2a2f Allow disabling snap-to when placing vias
This allows the user to selectively disable the snap-to behavior when
placing stand-alone vias.  Full solution will require an update to the
segment distance calculation that takes into account the rounded line
caps.

Fixes: lp:1769523
* https://bugs.launchpad.net/kicad/+bug/1769523
2018-05-07 13:58:26 -07:00
Maciej Suminski ffe194567a DLIST: extra checks 2018-05-07 17:12:03 +02:00
Maciej Suminski d2d5657aff DLIST: replace wxASSERT with wxCHECK for checks that would lead to a crash
wxASSERT only shows a dialog saying that things went wrong (in debug mode),
whereas wxCHECK will also terminate the function (also in release builds).
2018-05-07 16:52:34 +02:00
Maciej Suminski ef698384a7 Eagle PCB importer: changed m_Track.Insert() to m_Track.PushBack()
The latter better reflects the intention.
2018-05-07 16:51:06 +02:00
jean-pierre charras a3770bf6e1 Gerbview: fix a crash when Gerbview starts by loading a gerber job file (run from a command line) 2018-05-07 12:47:11 +02:00
jean-pierre charras d35a6f1e6d Gerber job file, update to the latest file specification: add a change forgotten in the first commit. 2018-05-07 08:50:17 +02:00
Jeff Young 07e7340a96 Make sure doc gets refreshed when zone check results in refill. 2018-05-06 14:05:50 +01:00
jean-pierre charras db8c57dbc6 fix a minor compil warning 2018-05-06 12:49:35 +02:00
jean-pierre charras b29550de5d Gerber job file: minor update to the latest file specification. 2018-05-06 12:03:46 +02:00
jean-pierre charras 90951ac1d1 Update demo to use V5 libraries. 2018-05-06 11:53:08 +02:00
Jeff Young 5a90858a46 Convert unit indicies to reference letters for annotation messages.
Fixes: lp:1769244
* https://bugs.launchpad.net/kicad/+bug/1769244
2018-05-06 00:23:04 +01:00
Jeff Young aa7da5dfcd Treat ${...} and $(...) envvar references uniformly.
Fixes: lp:1769282
* https://bugs.launchpad.net/kicad/+bug/1769282
2018-05-05 23:40:40 +01:00
Jeff Young a31017bc9c Check zone fills before plotting.
Also adds a "Draft Plot" button for those who wish to sidestep
zone checking (which can be slow).

Fixes: lp:1712579
* https://bugs.launchpad.net/kicad/+bug/1712579
2018-05-05 23:40:40 +01:00
Thomas Pointhuber cad2d0656c Remove Items from Menubar of 3D Viewer which are available over dialog 2018-05-05 12:33:04 -04:00
Thomas Pointhuber 32af04c6a6 Adjust Menubar of 3D Viewer to common style 2018-05-05 12:28:09 -04:00
Jeff Young 1f5b575eaf Pretty-up new pad clearance UI. 2018-05-04 23:55:03 +01:00
Jeff Young c23b263e39 Fix display issues in Layers list in Keepout Zone Properties. 2018-05-04 23:55:03 +01:00
Seth Hillbrand bfe636d327 Query user to create library on save
Revising 5ca6864a4, this prompts the user to create the missing library
directory when attempting to save to a non-existent library.
2018-05-04 09:59:35 -07:00
Seth Hillbrand 5ca6864a40 Improve error message granularity
When saving a library, check and report on libraries that do not exist
as well as those that exist but are read-only.

Fixes: lp:1769190
* https://bugs.launchpad.net/kicad/+bug/1769190
2018-05-04 09:12:08 -07:00
Steven A. Falco e0ca5bab11 Fix comment typo.
Comment has XDG_CONFIG_HOME, but it should be KICAD_CONFIG_HOME.
2018-05-04 08:28:48 -07:00
Seth Hillbrand 9648584827 Adjusting the breakout optimizer for custom pads
Rather than using the center of the bounding box, we keep the start
track on the custom pad's connection pad when optimizing the breakout.
2018-05-04 08:23:20 -07:00
Seth Hillbrand b2c4519c2c Setting custom pad shape to be outline for PNS
Changes SHAPE_CONVEX to SHAPE_SIMPLE to better reflect the limitations.
Changes SHAPE_LINE_CHAIN::PointInside calculation to allow points
strictly inside a line chain

Fixes: lp:1768862
* https://bugs.launchpad.net/kicad/+bug/1768862
2018-05-04 08:23:20 -07:00
jean-pierre charras 93c7f65d96 mask clearance parameters: use clearances only for pads on copper layers, and never for pads on technical layers only. 2018-05-04 14:55:38 +02:00
Maciej Suminski 684f085ac5 Coverity fixes
CIDs:
dereference before null check:
175439 @ drc.cpp

uninitalized field:
175435 @ point_editor.cpp
174162 @ zone_filler.cpp
163188 @ footprint_info_impl.cpp

logically dead code:
155146 @ pcb_editor_control.cpp
2018-05-04 14:06:08 +02:00
Seth Hillbrand 1ac905d3ee Allow PNS to select nearest pad when two overlap
Usually pads do not overlap.  However custom pads are represented as
their convex hull, so they may enclose other pads.  This change allows the
router to select the closest pad to the cursor position.
2018-05-03 09:48:15 -07:00
Seth Hillbrand 296ada95a3 Remove unused private vars 2018-05-03 09:48:15 -07:00
jean-pierre charras 5b44e80355 Fix incorrect gerber job file syntax, when a board has inner layers. 2018-05-03 18:27:02 +02:00
Wayne Stambaugh 0f5eb421b3 Fix duplicate menu shortcuts in Eeschema View menu.
Both "Leave Sheet" and "Library Browser" menu entries were mapped to the
'L' key.  Mapped the "Library Browser" entry to the 'B' key.

Fix "Show hidden pins" menu entry capitalization.

Map "Show Hidden Pins" to 'P' key and "Full Window Crosshair" to 'W' key.

Fixes lp:1768671

https://bugs.launchpad.net/kicad/+bug/1768671
2018-05-03 10:49:44 -04:00
Wayne Stambaugh 7c7a6ea979 Fix board file formatting bug.
The roundrect_rratio token was missing a leading space which made the
file formatting different from all other formatting when using rounded
rectangle pads.

Fixes lp:1768355

https://bugs.launchpad.net/kicad/+bug/1768355
2018-05-03 10:21:40 -04:00
Jeff Young a2448cf4a5 Add missing settings to ModEdit's preferences.
Fixes: lp:1768477
* https://bugs.launchpad.net/kicad/+bug/1768477
2018-05-03 15:07:24 +01:00
Jeff Young d0d9bb25c0 Menu consistence (add Config Paths to LibEdit). 2018-05-03 15:07:24 +01:00
Maciej Suminski 8411ef04d0 Size fields list correctly in symbol properties editor
This patch prevents fields with long text values from unreasonable
dialog resizing. It is basically commit f4eb63f8 applied to a
corresponding field editor dialog in the Symbol Editor.
2018-05-03 12:20:40 +02:00
Maciej Suminski 70cd27314b Autocompletion for Spice model selector 2018-05-03 11:58:13 +02:00
Maciej Suminski 72a70d61d8 Fixed the default value generated for Spice_Node_Sequence field
Values generated by NETLIST_EXPORTER_PSPICE::GetSpiceFieldDefVal()
and the actual value that was stored in a netlist differed when a
component has multiple units.

Due to that, the Spice model editor dialog incorrectly recognized
"alternate node sequence" value as the default one and cleared it
when the dialog was closed.
2018-05-03 11:29:34 +02:00
Jeff Young bf135b0690 Change Libedit save icon from Save Library to Save All Libraries.
Also changes Save Library and Save Library As to work off the
visible selection if there is one.

Also implements enablement for Save All Libraries.

Fixes: lp:1764081
* https://bugs.launchpad.net/kicad/+bug/1764081
2018-05-02 23:41:00 +01:00
Tomasz Włostowski 2eddf1d8db router: prevent a very unlikely infinite loop in PNS::LINE::Walkaround() causing an OOM&segfault
Fixes: lp:1767587
* https://bugs.launchpad.net/kicad/+bug/1767587
2018-05-02 15:06:08 -07:00
Jeff Young af739f5b00 Check for duplicates when adding libraries.
This is particularly important when bulk adding (by director, etc.)
as otherwise the user might end up having to click OK to many
many error dialogs.

Fixes: lp:1764057
* https://bugs.launchpad.net/kicad/+bug/1764057
2018-05-02 21:49:57 +01:00
Jeff Young c842ddfb97 Fix message mismatch in YesNoCancelDialog. 2018-05-02 21:49:57 +01:00
Jeff Young 106dd60e45 Only adjust LAYER_WIDGET font size if larger than indicator.
Also moves adjustment into LAYER_WIDGET so all the callers don't
have to deal with it individually.

Fixes: lp:1767965
* https://bugs.launchpad.net/kicad/+bug/1767965
2018-05-02 21:49:57 +01:00
Jeff Young 2f157f9b23 Enable magnetic pads in Modedit.
Also fixes a bug where a FOOTPRINT_EDIT_FRAME was being passed
in to a PCB_EDIT_FRAME.

Also tidies up Modedit settings handling for settings which can't
be edited in Modedit's preferences dialog.  They're now copied
from Pcbnew.

Fixes: lp:1768477
* https://bugs.launchpad.net/kicad/+bug/1768477
2018-05-02 21:49:57 +01:00
jean-pierre charras 037f7a1698 Cosmetic enhancement: Add missing icons in GAL Select submenu (context submenu). 2018-05-02 21:42:41 +02:00
Seth Hillbrand 6b973f42eb Re-enabling lock/unlock context menus in legacy
This partially reverts 36d36de and 3bac100, moving the legacy footprint
lock/unlock code from the autorouter (which remains disabled) to
pcb_edit_frame.
2018-05-02 09:06:10 -07:00
Seth Hillbrand 76d3b6f04a Adding locking to the context menu for modules
Locking submenu was activated only for tracks and via but it makes sense
(and is probably expected) when right-clicking on modules as well.
2018-05-02 08:35:53 -07:00
Maciej Suminski 73eab29802 Removed 2 unused variables from PNS::LINE::Walkaround() 2018-05-02 17:06:13 +02:00
Maciej Suminski 439cc6a967 Remove redundant window scroll event handlers in WX_VIEW_CONTROLS
The only required scroll event handler is wxEVT_SCROLLWIN_THUMBTRACK,
which is responsible for dragging the scrolling sliders. One of the
remaining ones is also called when mousewheel is scrolled (MSW only) and
due to that overrides the new view setting with view settings computed
from the sliders position.

Fixes: lp:1767604
* https://bugs.launchpad.net/kicad/+bug/1767604
2018-05-02 15:39:36 +02:00
Jeff Young 69a31242b9 Change status bar Unconnected to Unrouted.
This should help make it clear that this is not the same as the
more authoratative DRC unconnected count.
2018-05-02 10:34:33 +01:00
Seth Hillbrand 62522ee450 Prevent implicit * from wildcard match in footprint
Footprint filters need to be able to match the start and end of strings.
The standard wildcard filter implictly adds "*" to the start and end of
match strings, so we create a derived class that requires an explicit
"*" or "?" to match wildcards.

Fixes: lp:1751565
* https://bugs.launchpad.net/kicad/+bug/1751565
2018-05-01 16:49:20 -07:00
Seth Hillbrand 2836d36de8 Removing legacy autorouter menu options
The autorouter was removed in 3bac100 but a few items were left in
place but mostly unconnected to functions.

Fixes: lp:1768357
* https://bugs.launchpad.net/kicad/+bug/1768357
2018-05-01 16:36:43 -07:00
Jeff Young aec490e3ac Handle single- and double-click in Place Footprint history list.
Old code failed to set the wxEventType during acceptance, and
failed to set the default button during initialization.

Fixes: lp:1768253
* https://bugs.launchpad.net/kicad/+bug/1768253
2018-05-01 23:28:01 +01:00
Jeff Young 8f2fee8bb8 Fix accidental revert. 2018-05-01 21:57:00 +01:00
Jeff Young 75e91f4cfd Make sure Cvpcb doesn't use its own FP_LIB_TABLE.
It's just a vestige of when Cvpcb was a separate app.

Fixes: lp:1768251
* https://bugs.launchpad.net/kicad/+bug/1768251
2018-05-01 21:49:03 +01:00
Shivpratap Chauhan 26197c333e At very first launch, old settings/config does not exist
KiCad read incorrect value for window position and it's size at very
first launch, which results in invisble/inaccessible window on Mac OSX.
Set correct default values for these settings fixes this issue.
And fix a typo in comment.
2018-05-01 09:19:27 -04:00
Jeff Young 295941c14d Don't leave Zones with "dead" nets.
When reading netlist or updating board from schematic, if the
changes leave a zone with a net with no pads then change the
zone's net to the new net of one of it's connections.

Also improves update-board-from-schematic's dry run reporting
to include zone nets and single-pad nets.

Fixes: lp:1609401
* https://bugs.launchpad.net/kicad/+bug/1609401
2018-05-01 13:54:31 +01:00
Jeff Young 6b3410974d Fix "same layers" test when duplicating zones. 2018-05-01 13:54:31 +01:00
Wayne Stambaugh 5d71153eab Fix macos build bug caused by commit 2f5fdcf3. 2018-04-30 15:47:50 -04:00
Wayne Stambaugh 6850e23fe0 Replace printf debugging output in common/project.cpp with wxLogTrace. 2018-04-30 15:18:09 -04:00
Seth Hillbrand b2b70ed7e3 Fix minor signed/unsigned comparison 2018-04-30 11:15:29 -07:00
Seth Hillbrand 12487e14ab Reduce extra loop comparison 2018-04-30 09:14:23 -07:00
Simon Richter 2f5fdcf329 Don't reference CMAKE_INSTALL_PREFIX in installation paths
This is substituted at configuration time, creating an absolute path, which
breaks overriding CMAKE_INSTALL_PREFIX at installation time, breaking the
workflow for installation using GNU stow.
2018-04-30 10:32:15 -04:00
Andrzej Wolski 5ac4dbe641 Fix window/crossed selection mode recognition in flipped view
Fixes: lp:1767233
2018-04-30 14:57:38 +02:00
jean-pierre charras 7395949ae0 LIB_ID: fix incorrect detection of illegal chars, when values are not ASCII values.
Fixes: lp:1764055
https://bugs.launchpad.net/kicad/+bug/1764055
2018-04-30 11:46:24 +02:00
jean-pierre charras b636aaddf6 Eeschema: fix incorrect UI messages in dialogs due to using UTF8 strings instead of wxStrings (unicode) to build them.
(Added a explicit to build a Unicode string in UI messages to avoid mistakes)
2018-04-30 11:46:23 +02:00
Jeff Young c8a784058e Allow duplicating a zone onto the same layer in a GAL canvas.
Duplicate already works, so there's little reason to disallow
using the zone dialog to do it.

The legacy canvas can't be fixed because we'll immediately
union the two zones, resulting in a no-op.

Fixes: lp:1464677
* https://bugs.launchpad.net/kicad/+bug/1464677
2018-04-29 20:28:45 +01:00
Jeff Young ae711d9994 Separate clearance axes when plotting pads to DXF (among other things). 2018-04-29 18:51:18 +01:00
Jeff Young 7b734551d3 Make sure pin-caches are up-to-date before testing dangling ends.
Fixes: lp:1767745
* https://bugs.launchpad.net/kicad/+bug/1767745
2018-04-29 16:55:24 +01:00
Jeff Young 21ceb786ac Clear annotations *after* rebuilding symbol links.
We need to symbol links to determine whether or not units are
locked (ie: non-interchangeable).

Fixes: lp:1767744
* https://bugs.launchpad.net/kicad/+bug/1767744
2018-04-29 15:09:28 +01:00
Jeff Young 41b92b6d0f Don't discard footprint's library ID when saving.
Fixes: lp:1767736
* https://bugs.launchpad.net/kicad/+bug/1767736
2018-04-29 09:45:05 +01:00
jean-pierre charras ccb668c105 3D viewer: fix polygon contours of pads solder paste when solder paste ratio was not null.
(the oval and round rect pads 3D contours were incorrect)

Fixes: lp:1767209
https://bugs.launchpad.net/kicad/+bug/1767209
2018-04-28 20:31:50 +02:00
Seth Hillbrand 2a87117edc Speed load/unload of complex boards
Corrects an error in polyline estimation

Syncs graphics to world PNS by whole layer set rather than
individual layer at a time.

Prevents reloading of full pns TOOL_BASE during reset of tools unless
the tool is being activated.

Fixes: lp:1766626
* https://bugs.launchpad.net/kicad/+bug/1766626
2018-04-28 16:11:07 +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
Jeff Young 91cfecaa12 Don't allow wxDataViewCtrl updates during model update.
Also checks to make sure libraries are activated before adding
them to the component tree.

Fixes: lp:1765286
* https://bugs.launchpad.net/kicad/+bug/1765286
2018-04-28 10:45:32 +01:00
Maciej Suminski 5a051358b7 Removed an obsolete comment 2018-04-28 01:19:42 +02:00
Maciej Suminski 9960416e32 Spice simulator: plot currents in DC sweep simulation
Fixes: lp:1767457
* https://bugs.launchpad.net/kicad/+bug/1767457
2018-04-28 01:14:00 +02:00
Maciej Suminski 4d6947b56a Spice simulator: do not display V(0) in the signals list 2018-04-28 01:14:00 +02:00
Maciej Suminski 539d12b08f Spice simulator: more elegant approach to generating Spice device names
Code fixing Spice device names (prefixing reference with a character
corresponding to the assigned device model type) that was duplicated in
a few places has been moved to a function (NETLIST_EXPORTER_PSPICE::GetSpiceDevice()).
2018-04-28 01:14:00 +02:00
Maciej Suminski 095112a902 Spice simulator: add device prefix only when necessary for DC sweep (missing in bc67d1ad) 2018-04-27 23:09:58 +02:00
jean-pierre charras 502bed083d Fix a minimal size for the spice simulator frame.
For an obscure reason, the minimal frame size fixed in EDA_BASE_FRAME was not working.
2018-04-27 20:35:23 +02:00
jean-pierre charras a9dd5b5335 Sim spice fix: the frame size was not the last stored size (like for other frames) but a default fixed value.
The frame size (and its subframes) is now the last used.
2018-04-27 18:33:13 +02:00
Jeff Young cfd2f1d001 Missed some menu items in the earlier clean-up. 2018-04-27 15:26:00 +01:00
Jeff Young 942d4e7658 Check footprint history list for validity.
Fixes: lp:1767108
* https://bugs.launchpad.net/kicad/+bug/1767108
2018-04-27 15:26:00 +01:00
jean-pierre charras ccce376e33 Refinements for commit 986b904
(Add comments and a minor fix)
2018-04-27 16:01:59 +02:00
Maciej Suminski bc67d1ad8c Spice simulator: prefix reference with device type only when necesary
Fixes: lp:1767271
* https://bugs.launchpad.net/kicad/+bug/1767271

Fixes: lp:1700853
* https://bugs.launchpad.net/kicad/+bug/1700853
2018-04-27 14:18:53 +02:00
jean-pierre charras 986b90424b Fix an issue in LoadPlugins(bundlepath=None) python method (Windows specific).
For some obscure (for me) reason, the path separators in bundlepath are seen as escape seq, and the path can be incorrectly handled
(when \n or \r are found in this string).
it happens only for this path, not for other paths in LoadPlugins.
For bundlepath parameter, unix separator is now used.

Fixes: lp:1766879
https://bugs.launchpad.net/kicad/+bug/1766879
2018-04-27 14:04:24 +02:00
Maciej Suminski 7d9dea7897 Remove an excessive assert for Cairo canvas size
It is a C-style assert causing application termination when triggered.
Certain systems display pcbnew window shrinked so much, that the canvas
size is 0x0 pixels. The only problem with that is the window needs to be
resized.

Fixes: lp:1767031
* https://bugs.launchpad.net/kicad/+bug/1767031
2018-04-27 10:06:36 +02:00
Jeff Young 5e5e80d392 Don't allow panel to overwrite values set in Spice Model editor.
Fixes: lp:1766920
* https://bugs.launchpad.net/kicad/+bug/1766920
2018-04-26 19:13:19 +01:00
Jeff Young 6ccc8577ad Hand-code calculation of field names column width.
Fixes: lp:1737361
* https://bugs.launchpad.net/kicad/+bug/1737361
2018-04-26 19:13:19 +01:00
jean-pierre charras 641c8bb548 PCBNew: Fix crash while routing in Legacy canvas
it was due to a incorrect behavior of TRACK::GetBestInsertPoint( BOARD* aPcb )
Also: update comment for this method.

Fixes: lp:1767061
https://bugs.launchpad.net/kicad/+bug/1767061
2018-04-26 19:42:55 +02:00
jean-pierre charras 7a923ab969 vrml export: fix line min width to 0.05mm (instead of 0.12mm) 2018-04-26 19:42:54 +02:00
Jeff Young 888c434776 Treat Mac as special case rather than GTK.
(Windows also needs the padding we use for GTK.)
2018-04-26 15:51:34 +01:00
Wayne Stambaugh a7528df198 Allow for multiple user configurations.
Use KICAD_CONFIG_HOME environment variable on all platforms so users can
maintain multiple configurations of KiCad.
2018-04-26 08:29:37 -04:00
Jeff Young dcf02f5f67 Use a single calc-column-width-impl for Fields Editor.
Also adds calculation of the initial splitter position based on
the widths of the fields in the list.

Fixes: lp:1737361
* https://bugs.launchpad.net/kicad/+bug/1737361
2018-04-26 11:10:58 +01:00
Jeff Young 5342aacf97 Implement magnetic pads & tracks for measurement tool.
This really needs to get put into the VIEW_CONTROLS for all the
tools, but that's probably a bit too risky for 5.0 at this
point.

Fixes: lp:1766547
* https://bugs.launchpad.net/kicad/+bug/1766547
2018-04-25 23:36:17 +01:00
Jeff Young ac778bc5b4 Only draw hidden pins if requested or in LibEdit.
Fixes: lp:1742485
* https://bugs.launchpad.net/kicad/+bug/1742485
2018-04-25 20:07:22 +01:00
Jeff Young 09a6bada03 Delegation of keyEvents from 3D toolbar to 3D canvas.
Fixes: lp:1759803
* https://bugs.launchpad.net/kicad/+bug/1759803
2018-04-25 14:19:32 +01:00
jean-pierre charras 68e69fe95d eeschema: context menu pops up on 2nd click after ESC key was pressed twice
other very minor fixes

Fixes: lp:1766830
https://bugs.launchpad.net/kicad/+bug/1766830
2018-04-25 14:28:41 +02:00
jean-pierre charras 528a67b27c Fix incorrect sizing of 2 columns in dialog, on GTK (issue perhaps depending on GTK/wxWidget version) 2018-04-25 12:07:43 +02:00
jean-pierre charras 91209e194c Remove useless tests after operator new 2018-04-25 12:07:43 +02:00
Jeff Young 7a7da560bc Keep unknown nets at 0 while routing.
Previous algorithm used a static variable which it decremented
for each new unconnected track, but this resulted in the router
marking earlier fixed segments as collisions (because they
would get set to netcode = 0 when "fixed").

Fixes: lp:1762043
* https://bugs.launchpad.net/kicad/+bug/1762043
2018-04-25 10:54:32 +01:00
Maciej Suminski 26ee673a6b Validate symbol alias names read from .dcm files
Fixes: lp:1766551
* https://bugs.launchpad.net/kicad/+bug/1766551
2018-04-25 10:15:44 +02:00
Jeff Young 4b3772cf07 Update value field when changing power symbol reference.
Fixes: lp:1765932
* https://bugs.launchpad.net/kicad/+bug/1765932
2018-04-25 00:36:08 +01:00
Jeff Young 7e29ff0bc4 Conditional compilation for global fields editor listbox. 2018-04-24 23:45:44 +01:00
Seth Hillbrand 8d017c9261 Re-enabling global spread and place
This had been removed along with autorouter but its functionality is
still desired.  If/when the autorouter is resurrected, these IDs will
need to be deconflicted.

Fixes: lp:1766550
* https://bugs.launchpad.net/kicad/+bug/1766550
2018-04-24 11:44:08 -07:00
Seth Hillbrand d0ffff3b88 Prevent deletion while actively routing
Fixes: lp:1766280
* https://bugs.launchpad.net/kicad/+bug/1766280
2018-04-24 10:44:49 -07:00
Seth Hillbrand 345f7d0732 Fix VRML export bugs
Corrected polygon export missing vertex.

Set pads to export on copper layer when not masked, keeping visual
output similar to physical.

Fixes: lp:1766634
* https://bugs.launchpad.net/kicad/+bug/1766634
2018-04-24 09:20:40 -07:00
jean-pierre charras bfc70c8208 Fix an issue in footprint editor, "Create Pad from Selected Shapes" command.
If the initial pad was a custom pad converted in a usual pad + graphic items by the command:
"Explode Pad to Graphic Shapes"
the "old" primitives were not cleaned, and the new created pad contained these old primitives, regardless the new selected shapes.
(Usual case when a user want to edit a custom shape)
2018-04-24 17:00:29 +02:00
jean-pierre charras 319908b7f4 fix a compil issue. 2018-04-24 15:20:35 +02:00
Maciej Suminski 143d580596 Fixed relative coordinates reset when a tool forces the cursor position
Fixes: lp:1759044
* https://bugs.launchpad.net/kicad/+bug/1759044
2018-04-24 12:56:19 +02:00
Seth Hillbrand 482fd866b3 Correct minor error in SPECTRA rounded-rect 2018-04-23 16:43:13 -07:00
Seth Hillbrand bd5eee50f4 Unify correction factor calculations 2018-04-23 16:43:13 -07:00
Seth Hillbrand dbfa9093ab Adding seg-polyset collision support 2018-04-23 16:43:13 -07:00
Seth Hillbrand b618da1fac Fixing bounding box calc for arcs 2018-04-23 16:43:13 -07:00
Seth Hillbrand 96b5dee48f Remove extra sizer label from pcb_calc attentuators 2018-04-23 16:33:53 -07:00
Seth Hillbrand 1a617dd66b Standardizing colon usage in pcb calculator 2018-04-23 16:27:43 -07:00
Seth Hillbrand e6bb917ebf Standardize colon in regulator data dialog 2018-04-23 16:03:43 -07:00
Seth Hillbrand ef1d1f80e5 Standardize colon in page layout and cleanup
Aligned text boxes and placed units beside input where applicable.
2018-04-23 16:00:19 -07:00
Seth Hillbrand 802a96299a Standardize colons in new page layout 2018-04-23 13:33:53 -07:00
Seth Hillbrand 3d76fcaa3b Standardize colons in kicad template dialog 2018-04-23 13:15:02 -07:00
Seth Hillbrand f911ef5186 Standardize print scale label for gerbview 2018-04-23 13:14:06 -07:00
Seth Hillbrand ca06e67ffc Standardize colons in gerbview display options dialog 2018-04-23 13:11:53 -07:00
Seth Hillbrand aa0d67bdde Standardize colons in gerbview print dialog 2018-04-23 13:10:53 -07:00
Seth Hillbrand f2f1ce232d Standardize colons in bitmap2component dialog 2018-04-23 13:09:22 -07:00
Seth Hillbrand 48910f3efc Standardize colons in cvpcb display options dialog 2018-04-23 13:08:21 -07:00
Seth Hillbrand 2694a76785 Standardize colons in symbol library dialog 2018-04-23 12:33:21 -07:00
Seth Hillbrand 3e652f2d40 Standardize colons and units in spice model dialog 2018-04-23 12:31:23 -07:00
Seth Hillbrand 2baca1d650 Standardize colons and units in spice sim settings dialog 2018-04-23 12:31:17 -07:00
Seth Hillbrand 445c0e66fb Align search field 2018-04-23 11:55:28 -07:00
Seth Hillbrand 722886c9c7 Standardize colons in schematic plot dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 805c38ffc5 Standardize colons in new component dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 60abff1c02 Standardize colons in library text dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 424fe8acd4 Standardize colons in libedit pin dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 2c1f14fce5 Standardize colons in draw item dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand c55cb8c557 Standardize colons in ERC dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand f451ffb877 Standardize colons in schematic editor options dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 83319f74c3 Standardize colons in line style dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 2da575d539 Standardize wording and colons in libentry fields dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 617d9288ab Standardize colons in edit label dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 32bb6064d7 Standardize colons in edit schematic component dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 07281d78ad Standardize colons in edit component dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 8c2a7138d1 Standardize colons in BOM dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 4640a656a2 Standardize colons in annotate dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 3693e3b1e0 Standardize colons in track-via properties dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand b2a9df33ea Standardize colons in set grid dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 6f6b65821a Standardize colons in select pretty lib dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 0cbc611135 Standardize colons in select net dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 938f8b1a9a Standardize colons in Print using printer dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 006bfabbdf Standardize colon and remove abbr. in Print dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 0e79538601 Standardize caps in position relative dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand e219ff0c2f Standardize colons pns settings dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 3d2e103374 Standardize colons pns length tune dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 3c00b2a2a8 Standardize colons plot dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand fbb8ccb9ad Standardize colons in pad properties dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 30d1db6b1f Standardize colons non-copper zones dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand 9b9345abba Standardize colons and wording in netlist dialog 2018-04-23 11:53:18 -07:00
Seth Hillbrand d562a7b26d Standardize colons modedit_options_base 2018-04-23 11:53:18 -07:00
Seth Hillbrand b834031425 Standardize colons layers_setup_base 2018-04-23 11:53:18 -07:00
Seth Hillbrand 9956ea20e7 Standardize colons layer_selection 2018-04-23 11:53:17 -07:00
Seth Hillbrand bc7ccab642 Standardize colons global footprint edit 2018-04-23 11:53:17 -07:00
Seth Hillbrand 0ed6751ebe Standardize colons global deletion 2018-04-23 11:53:17 -07:00
Seth Hillbrand 38dae061ce Standardize colon board editor options 2018-04-23 11:53:17 -07:00
Seth Hillbrand f96328afef Standardize colon gendrill_base 2018-04-23 11:53:17 -07:00
Seth Hillbrand 0b07f2ba9e Standardize colon and file/table in footprint lib dialog 2018-04-23 11:53:17 -07:00
Seth Hillbrand 65c3046fc9 Standardize colons for edit_footprint_text_base 2018-04-23 11:53:17 -07:00
Seth Hillbrand f977d210ad Standardize colons for edit_footprint_for_fp_editor 2018-04-23 11:53:17 -07:00
Seth Hillbrand b9adcbdbe3 Standardize colons edit_footprint 2018-04-23 11:53:17 -07:00
Seth Hillbrand 8234cf721c Standardize colon drc_base 2018-04-23 11:53:17 -07:00
Seth Hillbrand 340b9fc2a5 Standardize colon display_options_base 2018-04-23 11:53:17 -07:00
Seth Hillbrand a73cbe221a Standardize colong dimension editor base 2018-04-23 11:53:17 -07:00
Seth Hillbrand f55ad77da6 Standardize colon design_ruls_base 2018-04-23 11:53:17 -07:00
Seth Hillbrand 202e81eaa5 Standardize colon create_array_base 2018-04-23 11:53:17 -07:00
Seth Hillbrand 34fed2075a Standardize colon copper zones base 2018-04-23 11:53:17 -07:00
Seth Hillbrand 87f18665fc Standardize colon block_options_base 2018-04-23 11:53:17 -07:00
Seth Hillbrand c8d1e056f3 Standardize colon SVG_print_base 2018-04-23 11:53:17 -07:00
Jeff Young aa71d41a59 Calculate column widths based on actual text & fontsize.
Fixes: lp:1737361
* https://bugs.launchpad.net/kicad/+bug/1737361
2018-04-23 18:24:10 +01:00
Maciej Suminski 50588dcd1e Fix disabled 'save library' button in the symbol editor
With uninitialized COMPONENT_TREE::m_menuActive there were cases when
application logic erroneously decided to fetch the current library name
from the right click menu selection, even though there was no menu
opened, so an empty string was returned. Empty library name is
equivalent to no library loaded, therefore the save button appeared
disabled.

Fixes: lp:1765937
* https://bugs.launchpad.net/kicad/+bug/1765937
2018-04-23 15:29:26 +02:00
jean-pierre charras 2925b93571 Gerbview: Remove dead code that handled a experimental .gbrjob file, now no longer existing. 2018-04-23 13:04:21 +02:00
Maciej Suminski cfa9916836 Prevent issuing a print command before the previous one is finished
Fixes: lp:1765965
* https://bugs.launchpad.net/kicad/+bug/1765965
2018-04-23 11:25:28 +02:00
Maciej Suminski 3cc0554e33 Code formatting 2018-04-23 11:18:51 +02:00
Wayne Stambaugh 648803dcf7 Eeschema: fix missing part in part list bug in netlist exporter.
Use LIB_ID for LIB_PART_LESS_THAN comparison.  This prevents parts with
library name clashes from being dropped from the part list.
2018-04-22 16:33:34 -04:00
Wayne Stambaugh 41c1657eb6 Eeschema: fix bug in sheet path loading logic.
When a relative sheet path was not in the project path or a subfolder
within the project path, the schematic path would be empty.  Set the
base path to the project path when the schematic path is no within
the project path hierarchy.
2018-04-22 09:47:54 -04:00
jean-pierre charras 4202bb6af6 DIALOG_EDIT_COMPONENTS_LIBID: fix the minimal size (previous code to fix this size was not working) 2018-04-21 17:53:54 +02:00
jean-pierre charras e75762b1e3 Better wording 2018-04-21 16:31:41 +02:00
Wayne Stambaugh d776eaca83 Fix button sizer padding on symbol field edit dialog. 2018-04-20 19:19:13 -04:00
Maciej Suminski a93da4aba6 Restored wxPD_APP_MODAL flag for progress dialogs
The flag is required on Linux, otherwise applications hang right after a
progress dialog disappears.
2018-04-20 22:55:39 +02:00
Jeff Young 4302394990 Consistency between dialog titles and menu items.
... and between eeschema and pcbnew.

Also moved the Symbol & Footprint library table tabs to the top
so it's more clear what "by Scope" means.

Fixes: lp:1765359
* https://bugs.launchpad.net/kicad/+bug/1765359

Fixes: lp:1765516
* https://bugs.launchpad.net/kicad/+bug/1765516
2018-04-20 15:33:46 +01:00
Wayne Stambaugh fc8b852c41 Derive 3D model selection dialog from DIALOG_SHIM. 2018-04-20 10:15:05 -04:00
Maciej Suminski 5fb7f5a615 Fixed an assert in 3D shape download wizard 2018-04-20 14:23:53 +02:00
Maciej Suminski 86906b05e0 Fix 3D shape & footprint download wizards freeze on OSX
Fixes: lp:1758095
* https://bugs.launchpad.net/kicad/+bug/1758095
2018-04-20 12:36:34 +02:00
Maciej Suminski 554cb54a4f Eagle SCH import: save project file after the full path is set
Fixes: lp:1765297
* https://bugs.launchpad.net/kicad/+bug/1765297
2018-04-20 10:04:41 +02:00
Maciej Suminski 536529e48f Fixed unused captured variable warning 2018-04-20 08:44:41 +02:00
Jeff Young 5506efaee5 Add a SaveAndContinue button to the Fields Editor. 2018-04-19 23:13:19 +01:00
Jeff Young b9239d8728 Add defensive coding for column widths in Fields Editor. 2018-04-19 21:39:25 +01:00
Jeff Young 9201417c06 Handle new fields in global field editor.
Fixes: lp:1765443
* https://bugs.launchpad.net/kicad/+bug/1765443
2018-04-19 20:33:03 +01:00
Maciej Suminski f81c77cd4e Edit Tool: update the reference point for in-place modification
Fixes: lp:1765027
* https://bugs.launchpad.net/kicad/+bug/1765027
2018-04-19 17:10:06 +02:00
Maciej Suminski 1a5139b91f eeschema: renamed 'Symbol Table' to 'Fields Editor'
Fixes: lp:1765360
* https://bugs.launchpad.net/kicad/+bug/1765360
2018-04-19 16:26:17 +02:00
Maciej Suminski 0a58de0c46 Selection Tool: reset is-hover flag
Fixes: lp:1765034
* https://bugs.launchpad.net/kicad/+bug/1765034
2018-04-19 16:17:54 +02:00
Maciej Suminski dce0743ddb Removed nagging dialog in the delete tool. 2018-04-19 15:35:10 +02:00
Maciej Suminski e3a06dca70 Fallback to system ngspice library when libngspice is not found in other paths on macOS 2018-04-19 14:48:31 +02:00
Maciej Suminski 2865084ce8 Library Field editor: validate alias name before changing it
When LIB_ALIAS is renamed, it validates the new name. In case the name
typed in the field edit dialog is invalid, there was a discrepancy
between the name used further in the code and the actual alias name.

Fixes: lp:1765375
* https://bugs.launchpad.net/kicad/+bug/1765375
2018-04-19 14:47:34 +02:00
Maciej Suminski a695c995c7 pcbnew: fixed a warning regarding unused captured variables 2018-04-19 14:42:53 +02:00
Maciej Suminski 4526f40fe1 ngspice: add extra paths to search for libngspice
The main purpose of the patch is to load libngspice from macOS bundle.
There are also some additional paths that could make Windows developers
easier.

Fixes: lp:1630675
* https://bugs.launchpad.net/kicad/+bug/1630675
2018-04-19 11:43:29 +02:00
Maciej Suminski a8ef222517 ngspice: keep the ngspice DLL handle as an automatic variable 2018-04-19 11:44:48 +02:00
Maciej Suminski d3f23a62ec Bundle libngspice, code models and init scripts for macOS 2018-04-19 11:44:48 +02:00
Maciej Suminski c960d671cd Changed negative recursion level argument to positive
BEZIER_POLY::recursiveBezier() was called with negated 'level'
variable as an argument which is incorrect for an unsigned type.
2018-04-19 08:39:46 +02:00
Jeff Young e4feb315d5 Clean up some spacing issue with the Save button.
Also went back to using a smaller font for the status lines,
although this time using more system settings.
2018-04-18 22:26:18 +01:00
Jeff Young 442d1169a8 Adjust min sizes of Global Fields editor for Windows.
Also gets rid of a slew of unnecessary sizers in the dialog.
2018-04-18 20:37:20 +01:00
Simon Richter 7e47ef7471 Fix warnings for unreferenced local variables 2018-04-18 15:08:37 -04:00
jean-pierre charras 3179e40b57 Fix compil warning (perhaps 32 bit build specific) 2018-04-18 20:41:18 +02:00
Seth Hillbrand f68268c8ca Only update msgpanel when dimension started
Fixes: lp:1765118
* https://bugs.launchpad.net/kicad/+bug/1765118
2018-04-18 10:06:23 -07:00
Seth Hillbrand 7b3dc9c28d Fix tabs->spaces 2018-04-18 08:22:52 -07:00
Maciej Suminski 41ac458e79 Fixed SCH_LEGACY_PLUGIN_CACHE::saveBezier() 2018-04-18 09:36:22 +02:00
jean-pierre charras 90741a9d76 Cvpcb: allows more room to display messages to avoid long strings to overlap buttons 2018-04-18 09:25:33 +02:00
Jean-Samuel Reynaud ad0deb16a2 Fix pcbnew: refresh canvas on opening a file only after mouse move
Fixes: lp:1760819
* https://bugs.launchpad.net/kicad/+bug/1760819
2018-04-18 09:01:13 +02:00
Seth Hillbrand 794e8d8a04 Moving IsOk dialogs to correct parents 2018-04-17 17:27:15 -07:00
Seth Hillbrand 626c8a71f7 Reworking sheet duplication messages and annotation
The messages on sheet duplication are changed to reflect the action
perceived by the user when accepting/rejecting the change.

Annotation is also reset for duplicating sheets where maintaining
existing annotation would conflict with existing sheets.
2018-04-17 17:12:51 -07:00
Seth Hillbrand fdd3f52e2d Move debug msg to relevant section 2018-04-17 17:12:29 -07:00
Jeff Young db2cda7271 Fix some merge issues. 2018-04-17 20:26:50 +01:00
Seth Hillbrand 2d5da8b04f Fix assert when removing CurPart
Fixes: lp:1762099
* https://bugs.launchpad.net/kicad/+bug/1762099
2018-04-17 12:20:01 -07:00
Seth Hillbrand 853f73e6b7 Prevent duplicate sheetnames when using mouse copy 2018-04-17 12:01:03 -07:00
Seth Hillbrand ca544eb138 Adding radius info to panel for arcs/circles 2018-04-17 11:21:34 -07:00
Seth Hillbrand 6d855cbccb Remove extraneous assert
Fixes: lp:1764619
* https://bugs.launchpad.net/kicad/+bug/1764619
2018-04-17 10:53:27 -07:00
jean-pierre charras 854cb70052 Fix compil issue with gcc 4.8 on Ubuntu 2018-04-17 19:35:26 +02:00
Jeff Young 3be876c388 Cleanup of trace logs from Simon Richter. 2018-04-17 17:27:18 +01:00
Seth Hillbrand 45d1c19eb7 Add tooltip text to drag options. 2018-04-17 08:59:52 -07:00
jean-pierre charras 0294e41cbc fix minor compil warnings (about signed/unsigned comparison) 2018-04-17 16:08:12 +02:00
Jeff Young e84e5606c9 Fix compiler warning. 2018-04-17 15:06:38 +01:00
Jeff Young 000457db7c Move Fields Editor to wxGrid.
Makes in-place editing much easier and fixes some other issues
(see bug reports).

Fixed sorting bugs in References and added better sorting for
Values.

Removed Description column as it wasn't editable and caused more
confusion than value.

Removed auto-column-width after initial render.

Re-implemented undo/redo.

Fixes: lp:1749287
* https://bugs.launchpad.net/kicad/+bug/1749287

Fixes: lp:1737361
* https://bugs.launchpad.net/kicad/+bug/1737361

Fixes: lp:1759756
* https://bugs.launchpad.net/kicad/+bug/1759756

Fixes: lp:1763223
* https://bugs.launchpad.net/kicad/+bug/1763223

Fixes: lp:1761378
* https://bugs.launchpad.net/kicad/+bug/1761378
2018-04-17 11:39:44 +01:00
jean-pierre charras 268aeeb18f Pcbnew: More explicit tool tip in right vertical toolbar (place auxiliary axis origin tool). 2018-04-17 10:06:11 +02:00
jean-pierre charras 9865fcd929 3D viewer: fix hotkeys in 3D preview panel, and incorrect icons in context menu. 2018-04-17 09:59:21 +02:00
Seth Hillbrand b46fc7fe9c Adding option for Cmake-based DISTCC/CCACHE 2018-04-16 16:28:15 -07:00
Jeff Young 12ec56bc15 Prevent reentrancy in footprint loading.
Also removes parallel implementation in favour of using the
normal one (with a new wxGauge-backed PROGRESS_REPORTER).

Fixes: lp:1764196
* https://bugs.launchpad.net/kicad/+bug/1764196
2018-04-16 23:19:08 +01:00
jean-pierre charras 2974a2c10a Eeschema: fix broken generation of the project library cache.
Because the cache is broken, the rescue library was never created after missing library or change in lib.

This was due to the fact the symbol name inside the cache is broken, since commit a5844c9,
because all illegal chars in symbol name are replaced by '_'.
Unfortunately, in library cache, the ':' (illegal in usual libraries) is used to build the cached symbol name.
so in lib cache, symbol names were broken, making this lib useless.

this fix allows the ':' char in symbol name in lib.

Fixes: lp:1764166
https://bugs.launchpad.net/kicad/+bug/1764166
2018-04-16 10:58:28 +02:00
jean-pierre charras d2cf2fe61c Eeschema, fix issue when rotating a hierarchical sheet: depending on the sheet size, the rotation center was not always on grid.
Therefore, in this case, pin sheets were no longer on grid.

Fixes: lp:1764270
https://bugs.launchpad.net/kicad/+bug/1764270
2018-04-16 10:39:34 +02:00
jean-pierre charras 8fcdc4f6c3 3D viewer: fixes about hotkeys and menubar.
Move code to specific files 3d_menubar.cpp and hotkeys.cpp like in other tools.
2018-04-15 14:07:33 +02:00
jean-pierre charras 3e64c9de38 Fix incorrect behavior of ReplaceIllegalFileNameChars( wxString& aName, int aReplaceChar ) for non ASCII8 chars.
(this function was using a comparison using chars to test wide chars)

Fixes: lp:1764055
https://bugs.launchpad.net/kicad/+bug/1764055
2018-04-15 10:06:53 +02:00
jean-pierre charras 9203e397fe List hotkeys: Use the new Ctrl+F1 key in page layout editor, like in other editors 2018-04-14 19:05:24 +02:00
jean-pierre charras 07dc12fdd3 Fix incorrect UI management of Zoom to Selection, created by fix 2a419156 2018-04-14 17:44:17 +02:00
jean-pierre charras e9ef555c6a Use Ctrl+F1 to display hotkey list also in Gerbview and Kicad manager 2018-04-14 17:12:28 +02:00
jean-pierre charras 4a254ee7f3 Eeschema, schematic file save issue: fix missing switch to C locale before saving files
The scale factor of bitmap images was incorrectly saved in countries using a comma as floating point separator

Fixes: lp:1763726
https://bugs.launchpad.net/kicad/+bug/1763726
2018-04-14 16:59:17 +02:00
Wayne Stambaugh 9b5bbd7c77 Fix wxFileDialog assertion when worksheet file has absolute path.
Fixes lp: 1763887

https://bugs.launchpad.net/kicad/+bug/1763887
2018-04-14 10:51:15 -04:00
Wayne Stambaugh a1acec5f13 Revert broken hotkey fix.
The hotkey fix committed in 53b1ec81 broke non-us keyboards.  Change the
hotkey help hotkey from '?' to Ctrl+F1 to prevent the hotkey list dialog
from being shown when placing a bus wire junction in Eeschema and when
changing the track posture in Pcbnew.  This is still broken in the GAL
framework.
2018-04-14 08:24:25 -04:00
Jeff Young 2a419156e0 Don't try to check uncheckable menu items.
When updating toolbars make sure the events are coming from the
toolbar in question (and not the menus which share the same ID).

Fixes: lp:1763563
* https://bugs.launchpad.net/kicad/+bug/1763563
2018-04-13 21:42:31 +01:00
Wayne Stambaugh 81843c37a4 Organize trace debugging code for ease of maintenance. 2018-04-13 09:59:01 -04:00
Ievgenii Meshcheriakov 89bf02adb7 Define GLM_FORCE_CTOR_INIT during build
This ensures that GLM objects are still initialized correctly when new
version of this library are used (after 0.9.9-a2).

This also fixes display corruption in 3D-viewer with Raytracer.

Fixes: lp:1762379
* https://bugs.launchpad.net/kicad/+bug/1762379
2018-04-13 14:45:16 +02:00
Maciej Suminski 0e151687e3 Fixed a typo 2018-04-13 14:24:57 +02:00
Maciej Suminski a41b2d6803 Fix names of added aliases 2018-04-13 14:24:57 +02:00
Maciej Suminski b907fb856d Fix names of libraries added to symbol/footprint library tables 2018-04-13 14:24:57 +02:00
Maciej Suminski 3f734eb1b5 Improved validation of library and entry names
Symbol/footprint library and entry have the same set of forbidden
characters with a single exception, space character. To accommodate for
this difference, LIB_ID validation and fix methods have been extended to
specify the LIB_ID type that is checked (schematic/board).

LIB_ID::HasIllegalChars() and LIB_ID::FixIllegalChars() had two different
sets of characters treated as invalid in LIB_IDs. The set has been
factored out to another function to avoid duplication.
2018-04-13 14:24:57 +02:00
Maciej Suminski 862fb430e7 eeschema: Fixed setting unit condition in the component properties dialog 2018-04-13 14:24:57 +02:00
jean-pierre charras e57435c0fc Fix compil issue (created by commit "Added std::less specialization for wxPoint") with wxWidgets 3.1.1 2018-04-13 11:06:46 +02:00
Seth Hillbrand 1663627135 Update msg panel on create/modify graphic items
This clears the msg panel when not editing an item and updates the
position information when moving
2018-04-12 10:07:24 -07:00
Seth Hillbrand 0f3fc4b6eb Avoid doubling-up std namespace 2018-04-12 09:38:45 -07:00
Tomasz Włostowski 4e99b0d0e7 pcbnew: refresh message panel while drawing & editing graphical lines, arcs, circles and texts
Fixes: lp:1763052
* https://bugs.launchpad.net/kicad/+bug/1763052
2018-04-12 18:23:33 +02:00
Maciej Suminski 58c27398cb Eagle SCH import: improved implicit connections resolution
Nets assigned by power pins are weak, meaning they are valid
as long as there is nothing else attached to such pins. This patch
checks whether there are other wires or pins attached to a power pin
before placing a global net label.

Fixes: lp:1755191
* https://bugs.launchpad.net/kicad/+bug/1755191
2018-04-12 18:12:22 +02:00
Maciej Suminski b766dbc7a4 Added std::less specialization for wxPoint
Requried to use wxPoint as key type in maps
2018-04-12 18:09:18 +02:00
Maciej Suminski f42ca89bb4 cvpcb: Overridden SetStatusText() to use m_statusLine{1,2}
Fixes: lp:1763267
* https://bugs.launchpad.net/kicad/+bug/1763267
2018-04-12 13:02:46 +02:00
Maciej Suminski df8bc93e4b gerbview: Removed duplicate zoom-to-selection handler, made the toolbar button checkable
Fixes: lp:1763270
* https://bugs.launchpad.net/kicad/+bug/1763270
2018-04-12 11:52:08 +02:00
jean-pierre charras c421840a9e Cvpcb: avoid crash on start if _pcbnew.kiface (needed by cvpcb) is not found. 2018-04-12 11:07:43 +02:00
Maciej Suminski 0d8692da20 Changed ACTION_MANAGER assert() calls to wxASSERT()
wxASSERT(), contrary to assert() does not terminate the program when
triggered. As assertions in ACTION_MANAGER are not critical and should be
treated as warnings - there is no need to close the program.
2018-04-12 08:47:09 +02:00
Seth Hillbrand 86f744a1fd Adding initialization to GLM vectors 2018-04-11 10:59:28 -07:00
Ievgenii Meshcheriakov 18b0b78397 Correctly initialize module matrices in raytracer
Initialize module matrices to identity matrices instead of default zero
matrices while creating scenes for raytracer. This fixes disappearing
modules in raytracer view.

Fixes: lp:1763026
* https://bugs.launchpad.net/kicad/+bug/1763026
2018-04-11 10:06:36 -07:00
jean-pierre charras c1ae2fd0a8 Typo 2018-04-10 20:27:54 +02:00
jean-pierre charras 4f3b77347a DIALOG_ENV_VAR_CONFIG: allows using lowercase chars when typing an env var name. these lowercase chars are converted to uppercase on the fly.
Previously, lowercase chars were not accepted, and nothing was displayed when trying to type a name in lowercase chars.
2018-04-10 20:23:49 +02:00
jean-pierre charras 9ea360f168 Pcbnew: avoid useless validation dialog about modifications when closing pcbnew or opening a file, when the initial board is empty.
Some changes (enable/disable a layer) set the dirty bit even for empty boards.
So when closing pcbnew, the dialog asking for saving the board was shown, even when no board loaded.
2018-04-10 20:17:47 +02:00
Jeff Young 5ef715f3d3 Scan all items when looking for the weak reference.
... not just those directly in the draw list.

Fixes: lp:1747037
* https://bugs.launchpad.net/kicad/+bug/1747037
2018-04-09 21:19:11 +01:00
Jeff Young 84151990cd Don't set dirty bit when adding MARKERs.
They're not saved in the file, so they shouldn't dirty it.

Fixes: lp:1762497
* https://bugs.launchpad.net/kicad/+bug/1762497
2018-04-09 21:19:11 +01:00
jean-pierre charras cb134fd065 Update demos 2018-04-09 19:37:17 +02:00
jean-pierre charras 20c30a4425 3D viewer: Cosmetic enhancement in DIALOG_3D_VIEW_OPTIONS. 2018-04-09 19:37:17 +02:00
Jeff Young f83ebb316e Don't refill if zone fills aren't out-of-date. 2018-04-09 17:04:51 +01:00
Jeff Young 05dae96275 Move zone out-of-date check to the right place.
Fixes: lp:1760097
* https://bugs.launchpad.net/kicad/+bug/1760097
2018-04-09 15:09:47 +01:00
Maciej Suminski 4b0d477c76 Symbol Editor: handle delete hotkey in block edit mode 2018-04-09 14:04:06 +02:00
Maciej Suminski 9bd6d5e97c Fix mirror X/Y hotkeys in the Symbol Editor
Fixes: lp:1762136
* https://bugs.launchpad.net/kicad/+bug/1762136
2018-04-09 13:40:42 +02:00
Jeff Young 900bf0c7a6 Allow connections to no-net items in Highlight Collisions mode.
If the track being routed is unconnected, or the end-point
clicked on is unconnected, allow the connection by changing
the unconnected item to the net of the connected one.

Fixes: lp:1548129
* https://bugs.launchpad.net/kicad/+bug/1548129
2018-04-09 11:05:14 +01:00
Jeff Young a597ebc85e Break a track when placing a via on it.
Fixes: lp:1737349
* https://bugs.launchpad.net/kicad/+bug/1737349
2018-04-09 11:05:14 +01:00
Jeff Young d54a252eaa Check zone fills for being out-of-date during DRC. 2018-04-09 11:05:14 +01:00
jean-pierre charras 9f5316e38f Remove code related to Gerber job file old format writer, as this format does not exist now.
This old format is now officially replaced by a JSON syntax.
2018-04-09 09:26:01 +02:00
Carsten Schoenert a11714b1a4 fix misspelled 'an other' -> 'another' 2018-04-08 13:24:37 -04:00
Carsten Schoenert 77b3a662fc fix misspelled 'Allows to' -> 'Allows one to' 2018-04-08 13:24:30 -04:00
Carsten Schoenert 1f32f7c55b fix misspelled 'allows to' -> 'allows one to' 2018-04-08 13:24:18 -04:00
Mario Hros efa2a13eaa Don't install Python shell when wxPython support is disabled.
Fixes lp:1760200

https://bugs.launchpad.net/kicad/+bug/1760200
2018-04-08 13:20:49 -04:00
Maciej Suminski cb2c447c23 Spice Simulator: add close buttons to plot tabs
Fixes: lp:1761902
* https://bugs.launchpad.net/kicad/+bug/1761902
2018-04-07 22:53:50 +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
Jeff Young baef22df9a Fix memory leak and push menu change to other apps.
Fixes: lp:1761848
* https://bugs.launchpad.net/kicad/+bug/1761848
2018-04-07 14:14:55 +01:00
Jeff Young 0bd5cc4470 Borrow LTSpice's unconnected net nomenclature.
Using an unqualified "?" results in all the unconnected pins
being connected to each other.

Fixes: lp:1720619
* https://bugs.launchpad.net/kicad/+bug/1720619
2018-04-07 11:01:56 +01:00
Jeff Young be4d7987d3 Rebuild apple menu along with others when language changes.
Fixes: lp:1761848
* https://bugs.launchpad.net/kicad/+bug/1761848
2018-04-07 11:01:56 +01:00
jean-pierre charras 2bfbff104e Very minor fix: remove a trailing space in string. Mainly to help translations. 2018-04-06 20:12:33 +02:00
jean-pierre charras b9b8d14eb9 Update tools_to_build_newstroke-font files to V5 2018-04-06 20:09:32 +02:00
Jeff Young 0dc719ca1a Update 3D view immediately when user changes parameters.
The ray-tracer runs in the background so you can still change
other settings while it's redrawing.

Fixes: lp:1612419
* https://bugs.launchpad.net/kicad/+bug/1612419
2018-04-06 17:03:00 +01:00
Maciej Suminski e7ed415930 Eagle SCH import: handle implicit connections
Each named power input pin in Eagle creates an implicit connection to a
net with the name of the pin (e.g. GND, VCC). It is also done for the
units (gates in Eagle nomenclature) that have not been instantiated in
the schematics.

To emulate this behaviour in KiCad:
- Placed components are checked for power input pins, so they will have
global net labels attached to create the described implicit connections.
- As the components are placed, the remaining units of the symbol are
checked for power inputs to see if they need to be instantiated together
with global net labels.

Fixes: lp:1755191
* https://bugs.launchpad.net/kicad/+bug/1755191
2018-04-06 16:20:59 +02:00
Maciej Suminski 78c9b34b5d Eagle SCH import: moved sheet bbox calculation to a function 2018-04-06 16:02:58 +02:00
Maciej Suminski 9ee698bbcd Eagle SCH import: save the imported library file once the library section is processed
It is required to access symbol data in later import stages.
2018-04-06 16:02:18 +02:00
Kristoffer Ödmark fdb6bbab7b Footprint Wizard now also handles custom Env paths 2018-04-06 14:51:09 +01:00
Jeff Young 591a303777 Make ERC options dialog clearer.
Fixes: lp:1667600
* https://bugs.launchpad.net/kicad/+bug/1667600
2018-04-06 14:51:09 +01:00
Tomasz Włostowski 15c64ee92d pcbnew: CONNECTIVITY_ALGO should always mark newly added nets as dirty
Fixes: lp:1761698
* https://bugs.launchpad.net/kicad/+bug/1761698
2018-04-06 14:57:27 +02:00
Jeff Young 24b8768f43 Fix missing include. 2018-04-06 11:39:35 +01:00
Jeff Young db73daa09c Workaround for wxString's lack of thread safety. 2018-04-06 11:26:59 +01:00
Jeff Young 611d5a0dc4 Standardize "assign footprints" terminology.
Fixes: lp:1760867
* https://bugs.launchpad.net/kicad/+bug/1760867
2018-04-06 11:26:59 +01:00
Maciej Suminski 94dbcc7199 Fixed crash after multiple 'cut' commands in the footprint editor
When multiple cut commands were issued, the cut command handler would
restart multiple times and keep running until the handler that was
invoked first finishes. As all handlers kept a selection copy, they
would try to save the deleted items to the clipboard resulting in a
crash.

Fixes: lp:1761221
* https://bugs.launchpad.net/kicad/+bug/1761221
2018-04-05 00:26:57 +02:00
Seth Hillbrand 6fb47faebd Workaround for IGES import bug in OCE-0.18
This changes the IGES import parameter precision to be file-defined
instead of hard-coded in KiCad.  OCE-0.18 does not handle faces with
a set of points whose approximation creates a single point.

By allowing the file to set the precision level, we leave it to the
generating program to create a file with non-degenerate faces.

Fixes: lp:1738872
* https://bugs.launchpad.net/kicad/+bug/1738872
2018-04-04 13:03:34 -07:00
Seth Hillbrand d1af5210e0 Libedit: Fix a few places where item could be NULL
Fixes: lp:1761058
* https://bugs.launchpad.net/kicad/+bug/1761058
2018-04-04 10:20:15 -07:00
Seth Hillbrand bbb513e2e5 Ensure that we are drawing holes and outlines
Set hole colors in output to non-transparent values.
Ensure holes are traced when drawing drill marks.

Fixes: lp:1646482
* https://bugs.launchpad.net/kicad/+bug/1646482
2018-04-04 10:20:15 -07:00
jean-pierre charras 906b389fab fp editor: minor cosmetic fix in main menu. 2018-04-04 17:40:42 +02:00
Wayne Stambaugh 696ff81dc7 Load correct schematic page layout description file in stand alone mode.
Fixes lp:1678849

https://bugs.launchpad.net/kicad/+bug/1678849
2018-04-04 10:18:12 -04:00
Jeff Young df43f071e1 Keep track of open sockets and dispose of them in d'tor.
Fixes: lp:1760936
* https://bugs.launchpad.net/kicad/+bug/1760936
2018-04-04 12:02:40 +01:00
Jeff Young 5e36fe8df7 Move timestamp setting where it will alwasy get set.
Also update the rest of the symbol-chooser usage to current
specs, including examining the timestamp to see if the list
needs loading at all.

Partial fix to: lp:1760936
* https://bugs.launchpad.net/kicad/+bug/1760936
2018-04-04 12:02:40 +01:00
jean-pierre charras 70988271c1 WX_TEXT_ENTRY_DIALOG: fix a wxASSERT ( very minor issue in debug mode) 2018-04-04 10:40:27 +02:00
Maciej Suminski 8b21a0a53d Changed PCB_BASE_FRAME::CreateNewModule() to stop adding modules to the board
When a new footprint is created, CreateNewModule() added it to a dummy
board in the footprint editor. If a footprint was indeed created (the
action has not been aborted) then the dummy board was cleared,
destroying the just created footprint. Also, the new footprint is later
added with AddModuleToBoard() call.

Fixes: lp:1761052
* https://bugs.launchpad.net/kicad/+bug/1761052
2018-04-04 09:34:12 +02:00
Jeff Young 2e4f50f206 Make sure segments read from file are in correct order.
Fixes: lp:1752033
* https://bugs.launchpad.net/kicad/+bug/1752033
2018-04-03 22:01:34 +01:00
Maciej Suminski 7943372e8b Refill zones only when required
Previous implementation refilled zones every time they have been
unselected. This patch adds a flag that tracks whether the
zone has been actually modified, so it will be refilled only when
necessary.

Fixes: lp:1760903
* https://bugs.launchpad.net/kicad/+bug/1760903
2018-04-03 22:28:05 +02:00
jean-pierre charras a2f118d2fa Gerbview: fix not working menu item "Zoom to Selection" in main menu. This also fixes a wxASSERT for this menu item 2018-04-03 16:30:16 +02:00
Maciej Suminski 71bf488507 Eagle SCH importer: fixed open-collector pin type, simplified pin direction matching 2018-04-03 14:26:15 +02:00
Maciej Suminski 6d06ed3579 Eagle SCH importer: minor fixes
- set correct reference for components
- handle "pwr" direction for pins
- discarded a redundant variable
2018-04-03 14:26:15 +02:00
jean-pierre charras f8a3ec4974 Add a method to facilitate Tools handling in main frame toolbars.
Fix also a bug in gerbview_frame.cpp, about a broken toolbar accessor (fortunately not used in current code)
2018-04-03 13:00:20 +02:00
jean-pierre charras c867de53b8 Page layout editor: fix a wxASSERT when trying to open view menu from the main menubar.
This is due to the fact the same ID was used for a menuitem in menubar, and a tool in toolbars.
2018-04-03 09:31:52 +02:00
Wayne Stambaugh 747e14f9e1 Fix broken link in compiling.md. 2018-04-02 18:27:37 -04:00
Wayne Stambaugh 4b2ced341e Fix button sizer padding in WX_TEXT_ENTRY_DIALOG. 2018-04-02 18:05:37 -04:00
Wayne Stambaugh 53b1ec8146 Fix track posture hotkey bug on windows.
The change track posture hotkey '/' was getting interpreted as the show
hotkey list shortcut '?' on windows.  This fix is temporary hack to fix
the problem which much more involved than the simple #ifdef/#endif used
to fix this issue.

Add key code tracing to help analyze key codes for future development.
2018-04-02 18:05:37 -04:00
Jeff Young d391489596 Don't clear old footprint till after user has hit OK.
Fixes: lp:1759190
* https://bugs.launchpad.net/kicad/+bug/1759190
2018-04-02 22:32:09 +01:00
Jeff Young f4c972db5e Name the Get and Move Footprint dialog to match the command.
Fixes: lp:1760635
* https://bugs.launchpad.net/kicad/+bug/1760635
2018-04-02 20:16:26 +01:00
Russell Oliver 89381e1103 Eagle Import: Correct layer set based on cream setting and rotate rectangles
Fixes: lp:1758747
* https://bugs.launchpad.net/kicad/+bug/1758747
2018-04-02 10:59:54 -07:00
Seth Hillbrand ee05b1c92e Add polygon arc support to Eagle import 2018-04-02 10:49:43 -07:00
Seth Hillbrand 532bf09817 Don't save broken polygon
If a polygon has fewer than 3 points, it is invalid.  We need to
register this as failure, otherwise we save the formatting/closing
s-expr for the polygon without the actual polygon points. This breaks
the footprint and board.
2018-04-02 10:18:10 -07:00
Maciej Suminski dd56f16776 Fix symbol editor crash when modifying fields while a field is selected
Field Editor dialog calls LIB_EDIT::SetFields() that deletes the old
LIB_FIELD objects and creates new ones. If any of the old LIB_FIELD
objects had been selected before invoking the dialog, then one of the
update UI event handlers will crash trying to access the object.
2018-04-02 17:51:11 +02:00
jean-pierre charras 0171547154 Context menu: use same message for Zoom and Grid in Legacy mode and GAL mode.
a minor cosmetic other fix in Eeschema, edit submenu.
2018-04-01 21:09:52 +02:00
jean-pierre charras e750417fa0 Eeschema: fix many wxASSERT when trying to open menus from the main menubar.
This is due to the fact the same ID was used for menuitems in menubar,
and tools in toobars.
Especially, some items were not compatible due to different attributes.

Windows does not accept the same ID for 2 items inside the same frame.
It creates issues (items not shown, Asserts, ...)
2018-04-01 20:58:27 +02:00
jean-pierre charras 54f14b08ca commit forgotten change in my previous commit 2018-03-31 18:46:29 +02:00
jean-pierre charras fa39acfc2f Gerbview, export to pcbnew : export polygons as new DRAWSEGMENT polygonal shape.
It can creates issues on copper layers, but the only one other alternative is to ignore polygons in export,
and this is worst.
2018-03-31 18:43:12 +02:00
jean-pierre charras 5b8c35f64d Gerbview: minor fix: do not report error if in header INCH ot METRIC command has no parameter (,LZ or ,TZ format)
I am not sure it should be reported, because LZ or TZ format has no meaning in decimal format, and can be omitted.
2018-03-31 18:40:29 +02:00
jean-pierre charras 62c5a706d5 DIALOG_GRAPHIC_ITEM_PROPERTIES: fix a not very understandable error message (especially when Dwgs.User layer is disabled).
Rename the method PCB_LAYER_BOX_SELECTOR::SetLayerSet to the better name SetNotAllowedLayerSet
2018-03-31 10:46:52 +02:00
Jon Evans b813eac254 Omit unnecessary scripts directory from MacOS build output 2018-03-30 22:56:51 -04:00
Jon Evans e3d9a23867 Properly escape urls passed to wxLaunchDefaultBrowser() 2018-03-30 22:02:13 -04:00
Seth Hillbrand 62fe78f08c Eeschema: Simplify GetItem
Avoids calling HitTest on each item when it is not needed
2018-03-30 17:26:34 -07:00
Seth Hillbrand 8bb9084ea9 Revise TestSegmentHit to catch missing hits
Fixes issue where TestSegmentHit falsely skips segments that are
slightly off 45°. Improves speed of function by exiting on non-hits
more quickly. Simplifies function and removes magic numbers.
2018-03-30 17:26:34 -07:00
Seth Hillbrand 7d3d9f7188 Wrapping left-over debug printf() in DBG() 2018-03-30 16:17:29 -07:00
Seth Hillbrand 2e0b75c058 Remove internal CheckCXXSymbolExists
Since Cmake 2.8.6, Cmake provides this macro.  Our use references
internal Cmake variables that have changes in Cmake 3.11.
2018-03-30 14:47:16 -07:00
Maciej Suminski 7483a73a5f Set OK button as the default one in WX_TEXT_ENTRY_DIALOG
Enables accepting the input by pressing the Return key.
2018-03-30 15:29:48 +02:00
Jon Evans b8c282fa6f Don't complain about perfectly-closed polygons as self-intersecting 2018-03-29 22:20:00 -04:00
Jon Evans 081c77f6bd OPENGL_GAL::DrawSegment(): Enforce nonzero width to match Cairo
Fixes: lp:1759958
* https://bugs.launchpad.net/kicad/+bug/1759958
2018-03-29 22:13:46 -04:00
Jon Evans 1ec217d70e Fix hit testing for zero-width gerber items 2018-03-29 22:04:51 -04:00
Seth Hillbrand 7c70e969db Prevent warning when renaming sheet name
Renaming a subsheet but keeping the filename should not present a
warning to the user.  The was triggered due to comparing a
fully-qualified filename to a relative filename.

Fixes: lp:1744475
* https://bugs.launchpad.net/kicad/+bug/1744475
2018-03-29 13:51:02 -07:00
Seth Hillbrand 4917540069 Clarify timestamp type for wxDateTime 2018-03-29 09:29:05 -07:00
Maciej Suminski eb9099238a Eagle SCH import: Improved net label placement algorithm
Eagle support net labels that are naming wires not directly connected to
the labels. In KiCad it is not possible, therefore such detached net
labels need to be moved, so they touch the corresponding wire.

The initial algorithm did not take into account that a moved net label
might be placed on a wire crossing, effectively shorting two nets. This
commit improves the placement algorithm by avoiding the wire crossing
points when placing a label.

Fixes: lp:1748502
* https://bugs.launchpad.net/kicad/+bug/1748502
2018-03-29 12:16:11 +02:00
Maciej Suminski 88915f7940 SCH_EAGLE_PLUGIN::addBusEntries(): prevent operating on deleted objects 2018-03-29 12:11:36 +02:00
Maciej Suminski 168112cf84 SEG: added Center() method 2018-03-29 12:11:35 +02:00
Maciej Suminski 99e79c077a Eagle SCH import: Code formatting 2018-03-29 12:11:35 +02:00
jean-pierre charras 0f0d9afa66 Pcbnew, legacy mode: fix ratsnest display artifacts when finishing or removing a track 2018-03-29 09:28:41 +02:00
Seth Hillbrand d1ab62fb4d pcbnew: Save only edited footprint when saving
Don't re-save all files in a library when editing a single footprint.
This creates issues with formatting in version control systems where
unmodified files are re-written without being explicitly changed by the
user.

Fixes: lp:1752991
* https://bugs.launchpad.net/kicad/+bug/1752991
2018-03-28 14:42:32 -07:00
Jon Evans ed99251f0b Add explicit file:// URI scheme for html help files
This fixes the help location on MacOS
2018-03-28 17:18:15 -04:00
jean-pierre charras 6740a37632 move and swap layers: make changes undoable.
minor code cleanup.
2018-03-28 15:30:11 +02:00
jean-pierre charras 6a4d14bade Fix cosmetic issues in dialog. Use move instead of swap in dialog, to avoid mistakes, as the dialog allows moving objects between layers, and do not really swap layers. 2018-03-28 12:45:54 +02:00
Seth Hillbrand 952aa7a1a6 Removing the last of time_t and fixing downcast corner bug in collector 2018-03-27 16:52:06 -07:00
jean-pierre charras ffa454d6f9 class MODULE: use timestamp_t instead of time_t in SetLastEditTime and GetLastEditTime, like in all other methods using a time stamp. 2018-03-27 20:43:52 +02:00
jean-pierre charras 2edc675eaf DIALOG_LAYERS_SETUP: force 4 non copper layers to be always in use.
edge cut, courtyard and margin layers are (or can be) used in DRC.
So they are seen as mandatory, and the dialog always force them active.
2018-03-27 20:26:48 +02:00
Seth Hillbrand 545e6bbd0c Defining time_t for Python
Fixes: lp:1732738
* https://bugs.launchpad.net/kicad/+bug/1732738
2018-03-27 09:43:23 -07:00
jean-pierre charras 78161b5922 Layers setup management: Warn user if some removed layers are in use in footprints loaded on the board.
Fix also memory leak and missing connectivity rebuild.
2018-03-27 13:44:59 +02:00
jean-pierre charras 602d9e1972 Fix a missing init in gerber plot script demo.
Fixes: lp:1759071
https://bugs.launchpad.net/kicad/+bug/1759071
2018-03-27 13:42:51 +02:00
Jon Evans 0ded476f9d Add a hotkey to control net highlighting
Fixes: lp:1757446
* https://bugs.launchpad.net/kicad/+bug/1757446
2018-03-26 23:09:44 -04:00
Seth Hillbrand 9472444b41 Fix minor rounding error in curved wire import 2018-03-26 15:18:47 -07:00
Seth Hillbrand ced0fcee1e Updating Eagle Importer to take curved zones
Fixes: lp:1755879
* https://bugs.launchpad.net/kicad/+bug/1755879
2018-03-26 15:09:56 -07:00
Maciej Suminski 886dc48cc4 Point Editor: reset the pointer to the modified point as it becomes invalid
Fixes: lp:1759024
* https://bugs.launchpad.net/kicad/+bug/1759024
2018-03-27 00:03:48 +02:00
Jeff Young 8b94606fb5 Promote selection up context menu hierarchy.
This is so that tools checking for a selected item won't think
the menu has been cancelled if the selection was in a submenu.

Fixes: lp:1758372
* https://bugs.launchpad.net/kicad/+bug/1758372
2018-03-26 20:35:49 +01:00
Jeff Young 778a3a4777 Count pins instead of using netcount as a proxy.
Fixes: lp:1703155
* https://bugs.launchpad.net/kicad/+bug/1703155
2018-03-26 19:57:08 +01:00
Tomasz Włostowski ca4e4aead4 router: don't push vias if push force is zero
Fixes: lp:1758540
* https://bugs.launchpad.net/kicad/+bug/1758540
2018-03-26 20:13:32 +02:00
Seth Hillbrand 347f6daddc Eagle Converter: Adjust arcs to use error-based alg
Implements the revised, difference-error based algorithm in the Eagle
arc import rather than using the hard-coded 32-segments/360°
2018-03-26 10:39:23 -07:00
Jon Evans 1dd4af2972 Sort VIEW_GROUP drawing by layer order
Fixes: lp:1757146
* https://bugs.launchpad.net/kicad/+bug/1757146
2018-03-26 10:18:50 -04:00
jean-pierre charras 1cd64778d6 fix a minor compil warning. 2018-03-26 08:24:09 +02:00
Jon Evans a8b1c2a8f2 Change dimension style to improve display and be more standard 2018-03-25 21:50:57 -04:00
Jeff Young b3e3964787 Fix Linux crash opening CvPcb. 2018-03-26 00:52:02 +01:00
Jeff Young ba49bd0386 Allow XLS netlist exporters to specify a file extension.
Fixes: lp:1591779
* https://bugs.launchpad.net/kicad/+bug/1591779
2018-03-26 00:51:54 +01:00
Wayne Stambaugh c8c5b5da07 Fix zoom to selection in bug in gal canvas. 2018-03-25 16:12:56 -04:00
Jeff Young a763435b59 Change zone segment count to high/low res. 2018-03-25 20:20:51 +01:00
Jeff Young f4ce8766e3 Implement shared FOOTPRINT_LIST.
While we already cache the loaded footprint files, parsing said files
into the list is also time-intensive.  Since the FOOTPRINT_LIST is
already hash-stamped against the current timestamps of the files that
make up the list, sharing a single copy of the list is quite
straight-forward.
2018-03-25 19:21:28 +01:00
Jeff Young b24b0d5dfe Dialog-ize CvPcb and implement proper Save.
Save now goes to disk (instead of just the in-memory schemaitc),
and the UI attempts to make this clear.
2018-03-25 19:21:27 +01:00
Wayne Stambaugh 8d8c422a19 Add zoom to selection menu entry to all editors.
Fixes lp:1753339

https://bugs.launchpad.net/kicad/+bug/1753339
2018-03-25 12:34:19 -04:00
jean-pierre charras 33f795be4f Make call to Inkscape (to convert .svg files to .png files) compatible with OSX version of Inkscape 2018-03-25 16:38:45 +02:00
Jon Evans c6e6134ebd Set appropriate parent for new directory checkbox
Fixes: lp:1754731
* https://bugs.launchpad.net/kicad/+bug/1754731
2018-03-25 10:25:40 -04:00
Jon Evans bfe9eff878 Don't use wxTE_RICH in label editing dialog
Fixes: lp:1742296
* https://bugs.launchpad.net/kicad/+bug/1742296
2018-03-24 22:31:34 -04:00
Jon Evans 6b51cc33da Set appropriate parent for 3D library downloader progress dialog
Fixes: lp:1758095
* https://bugs.launchpad.net/kicad/+bug/1758095
2018-03-24 21:08:35 -04:00
Maciej Suminski 4b5ca0ec14 Drawing tool: prevent creating zero-length lines
Fixes: lp:1758570
* https://bugs.launchpad.net/kicad/+bug/1758570
2018-03-24 23:57:06 +01:00
Marco Ciampa 4594fedc2c Small typo in menubar 2018-03-24 10:36:40 -04:00
Jeff Young 97fffe875f Notify clients when GRID_TRICKS toggles checkboxes. 2018-03-24 13:13:57 +00:00
Seth Hillbrand f317b10adf Ensure that the current copper zone is not first
The zeroth index is reserved especially for the <no net> tag, so we need
to keep the current net at 1 or greater to keep it connected.

Fixes: lp:1758488
* https://bugs.launchpad.net/kicad/+bug/1758488
2018-03-23 20:38:47 -07:00
Seth Hillbrand fb882633b2 Save layers regardless of view
We do not modify the underlying board when saving.  Previously only the
visible layers were saved.  This created a discrepancy between the board
that the user was editing and the board that was saved to disk.

Fixes: lp:1754049
* https://bugs.launchpad.net/kicad/+bug/1754049
2018-03-23 09:32:56 -07:00
jean-pierre charras 6940f92469 Fix compil issue and warning on Windows/msys2 2018-03-23 15:07:38 +01:00
Jeff Young 5957bc7dba Make sure checkboxes refresh on Linux. 2018-03-23 13:33:17 +00:00
Jeff Young 7df943af9c Play nice with JetBrains CLion 2018-03-23 12:46:17 +00:00
Jeff Young cd0cd242d1 Move 3D polygon approximation to absolute-error algorithm.
Also inflates via and pad hole polygons to bisect their circles.

Fixes: lp:1758137
* https://bugs.launchpad.net/kicad/+bug/1758137
2018-03-23 12:46:17 +00:00
Jeff Young fbf10e941b Switch zone fillets to absolute-error algorithm.
And some general cleanup to related constants, etc.
2018-03-23 12:46:17 +00:00
Jeff Young d2d0660647 Open viewer even when FPID is invalid.
Just show an empty viewer.
2018-03-23 12:46:17 +00:00
Jeff Young a0364a1137 Don't make user click twice to toggle checkbox in wxGrid. 2018-03-23 12:46:17 +00:00
jean-pierre charras 29ebca4053 Very minor fix: make a menu string more easily translatable 2018-03-22 21:00:41 +01:00
Maciej Suminski 434b385a95 Eagle SCH importer: prepend # to references of symbols without assigned footprints
With hash character starting the reference value, schematic components
are considered as virtual and therefore netlist updater do not warn about
an unsigned footprint anymore. This approach is useful to handle logos,
frames or other virtual Eagle components.

Fixes: lp:1756281
* https://bugs.launchpad.net/kicad/+bug/1756281
2018-03-22 18:20:02 +01:00
Maciej Suminski e9537953cd Eagle SCH importer: reduced code duplication for importing labels 2018-03-22 18:20:02 +01:00
Maciej Suminski 97f8a3361e Renamed ERC rule: "Test unique global labels" to "Test single instances of global labels" 2018-03-22 18:20:02 +01:00
Maciej Suminski 6331f94544 OpenGL GAL: safer error handling
Replaced assert() with wxCHECK(), so in case of problems methods return
instead of continuing with invalid state/data, wherever possible.
2018-03-22 18:20:02 +01:00
Maciej Suminski 058f2bffd0 Spice simulator: safety check 2018-03-22 18:20:02 +01:00
Jon Evans 5b653c0c1e Update MacOS icons
Fixes: lp:1750284
* https://bugs.launchpad.net/kicad/+bug/1750284
2018-03-22 11:45:42 -04:00
Jon Evans 9bc97a9316 Add MacOS icon generator script 2018-03-22 11:45:41 -04:00
jean-pierre charras 94c780975e Very minor cosmetic fix. 2018-03-22 12:01:06 +01:00
Maciej Suminski e1c8822b9e Component Properties dialog: catch IO_ERRORs when showing footprint viewer 2018-03-22 11:44:13 +01:00
Maciej Suminski 62fd734007 Footprint Viewer: do not try to preselect an empty footprint
Empty string is treated as an invalid LIB_ID, so it ends up with an
exception.
2018-03-22 11:38:10 +01:00
Maciej Suminski 351fc0c343 eeschema: preserve unit number after pasting a component
Fixes: lp:1757373
* https://bugs.launchpad.net/kicad/+bug/1757373
2018-03-22 10:55:50 +01:00
Jon Evans a931ac436a Add some safety checks to Excellon number format detection
Fixes: lp:1754121
* https://bugs.launchpad.net/kicad/+bug/1754121
2018-03-21 22:29:43 -04:00
Andrzej Wolski 4152069504 Make vias selectable even if top and bottom layer are hidden 2018-03-21 22:15:17 -04:00
Jeff Young 79fe134495 Init Footprint Viewer with current FPID.
Fixes: lp:1757421
* https://bugs.launchpad.net/kicad/+bug/1757421
2018-03-21 23:11:55 +00:00
Jeff Young 99e659ff54 Coverity fixes. 2018-03-21 23:11:55 +00:00
Andrzej Wolski ff3f229871 Decouple vias from tracks in selection filter 2018-03-21 17:21:08 -04:00
Andrzej Wolski ea3f8743fd Fixes in GAL selection filter:
- vias were always left selected, include vias in tracks filter - as in legacy
- make text filtering work
- cleanup drawings filtering code
- hide checkbox "Include items on invisible layers" because it does not work in GAL
2018-03-21 17:21:01 -04:00
Jon Evans 8cdb82df42 Update Windows MSYS2 build instructions; remove "easy way" for now 2018-03-21 14:33:44 -04:00
Maciej Suminski bad462a228 Spice simulator: reload ngSpice dll on error
ngSpice frequently ends up a simulation with an error:
"Error: ngspice.dll cannot recover and awaits to be detached"
The only way forward is to reload the shared library and
reinitialize ngSpice.

Fixes: lp:1753101
* https://bugs.launchpad.net/kicad/+bug/1753101
2018-03-21 18:01:38 +01:00
Maciej Suminski 61e42ba392 Spice simulator: changed NGSPICE instance type to shared_ptr
It was yet another time when I tried to free a singleton pointer.
Let's make clear it is not meant to be freed manually.
2018-03-21 18:01:38 +01:00
Maciej Suminski 50053e7f27 Spice simulator: code formatting 2018-03-21 18:01:38 +01:00
Maciej Suminski 33620ecc85 Revert "libngspice is linked at compile time"
This reverts commit 75f8b20493.
In case of problems, ngspice demands to be detached which is not
possible when it is linked at compile time.
2018-03-21 18:01:38 +01:00
Maciej Suminski dfd2a8fc48 NumericEvaluator: return false for invalid expressions
Clearing bClError flag in NumericEvaluator::parseOk() made the
expression look valid, even if the flag has been set for a previous
token. Now it is cleared before an expression is parsed and verified
after parser finishes.

Fixes: lp:1756995
* https://bugs.launchpad.net/kicad/+bug/1756995
2018-03-21 17:11:35 +01:00
jean-pierre charras 7b4a8d7eb5 Gerber job file: update file format due to a recent change.
Please: note the gerber JSON file format is currently a moving target, although most of the format is now fixed.
Most, but not all.
2018-03-21 12:40:10 +01:00
Jon Evans 477b4c5447 Update Linux application and mimetype icons 2018-03-20 22:42:32 -04:00
Jon Evans 31081269d3 Update application icons 2018-03-20 22:26:59 -04:00
Jon Evans 285bf79370 Fix strings for save/load project menu options; standardize on "Load"
Fixes: lp:1753659
* https://bugs.launchpad.net/kicad/+bug/1753659
2018-03-20 22:20:54 -04:00
Jon Evans b9ce203487 Fix pad selection requirements in footprint editor
Fixes: lp:1757295
* https://bugs.launchpad.net/kicad/+bug/1757295
2018-03-20 21:15:05 -04:00
Jon Evans b53ed148f3 Optimization to track DRC and some formatting cleanup 2018-03-20 20:37:35 -04:00
Jon Evans c78171d01f DRC: Add an optional mode to report all track errors
Fixes: lp:1754442
* https://bugs.launchpad.net/kicad/+bug/1754442
2018-03-20 19:54:06 -04:00
Seth Hillbrand 73408f3f21 Correct DRC calculation on segments
If objects are at the clearance limit, they qualify as passing DRC.
Therefore, all comparison functions that indicate failure should be
strictly greater than or less than while all comparison functions that
indicate success (in the DRC) should be greater/equal or less/equal.

This also corrects a rounding error at the nm scale and handles
scaling zero-length and large segments correctly.

Fixes: lp:1756403
* https://bugs.launchpad.net/kicad/+bug/1756403

Fixes: lp:1593373
* https://bugs.launchpad.net/kicad/+bug/1593373
2018-03-20 15:35:53 -07:00
Jeff Young 683be7155e Mirror-image coordinate system on back of board for PNP.
Also converts any delimiters in tokens to underscores.

Fixes: lp:1679205
* https://bugs.launchpad.net/kicad/+bug/1679205
2018-03-20 16:57:42 +00:00
jean-pierre charras b5f1fdd981 Add icon to Get and Move context menu item in GAL mode.
Windows does not like mixing menu items with and without icons (sizing error).

Fixes: lp:1756263
https://bugs.launchpad.net/kicad/+bug/1756263
2018-03-20 08:30:02 +01:00
Jon Evans 3103e3dc4c DRC: Center zoom on marker location, not DRC item start location
For some DRC checks, the location of the marker is not the location
of the first item in the resulting DRC_ITEM, so centering the screen
on PointA of the DRC_ITEM can be confusing.
2018-03-19 22:25:55 -04:00
Maciej Suminski b40bf4c0ea Center DIALOG_SHIM position if it would have appeared off the screen
DIALOG_SHIM stores the dialog position, so every time it is shown, it is
displayed in the same location. This caused problems on multidisplay
setups, as dialogs could show up off the screen if the original display
has been detached in the meantime, effectively making them inaccesible
to the user.

Fixes: lp:1756623
* https://bugs.launchpad.net/kicad/+bug/1756623
2018-03-20 00:02:22 +01:00
Wayne Stambaugh 620c2af356 KiCad: fix template folder load bug.
Add a check to see if the folder selected by the user contains a
project template meta data folder and use that folder instead of
assuming that it is a folder containing sub-folders with project
templates.  The normal behavior is preserved when no meta data
folder is detected.

Fixes lp:1751465

https://bugs.launchpad.net/kicad/+bug/1751465
2018-03-19 12:49:57 -04:00
Maciej Suminski 33dcc080ea STEP exporter: check board outline continuity 2018-03-19 17:34:11 +01:00
Maciej Suminski a42aed3305 Added "Copy" to right click menu in WX_HTML_REPORT_PANEL 2018-03-19 17:15:07 +01:00
Maciej Suminski 17d63dbc1f Fixed text alignment in WX_HTML_REPORT_PANEL 2018-03-19 17:04:38 +01:00
Maciej Suminski 5ba3e43d31 Converted STEP exporter dialog to use WX_HTML_REPORT_PANEL 2018-03-19 17:04:38 +01:00
Maciej Suminski eebabf165b kicad2step: Report lack of model definition rather than empty file names 2018-03-19 17:04:38 +01:00
Maciej Suminski 47e4798423 kicad2step: Report function name and line number only in debug builds 2018-03-19 17:04:38 +01:00
jean-pierre charras 2ff74cb3fc Add support for .gbrjob new file format (JSON format) in Gerbview
Add experimental code to generate .gbrjob files in the new JSON file format
2018-03-19 15:14:20 +01:00
Jeff Young 1a845bc4ad Safer way to commit in-progress changes in wxGrid.
In some cases the wxGrid would attempt to close the editor in
the middle of the d'tor, resulting in segfaults.
2018-03-19 12:13:28 +00:00
jean-pierre charras 5e34563f52 Fix a long calculation time that happens with some gerber files when closing Gerbview in legacy display mode. 2018-03-19 10:58:27 +01:00
Maciej Suminski ce610f33a2 Coverity fixes
resource leak: #172233
negative array index write: #102363
uninitialized scalar field: #174540 #174539
structurally dead code: #169334 #169331
2018-03-19 10:02:05 +01:00
Jon Evans 4e76a18d5d Add checks against missing D-Codes in flashed Gerber items
Fixes: lp:1756710
* https://bugs.launchpad.net/kicad/+bug/1756710
2018-03-18 21:55:27 -04:00
Jeff Young aa0ae48dda Update status bar and toolbars on language change.
Fixes: lp:1392582
* https://bugs.launchpad.net/kicad/+bug/1392582

Fixes: lp:1748428
* https://bugs.launchpad.net/kicad/+bug/1748428
2018-03-18 22:17:27 +00:00
Jeff Young 89ebab5df2 Comments for SELECTION_TOOL::guessSelectionCandidates(). 2018-03-18 22:17:27 +00:00
Jeff Young df924a5e68 Follow standard FBP naming conventions. 2018-03-18 22:17:27 +00:00
Carsten Schoenert bc1b10bc92 AboutDialog_main.cpp: update the link to the libraries
The KiCad official libraries have now a own dedicated website.
2018-03-18 11:21:24 -04:00
Carsten Schoenert 4723aae18c AboutDialog_main.cpp: re-adding i18n macros
Some strings in the About Kicad dialog are not displayed as translated
strings due the strings not marked as i18n based strings.
2018-03-18 11:21:24 -04:00
jean-pierre charras 827b818b5d Very minor fixes in Gerbview and Kicad:
Gerbview: fix X2 z order display of Adhesive (Glue) layers.
Kicad: very minor cosmetic enhancement in Create Project dialog.
2018-03-18 16:04:23 +01:00
Jeff Young e0e0687cd7 Revert "Allow 5.0 to read 6.0 files with hole-to-hole clearance settings."
This reverts commit 0a4c04530a.
2018-03-16 22:22:15 +00:00
Jeff Young 1684fc735a Defensive coding to attempt to prevent wxWidgets crash.
Fixes: lp:1756255
* https://bugs.launchpad.net/kicad/+bug/1756255
2018-03-16 19:02:25 +00:00
Jeff Young b8fd2f3c79 Revert "Don't be pedantic about the file format."
This reverts commit 1537cbc59c.
2018-03-16 18:11:36 +00:00
Jeff Young d3e7efcd66 Ignore pads when selecting drag candidates in router tool.
Fixes: lp:1747156
* https://bugs.launchpad.net/kicad/+bug/1747156
2018-03-16 18:01:40 +00:00
Jeff Young b335ef0531 Don't involve user in implementation details.
Fixes: lp:1756299
* https://bugs.launchpad.net/kicad/+bug/1756299
2018-03-16 16:57:38 +00:00
Jeff Young 1537cbc59c Don't be pedantic about the file format.
It's just another form of nagging.
2018-03-16 16:57:38 +00:00
Marco Ciampa 9e8bcbea04 Gerbview: fix typo in tooltip string. 2018-03-16 09:41:53 -04:00
Wayne Stambaugh 3f52e87224 Standardize terminology for automatic zoom to "Zoom to Fit".
Fixes lp:1753336

https://bugs.launchpad.net/kicad/+bug/1753336
2018-03-16 08:38:36 -04:00
jean-pierre charras 819056df9d Eeschema: Add footprint field to Cadstar netlist file.
Fixes: lp:1755996
https://bugs.launchpad.net/kicad/+bug/1755996
2018-03-16 13:20:00 +01:00
Jeff Young 3b0a758f97 Ensure router layer is visible.
Fixes: lp:1663556
* https://bugs.launchpad.net/kicad/+bug/1663556
2018-03-16 02:43:17 +00:00
Jeff Young 0a4c04530a Allow 5.0 to read 6.0 files with hole-to-hole clearance settings. 2018-03-16 00:48:35 +00:00
Jeff Young a1a4275e8b Cancel interactive tools when entering DRC.
Fixes: lp:1541526
* https://bugs.launchpad.net/kicad/+bug/1541526
2018-03-16 00:28:02 +00:00
Jeff Young fb31bc1ca7 Add separators to kicad window.
Fixes: lp:1750409
* https://bugs.launchpad.net/kicad/+bug/1750409
2018-03-15 19:14:49 +00:00
Wayne Stambaugh 5ae9ac566f Page layout editor: standardize zoom in and zoom out menu accelerators.
Fixes: lp:1753338

https://bugs.launchpad.net/kicad/+bug/1753338
2018-03-15 15:07:58 -04:00
Alessandro Gatti 86603125ac Scripting: Preemptively reset footprint wizard state.
Fixes: lp:1754992
* https://bugs.launchpad.net/kicad/+bug/1754992
2018-03-15 12:30:02 -04:00
Jon Evans 2cc5c6fd45 Add ERC check in component editor for conflicting multi-unit pins
Fixes: lp:1680638
* https://bugs.launchpad.net/kicad/+bug/1680638
2018-03-15 11:11:43 -04:00
Jon Evans 0a81782b5d Add ERC check that a pin appears in only one net
Fixes: lp:1680638
* https://bugs.launchpad.net/kicad/+bug/1680638
2018-03-15 11:11:43 -04:00
Wayne Stambaugh 89d350a7d2 Footprint editor: fix bug in footprint wizard 2D barcode generator.
The text height and thickness settings were never implemented so they
didn't get updated when the options were changed.  Added the missing
code to update both parameters.

Added text width parameter so text height and width do not need to be
the same value.  Currently both the value and reference fields are set
to the same height and width.  Please feel free to change this if you
feel the need to have separate text settings for both the value and
reference fields.

Fixes lp:1751309

https://bugs.launchpad.net/kicad/+bug/1751309
2018-03-15 10:37:36 -04:00
Jeff Young c6ef0d57f1 Retire auto-delete-old-track from toolbar.
Also corrects the backwards-wording of the setting in the Preferences
dialog.

Fixes: lp:1754667
* https://bugs.launchpad.net/kicad/+bug/1754667
2018-03-15 11:41:27 +00:00
Jeff Young d9d9a54aa8 Replace previous hidden text commit with a LOD-based one. 2018-03-15 11:00:36 +00:00
jean-pierre charras e14a7c928c Fix incorrect pin num string in cadstar and orcadpcb2 format 2018-03-15 09:15:49 +01:00
Jon Evans 213b600b54 Revert active layer behavior so gerber/drill load behavior matches
Fixes: lp:1755713
* https://bugs.launchpad.net/kicad/+bug/1755713
2018-03-14 21:52:06 -04:00
Jeff Young a75ead5efd Handle hidden text changing layers when native layer toggled.
Fixes: lp:1553459
* https://bugs.launchpad.net/kicad/+bug/1553459
2018-03-14 22:56:03 +00:00
Jeff Young 8904b2e046 Peg 3D viewer in front of Footprint Viewer and Wizard.
Fixes: lp:1754741
* https://bugs.launchpad.net/kicad/+bug/1754741
2018-03-14 19:17:09 +00:00
jean-pierre charras e8df845b3f Minor fix in zones_by_polygon.cpp: When editing a non copper zone, some settings were not those of the edited zone.
trigo.h: Add a useful double NormalizeAngleDegrees( double Angle, double aMin, double aMax ).
2018-03-14 19:03:14 +01:00
Maciej Suminski e4d512a293 Eagle PCB import: mute uninitialized variable warning
In fact radius is not used initialized, as the scope where it is
used (while loop) is dependent on the preceding if( w.curve ) clause
that initializes 'radius' variable.
2018-03-14 15:40:58 +01:00
Jeff Young 3d12a6889b Make sure ERC and DRC item lists respect color themes.
Fixes: lp:1492953
* https://bugs.launchpad.net/kicad/+bug/1492953
2018-03-14 14:15:16 +00:00
jean-pierre charras fa41026f36 Fix issue in aperture macro with some strange gerber files.
Fixes: lp:1755623
https://bugs.launchpad.net/kicad/+bug/1755623
2018-03-14 14:55:51 +01:00
jean-pierre charras 66d5d10b49 Gerbview: bigger line buffer to read some gerber files that have only one (very long) line.
small code refactor.
2018-03-14 10:42:18 +01:00
Maciej Suminski f7ad77004d Eagle PCB import: handle {smd,pad}.thermals property 2018-03-14 10:24:47 +01:00
Maciej Suminski d432a985ab Eagle PCB import: handle 'roundness' DRC rule (SMD rounded rectangles)
Fixes: lp:1754138
* https://bugs.launchpad.net/kicad/+bug/1754138
2018-03-14 10:24:47 +01:00
Maciej Suminski 5896723c60 Eagle PCB import: handle smd.{stop,cream} and pad.stop attributes 2018-03-14 10:24:47 +01:00
Maciej Suminski 128a7f252c Eagle PCB import: fixed comments 2018-03-14 09:54:41 +01:00
Jon Evans 543faa385b PDF Plotter: handle edge-case arc/circle drawing correctly
Fixes: lp:1752771
* https://bugs.launchpad.net/kicad/+bug/1752771
2018-03-13 21:01:06 -04:00
Jon Evans 2f86b497d9 Work around wxGrid boolean editor issues
Fixes: lp:1667240
* https://bugs.launchpad.net/kicad/+bug/1667240
2018-03-13 20:34:39 -04:00
Wayne Stambaugh 71d8a1ea1e GerbView: fix legacy canvas refresh when drawing outline modes. 2018-03-13 18:25:03 -04:00
Wayne Stambaugh a5cca18dd1 GerbView: add view menu.
Include all actions provided by left vertical toolbar in a new view
menu for consistency with other main frames.

Move show/hide layer manager to view menu.

Simplify some toolbar and menu update logic.

Fixes lp:1753337

https://bugs.launchpad.net/kicad/+bug/1753337
2018-03-13 18:00:15 -04:00
Maciej Suminski 8567eab09a Fix pasting BOARD_ITEMs containing Unicode characters
Fixes: lp:1749549
* https://bugs.launchpad.net/kicad/+bug/1749549
2018-03-13 17:40:18 +01:00
Maciej Suminski 83efd6b8a3 Added 'Paste' to eeschema context menus
Fixes: lp:1754891
* https://bugs.launchpad.net/kicad/+bug/1754891
2018-03-13 17:26:33 +01:00
Maciej Suminski d906acc0eb Eagle PCB import plugin: sprintf() -> snprintf() 2018-03-13 14:50:08 +01:00
Maciej Suminski aeb999b9ae Eagle PCB import: handle solder mask & paste for pads
Fixes: lp:1754138
* https://bugs.launchpad.net/kicad/+bug/1754138
2018-03-13 14:50:05 +01:00
Maciej Suminski 4055c435a5 Eagle PCB import: unified code for handling pad properties 2018-03-13 14:44:35 +01:00
Maciej Suminski 4c9be316dd Eagle import: minor ECOORD refactor
- changed EAGLE_UNIT enum names from EAGLE_* to EU_*
- renamed ToNanoMeters() to ConvertToNm() and added a comment
- added ToMils() and ToNanoMeters() method
2018-03-13 14:44:34 +01:00
Maciej Suminski 133b681006 Eagle PCB import: code formatting 2018-03-13 14:44:28 +01:00
Maciej Suminski 9d0cd1a188 Eagle PCB import: rounded rectangle pad support 2018-03-13 11:57:43 +01:00
Miles McCoo 9d98fe1b80 Fix for crash due to pcbnew_action_plugin object tracking
pcbnew_action_plug tracks items that were modified within a plugin. In the case of
deletion, the old object is no longer valid. This commit turns off the call to delete
if a plugin is active.
2018-03-13 10:19:39 +01:00
Jon Evans 935a5cada8 Fix typo in conditional check
Fixes: lp:1755265
* https://bugs.launchpad.net/kicad/+bug/1755265
2018-03-12 22:15:27 -04:00
Jeff Young f32f14dc8f Add WX_TEXT_ENTRY_DIALOG which inherits from DIALOG_SHIM.
Fixes: lp:1754977
* https://bugs.launchpad.net/kicad/+bug/1754977
2018-03-12 22:45:51 +00:00
Jeff Young 43899bbe0e Fix compile issues under some compilers. 2018-03-12 21:02:04 +00:00
Jeff Young 3d32ee774e Translatable strings must be ASCII7 for translation tools. 2018-03-12 19:54:07 +00:00
Jeff Young 4eedb3a27d The _() macro affords some nullptr safety over a naked immediate.
Fixes: lp:1477448
* https://bugs.launchpad.net/kicad/+bug/1477448
2018-03-12 19:18:05 +00:00
Tomasz Wlostowski b1f613071d eeschema: workaround for 64kByte string length limit in wxString::Format() causing segfaults in netlist update under Windows
Fixes: lp:1754402
* https://bugs.launchpad.net/kicad/+bug/1754402
2018-03-12 18:26:25 +01:00
Maciej Suminski ab37801489 Do not define hotkeys for copy/cut/paste to avoid double action execution
CTRL+{X,C,V} used to be handled both by the legacy hotkey system that
generated ID_EDIT_{CUT,COPY,PASTE} wxCommandEvent, and the Tool Framework
hotkey system.

Fixes: lp:1749549
* https://bugs.launchpad.net/kicad/+bug/1749549
2018-03-12 16:53:17 +01:00
jean-pierre charras d64c89d964 Footprint editor: Graphic polygon don't follow footprint when moving reference anchor
Fixes: lp:1755042
https://bugs.launchpad.net/kicad/+bug/1755042
2018-03-12 13:17:22 +01:00
jean-pierre charras 243ce6979b Fix a minor coding style and minor potential issue. 2018-03-12 08:34:21 +01:00
Alessandro Gatti 53c9143b64 fpwizard: Switch page after checking parameters
The parameter check was triggered by a grid clear event which was sent
after the current page number was changed, creating a mismatch between
the old and new parameter list lengths.

Fixes: lp:1754738
* https://bugs.launchpad.net/kicad/+bug/1754738
2018-03-11 19:10:27 -04:00
jean-pierre charras d52491c715 Custom pads: allows solid connection to zones.
The 2 options are now: no connection and solid connection
2018-03-11 20:39:29 +01:00
jean-pierre charras 17f6d09935 Page layout editor: fix incorrect management of block operation in context (popup) menu. 2018-03-11 18:38:27 +01:00
Alessandro Gatti f1cf95b8dd scripting: Fix invalid error message syntax.
Fixes: lp:1754758
https://bugs.launchpad.net/kicad/+bug/1754758
2018-03-11 15:09:27 +01:00
jean-pierre charras 17c0917dac DIALOG_UPDATE_PCB: minor fix: fix dialog min size.
The call to SetSizeHints() was missing
2018-03-10 18:19:52 +01:00
jean-pierre charras 2230abde1b page layout editor: fix a crash on block move.
This crash was due to a pointer initialized to a temporary reference.
Very minor coding style fixes
2018-03-10 10:25:07 +01:00
jean-pierre charras 83d5a770e8 Page layout editor: Hotkey modification ( '@' to a better key F5 ) 2018-03-10 08:41:06 +01:00
Seth Hillbrand f7cbf157a9 Adding segmentation to Eagle curved track import
Eagle tracks can have curves.  We approximate this using the
segments_per_360 define.  This results in 32 segments for a 360-degree
curve.  We could increase this value for curved tracks to get closer
tracking with the Eagle layout if needed.

Fixes: lp:1753289
* https://bugs.launchpad.net/kicad/+bug/1753289
2018-03-09 13:25:38 -08:00
Seth Hillbrand ea4cee3393 Set Eagle import generated timestamps to KiCad std 2018-03-09 13:12:18 -08:00
Seth Hillbrand 3d27dbdcbb Spelling Unrecognised -> Unrecognized 2018-03-09 09:43:54 -08:00
Seth Hillbrand 82e5110733 Spelling Synthetize -> Synthesize 2018-03-09 09:43:54 -08:00
Seth Hillbrand 7fbf7bbf42 Spelling improoved -> improved 2018-03-09 09:43:54 -08:00
Seth Hillbrand 2e12175c13 Spelling Plese -> Please 2018-03-09 09:43:54 -08:00
Seth Hillbrand a4519478f0 Spelling Appearence -> Appearance 2018-03-09 09:43:54 -08:00
Seth Hillbrand ce8d5787f7 Standardize Hierarchy wording 2018-03-09 09:43:54 -08:00
Seth Hillbrand 6d5389a90c Spelling Behaviour -> Behavior 2018-03-09 09:43:53 -08:00
Seth Hillbrand 649809a38f Standardize Keywords->Key words 2018-03-09 09:43:53 -08:00
Seth Hillbrand 26392f8070 Remove spaces from start of common translated words 2018-03-09 08:40:43 -08:00
jean-pierre charras 52ab6216c0 Refinement in circle to segment approximation for clearance area of DRAWSEGMENTS 2018-03-09 15:56:00 +01:00
Maciej Suminski 30a78f00bc Use 32-bit timestamps for imported Eagle files
Fixes: lp:1754610
* https://bugs.launchpad.net/kicad/+bug/1754610
2018-03-09 14:27:35 +01:00
jean-pierre charras 3fcc84dde3 Fix circle to segment approximation to 0.02 mm instead of 0.01 mm
(to avoid to long calculation time in fill zone)
2018-03-09 13:36:54 +01:00
jean-pierre charras 51fe063524 Circle to polygon conversion: a few enhancements:
* Remove duplicate code
* fix incorrect formulas is some places
* add comments
2018-03-09 13:28:47 +01:00
Jon Evans 9c62792245 SVG Plotter: Handle edge-case arc and circle drawing 2018-03-08 22:44:26 -05:00
Jon Evans 921e68107b OpenGL: Make circle/arc drawing match Cairo for some edge cases 2018-03-08 22:04:33 -05:00
hauptmech eeeed88425 Use fixed width on first Symbol Table column
Autosize when the reference field is a list of all components was too long.

Fixes: lp:1753330
* https://bugs.launchpad.net/kicad/+bug/1753330
2018-03-08 20:59:46 -05:00
Jeff Young 308f28d2d4 Save ModEdit's footprint ID rather than source.
This primarily keeps us from overriding "truth" with data that
might not have even been saved when closing ModEdit.

Fixes: lp:1752543
* https://bugs.launchpad.net/kicad/+bug/1752543
2018-03-09 01:32:52 +00:00
Jeff Young f1b48eb4f4 Fix default button and focus for ModEdit save.
Fixes: lp:1752546
* https://bugs.launchpad.net/kicad/+bug/1752546
2018-03-09 00:52:45 +00:00
Jeff Young c7cc795095 Close pcb opened just to get its GAL canvas settings.
Fixes: lp:1752541
* https://bugs.launchpad.net/kicad/+bug/1752541
2018-03-08 23:51:10 +00:00
Jeff Young 4693fd6200 Resolve env vars when looking up documentation files.
Fixes: lp:1729276
* https://bugs.launchpad.net/kicad/+bug/1729276
2018-03-08 23:51:10 +00:00
Jon Evans e4b847b345 GerbView: fix a few issues with layer selection / info synchronization
Fixes: lp:1754135
* https://bugs.launchpad.net/kicad/+bug/1754135
2018-03-08 18:19:48 -05:00
Jeff Young ad5311f393 Don't allow many context-menu commands for NEW/MOVED items.
Fixes: lp:1681198
* https://bugs.launchpad.net/kicad/+bug/1681198
2018-03-08 20:34:37 +00:00
Seth Hillbrand 5fea89ebd5 Standardize plural menu items 2018-03-08 12:33:32 -08:00
Seth Hillbrand 33423fe88d Standardize capitalization
Messages should start with capitalized letter
2018-03-08 12:33:32 -08:00
Seth Hillbrand 8ff91cc0da Standardize hotkeys table 2018-03-08 12:33:32 -08:00
Seth Hillbrand 5aa4129a88 Standardize copper zones 2018-03-08 12:33:32 -08:00
Seth Hillbrand de8716bcc2 Standardize open web browser 2018-03-08 12:33:32 -08:00
Seth Hillbrand f76b89cf99 Standardize error message in Eeschema 2018-03-08 12:33:32 -08:00
Seth Hillbrand 74e13aebca Spelling "Overwrite exiting" -> "Overwrite existing" 2018-03-08 12:33:32 -08:00
Seth Hillbrand 8639c308fa Spelling "free-stanging" -> "free-standing" 2018-03-08 12:33:32 -08:00
Seth Hillbrand 3cbf5f4942 Spelling indentifier -> identifier 2018-03-08 12:33:32 -08:00
Seth Hillbrand a607174f9a Fix english grammar 2018-03-08 12:33:32 -08:00
Seth Hillbrand 583ee0e4c3 Standardize Favourite -> Favorite 2018-03-08 12:33:32 -08:00
Seth Hillbrand 9bede6900c Standardize Kicad -> KiCad 2018-03-08 12:33:32 -08:00
Jeff Young 182b134872 Don't overwite env vars with settings.
Fixes: lp:1740022
* https://bugs.launchpad.net/kicad/+bug/1740022
2018-03-08 19:17:31 +00:00
Jeff Young 8a35e58987 Calculate number of segments based on radius.
Fixes: lp:1754252
* https://bugs.launchpad.net/kicad/+bug/1754252
2018-03-08 18:04:26 +00:00
Jeff Young ab730709c7 Only use hover track if there are no selected tracks.
Fixes: lp:1645670
* https://bugs.launchpad.net/kicad/+bug/1645670
2018-03-08 18:03:46 +00:00
Maciej Suminski 0bdae22af7 ResolveFile() handles absolute paths
Fixes: lp:1753094
* https://bugs.launchpad.net/kicad/+bug/1753094
2018-03-08 11:35:27 +01:00
Maciej Suminski 9ce768c29a Modified STROKE_FONT::ComputeStringBoundaryLimits() to process multiline strings
Removed a declaration of a not existing method (STROKE_FONT::ComputeTextLineSize()).

Fixes: lp:1747967
* https://bugs.launchpad.net/kicad/+bug/1747967
2018-03-08 10:56:34 +01:00
Maciej Suminski b3601bd540 SCH_LEGACY_PLUGIN_CACHE: Rename conflicting aliases 2018-03-08 09:48:41 +01:00
Maciej Suminski d74bb131e1 SCH_LEGACY_PLUGIN_CACHE: Do not add the root alias for loaded symbols
The root alias is added in the loop iterating through all aliases.
2018-03-08 09:48:41 +01:00
Maciej Suminski a5844c9bb8 Replace illegal characters in LIB_{ALIAS,PART} LIB_IDs
Schematic components have illegal characters replaced during load,
leading to broken component-symbol links. To avoid this, library symbols
should have their names fixed in the same way.

Fixes: lp:1752419
* https://bugs.launchpad.net/kicad/+bug/1752419
2018-03-08 09:48:34 +01:00
Maciej Suminski dfc47464d7 Added ReplaceIllegalFileNameChars() for wxString& 2018-03-08 09:06:15 +01:00
Jon Evans 23f49f014b Code style fixes 2018-03-07 22:14:24 -05:00
Jon Evans 3e033aee0c Perform coordinate format detection on Excellon drill files
Fixes: lp:1754121
* https://bugs.launchpad.net/kicad/+bug/1754121
2018-03-07 22:08:59 -05:00
Jon Evans 8f0c798dc8 Update MSYS2 links 2018-03-07 21:06:30 -05:00
Jon Evans 38d211b5e1 Document workaround for Windows compilation issues with OCE 2018-03-07 21:03:04 -05:00
Jon Evans 1e66a23dbc Rework footprint selection filtering to improve behavior
Fixes: lp:1751960
* https://bugs.launchpad.net/kicad/+bug/1751960
2018-03-07 20:41:10 -05:00
Seth Hillbrand 9c532dfada Eeschema: Prevent block duplicate from disappearing
Duplicate is handled like move/drag but shouldn't mark the original
items as moving.  This prevents a redraw from drawing the original
items.

Fixes: lp:1750083
* https://bugs.launchpad.net/kicad/+bug/1750083
2018-03-07 16:43:21 -08:00
Jon Evans c3333d4665 GerbView: ensure view settings are saved/restored in measure tool
Fixes: lp:1754100
* https://bugs.launchpad.net/kicad/+bug/1754100
2018-03-07 18:56:59 -05:00
Wayne Stambaugh 1ae721442c Pcbnew: fix invalid footprint name illegal character list.
Footprint names cannot contain ':', '\n', or '\r'.
2018-03-07 14:19:07 -05:00
Seth Hillbrand 85c8648045 Fix printable character bug in footprint
Fixes: lp:1754120
* https://bugs.launchpad.net/kicad/+bug/1754120
2018-03-07 10:57:36 -08:00
Seth Hillbrand 414e6614f1 Check for toolbar before checking tool
Not all toolbars exist in all tools at all times.  Need to check before
dereferencing variable.

Fixes: lp:1754094
* https://bugs.launchpad.net/kicad/+bug/1754094
2018-03-07 09:55:58 -08:00
jean-pierre charras 8fcbb64a46 Better algo to calculate the segment count to convert a DRAWSEGMENT arc or circle to a set of segments.
Currently, the max error between the arc/circle and a segment is set to 0.05 mm
2018-03-07 14:16:39 +01:00
Tomasz Włostowski ebd2b78f86 pcbnew/router: respect default net clearance for objects that don't have any net (e.g. board outline)
Fixes: lp:1753904
* https://bugs.launchpad.net/kicad/+bug/1753904
2018-03-07 11:47:37 +01:00
Maciej Suminski a3562b354b Refresh zones in the view on a DRC run
PCB_EDIT_FRAME::Fill_All_Zones() now reuses ZONE_FILLER tool to
avoid code duplication.

Fixes: lp:1753901
* https://bugs.launchpad.net/kicad/+bug/1753901
2018-03-07 09:05:51 +01:00
Seth Hillbrand c69db6cf8f Adding rounded rect and custom pad shapes to VRML export
Fixes: lp:1753552
* https://bugs.launchpad.net/kicad/+bug/1753552
2018-03-06 16:40:08 -08:00
Wayne Stambaugh 944a0b195e Update KiCad compiling document.
Add missing build dependencies ngspice and oce.

Fix missing dependencies for MSYS2 builds on windows.

Remove enabling scripting now that is enabled by default.
2018-03-06 18:54:51 -05:00
Jeff Young 44b81c99ec Use TransferDataFromWindow so <enter> works.
Fixes: lp:1750471
* https://bugs.launchpad.net/kicad/+bug/1750471
2018-03-06 21:12:14 +00:00
Jeff Young 2b34426c36 Only set always-show-scrollbars in constructor on Mac.
Fixes: lp:1753592
* https://bugs.launchpad.net/kicad/+bug/1753592
2018-03-06 20:31:44 +00:00
Maciej Suminski 49486b83b0 Add "create a new directory" checkbox to the Create Project dialog
Fixes: lp:1753325
* https://bugs.launchpad.net/kicad/+bug/1753325
2018-03-06 16:22:46 +01:00
Tomasz Włostowski a164f7e2da pcbnew: fixed zone filling performance regression
Fixes: lp:1753224
* https://bugs.launchpad.net/kicad/+bug/1753224
2018-03-06 16:06:16 +01:00
Tomasz Włostowski f2bb398ae6 pcbnew: fixes in primitives->custom pad tool
Fixes: lp:1753712
* https://bugs.launchpad.net/kicad/+bug/1753712

Fixes: lp:1753711
* https://bugs.launchpad.net/kicad/+bug/1753711
2018-03-06 14:59:15 +01:00
Tomasz Włostowski 48459e4268 pcbnew: fixes in custom pad creation tool
Fixes: lp:1753152
* https://bugs.launchpad.net/kicad/+bug/1753152
2018-03-06 14:59:15 +01:00
Maciej Suminski aff350f593 LIB_ID: change strcpy() to strncpy() for safety 2018-03-06 14:25:18 +01:00
hauptmech e62db2841a Fix dependency bug introduced in RPATH patch e0b33ee8 2018-03-06 07:39:44 -05:00
Clemens Koller f7ef010fe1 GerbView: Minor cleanup of Menus + Toolbar for consistency.
replace: File -> File(s) when wxFD_MULTIPLE
replace: Load -> Open
replace: Erase -> Clear
add Excellon / Gerber where it makes sense
re-sort File menu
2018-03-05 18:33:21 -05:00
jean-pierre charras 5a33f09608 Fix memory leak 2018-03-05 20:18:55 +01:00
jean-pierre charras ff91e9b253 minor fix in a debug code 2018-03-05 20:18:55 +01:00
jean-pierre charras cfbd156adc Minot fix: fix a minor wxAssert in dialog 2018-03-05 20:18:55 +01:00
Seth Hillbrand 218f66a08b Fix sign comparison warning 2018-03-05 09:20:19 -08:00
Maciej Suminski 5bbb4489b3 Fixed out of bounds access to m_shaderBuffer array in 3D viewer raytracer 2018-03-05 17:49:34 +01:00
hauptmech e0b33ee8a6 Fix RPATH not removed in shared object file for python
Build pcbnew_kiface files as object target that can then be linked in to pcbnew.kiface and _pcbnew.so
Only create _pcbnew.so target if scripting modules is enabled.
For linux builds only.
2018-03-05 11:19:16 -05:00
Diego Herranz 62bcf4fde4 pcbnew: reorder "Fabrication Outputs" in menu
Place it next to "Export" since it is similar conceptually
(it effectively exports to a few different formats too).
2018-03-05 10:49:55 -05:00
Maciej Suminski 3e54e16bdc Update ratsnest after a footprint change
PCB_BASE_FRAME::PlaceModule() calls CN_CONNECTIVITY_ALGO::Update()
on the new footprint that does not have nets assigned. The Update()
method first removes the footprint (but it has not been added, so
nothing happens) and then adds it with all pads marked as not connected.
Later, when BOARD_COMMIT is pushed - it tries to add the same footprint
again with nets assigned, but the pads are already registered, therefore
they are discarded.

To prevent this, PlaceModule() does not call CN_CONNECTIVITY_ALGO::Update()
for the just created footprint, as it is handled by BOARD_COMMIT later.
2018-03-05 16:42:30 +01:00
Maciej Suminski 0521b63503 Remove negation from PCB_BASE_FRAME::PlaceModule() parameter
Negated parameters make code confusing. Now the parameter
description is accurate.
2018-03-05 16:42:30 +01:00
Tomasz Włostowski 4be12292a0 Fixed duplicate misbehaviour when duplicating single track/via
Fixes: lp:1753158
* https://bugs.launchpad.net/kicad/+bug/1753158
2018-03-05 14:52:12 +01:00
Michael Kavanagh fabbc48b40 macOS: standardise CFBundleName to application names. 2018-03-05 01:14:00 +00:00
Seth Hillbrand 9c44d67f3b Eeschema: Simplify transformation representation
Fixes: lp:1752745
* https://bugs.launchpad.net/kicad/+bug/1752745
2018-03-05 01:05:21 +00:00
Jeff Young f4eb63f871 Size fields list correctly in symbol edit.
Fixes: lp:1753323
* https://bugs.launchpad.net/kicad/+bug/1753323
2018-03-05 00:07:50 +00:00
Jeff Young 90e2c8dd7f Get rid of first-scroll jerkiness in eeschema. 2018-03-05 00:07:50 +00:00
Jon Evans cd2224b94d Add missing hotkey support to GerbView
Fixes: lp:1752982
* https://bugs.launchpad.net/kicad/+bug/1752982
2018-03-04 16:59:23 -05:00
Jon Evans d2c86f8594 GerbView: Disable legacy-only event handlers when GAL is active
Fixes: lp:1752209
* https://bugs.launchpad.net/kicad/+bug/1752209
2018-03-04 16:21:24 -05:00
Seth Hillbrand 01ef0bd2e9 pcbnew: Add graphic polygon on drawing layer
Fixes: lp:1753151
* https://bugs.launchpad.net/kicad/+bug/1753151
2018-03-04 12:49:41 -08:00
Bernhard Stegmaier 8f42e128da Fix missing C++-11 compiler flags when building on macOS with non-Xcode clang 2018-03-04 15:00:43 -05:00
Bernhard Stegmaier a786078747 Fix clang-mp build error (don't declare const variables as being firstprivate) 2018-03-04 12:22:12 -05:00
Maciej Suminski 2af51ef20f Eagle import: do not call TrimWire() on imported schematics
It turns out that TrimWire() may remove legit Eagle wires and effectively
change the netlist.
2018-03-04 18:04:19 +01:00
Maciej Suminski 1f09990618 Remove not used ListNets() methods 2018-03-04 18:04:19 +01:00
Maciej Suminski 260f680c6c Eagle import: fix memory leak on schematic sheets import 2018-03-04 16:47:26 +01:00
Maciej Suminski 419a16ae58 Eagle import: fix footprint LIB_IDs in the imported board 2018-03-04 16:45:42 +01:00
Maciej Suminski 8e8d95dd7f Eagle import: process all sheets when adding junctions; fix footprint LIB_IDs 2018-03-04 16:45:42 +01:00
Maciej Suminski f7158e834d Created STDOUT_REPORTER class for debugging 2018-03-04 16:45:42 +01:00
Maciej Suminski a3941b1dec Eagle import plugin: remap zones/tracks/vias using net name remapping
There are a few steps to assign correct nets to zones/track/vias:
- create a net name to pad map
- perform 2 stage netlist update (fix timestamps and then references)
- compare new net names with the previously created net map, save the
    differences as a old net to new net map
- remap zones/tracks/vias using the map created in the previous step

The main advantage here is it correctly handles unnamed nets (i.e. ones
without any net labels attached), which might be changed by KiCad
netlist generator.
2018-03-04 16:45:42 +01:00
Maciej Suminski 77346d81ce Eagle import plugin: add junction dots to fix connectivity 2018-03-04 16:45:42 +01:00
Maciej Suminski 1f078f533b Refactor Eagle project import to use Kiway::ExpressMail() 2018-03-04 16:45:42 +01:00
Russell Oliver 9016344bb3 Eagle Schematic Import: Fix netlist mapping for zones and vias. 2018-03-04 16:45:11 +01:00
Russell Oliver 3d9c25494c Revert "Eagle importer: use only global net labels"
This reverts commit b1f456fade.
2018-03-04 16:42:55 +01:00
Jon Evans 2da7199a37 GerbView: Fix active layer synchronization 2018-03-03 23:43:16 -05:00
Jeff Young 284c346828 Don't cache github libraries above nginx server.
It's too expensive to fetch the timestamps when the github
server is busy.  See Dick Hollenbeck's comments at the top of
github_plugin.cpp for more info.

Also adds some safety to the other caching algorithms after
seeing github_plugin's wild-west usage of the kicad_plugin.

Fixes: lp:1753143
* https://bugs.launchpad.net/kicad/+bug/1753143
2018-03-04 01:16:59 +00:00
Wayne Stambaugh 43147a3a7a Do not append "RESCUE" to symbol names when rescuing symbols.
Fixes lp:1741755

https://bugs.launchpad.net/kicad/+bug/1741755
2018-03-03 15:34:26 -05:00
Jeff Young c294a54c57 Fix footprint wizard setup of gEDA libraries.
Fixes: lp:1753164
* https://bugs.launchpad.net/kicad/+bug/1753164
2018-03-03 20:08:29 +00:00
Jeff Young c77d13292b Reinstate multi-threading in zone filler. 2018-03-03 17:41:53 +00:00
Tomasz Włostowski 919b449595 Added 'show spice netlist' menu option in the simulator
Fixes: lp:1745887
* https://bugs.launchpad.net/kicad/+bug/1745887
2018-03-03 17:38:28 +01:00
Tomasz Włostowski d3b259cc09 pcbnew: toolbar/menu state sync for display units 2018-03-03 17:38:28 +01:00
Tomasz Włostowski af7064ef89 pcbnew: synchronize zone visibility view menu entries with the toolbar buttons 2018-03-03 17:38:28 +01:00
Wayne Stambaugh aeae32b1a2 Fix file naming bug when importing Eagle projects with . in file name.
Fixes lp:1747470

https://bugs.launchpad.net/kicad/+bug/1747470
2018-03-03 08:35:53 -05:00
Seth Hillbrand 3760b6820f pcbnew: align centers to the top and left
When aligning module centers, it can be hard to determine which item
will be chosen for the alignment target when it chooses based on the
median of the center values.  Instead, this patch chooses the alignment
target as the top and left most items of the Y and X centering,
respectively
2018-03-02 20:15:51 -08:00
Seth Hillbrand 818d4257c9 pcbnew: Prevent alignment on pads + parents
Filter a selection that contains pads and the pads' parent modules
before performing alignment operations.
2018-03-02 20:15:51 -08:00
Seth Hillbrand d5cd9761dd pcbnew: Check locks in alignment
When aligning in pcbnew, check for pad/module locks before performing a
move and query the user.

When aligning on pads, don't move the pad without moving the footprint,
so we don't break footprints.

Fixes: lp:1751352
* https://bugs.launchpad.net/kicad/+bug/1751352
2018-03-02 20:15:51 -08:00
Seth Hillbrand e6245c5c5a Fix type comparison warning 2018-03-02 17:08:01 -08:00
Jeff Young 8e1d397587 Update Eagle and gEDA importers.
Remove a throw in the Eagle importer which just threw a wedge
in the works, and return a default modTime when the file hasn't
been set yet.

Give the gEDA importer the multi-file cache management performance
improvements from the kicad_plugin.

Fixes: lp:1752719
* https://bugs.launchpad.net/kicad/+bug/1752719
2018-03-03 00:21:26 +00:00
Jeff Young 33d925f631 Add GetLibraryTimestamp to other plugins.
Fixes: lp:1752719
* https://bugs.launchpad.net/kicad/+bug/1752719
2018-03-02 20:53:48 +00:00
Seth Hillbrand cb052b42a6 LibEdit: Correct Mirroring labels in context menu
Fixes: lp:1752763
* https://bugs.launchpad.net/kicad/+bug/1752763
2018-03-02 10:17:55 -08:00
Maciej Suminski 3f1a3fe65b Derive DIALOG_MULTI_OPTIONS from wxMultiChoiceDialog 2018-03-02 18:09:27 +01:00
Maciej Suminski be13bb0013 Refactored SelectSingleOption() to take advantage of wxSingleChoiceDialog. 2018-03-02 17:43:59 +01:00
Maciej Suminski 18167f829a Derive KIDIALOG from wxRichMessageDialog
wxRichMessageDialog already offers a dialog with a checkbox, so
the custom dialog setup code is not necessary anymore.
2018-03-02 17:05:35 +01:00
Maciej Suminski 1d5df8e975 Renamed KI_DIALOG to KIDIALOG 2018-03-02 11:57:03 +01:00
Maciej Suminski d5ac7c031d Assign net classes to nets before showing the Design Rules dialog
It is needed to display nets that have just been imported to the
board (e.g. in an update PCB from schematics step).
2018-03-02 11:50:13 +01:00
Andrzej Wolski 1ac5ec1fc8 Restore some missing visibility items from board file
LAYER_TRACKS, LAYER_PADS_TH and LAYER_NON_PLATEDHOLES
now have their own visibility control, so do not force them on.
2018-03-02 11:12:53 +01:00
Maciej Suminski 0923c7f4de Change 'Create Array' default hot key due to a conflict with 'New File' 2018-03-02 11:08:04 +01:00
Maciej Suminski 52fcddf4f4 Allow drawing self-intersecting polygons, just display a warning
Fixes: lp:1751654
* https://bugs.launchpad.net/kicad/+bug/1751654
2018-03-02 10:58:43 +01:00
Seth Hillbrand 886159347a Eeschema: Verify file content exists
Fixes: lp:1752724
* https://bugs.launchpad.net/kicad/+bug/1752724
2018-03-01 14:32:59 -08:00
jean-pierre charras e3c71efbeb Fix compil warnings 2018-03-01 18:24:36 +01:00
Maciej Suminski de6b32d236 Share certain settings between board and footprint editor
45 degree graphics segments and selection vs dragging preference
should use the same setting in both applications.
2018-03-01 17:20:50 +01:00
Maciej Suminski 9127e09815 Code formatting 2018-03-01 17:20:50 +01:00
Maciej Suminski 98616da017 Added an option to enforce dragging gesture to always draw selection box
Partial solution to a problem described in lp:#1636214
2018-03-01 17:15:57 +01:00
Wayne Stambaugh ce1bd4c6b7 Eeschema: fix remapping backup project with schematics in subfolders.
The backup code was designed for a project with all of the schematics
in the project folder which is not always the case.  Fix the schematic
backup to keep the schematic folder structure in tact during backups.

Fixes lp:1751662

https://bugs.launchpad.net/kicad/+bug/1751662
2018-02-28 11:42:05 -05:00
Maciej Suminski fef1ba9993 Increase the area ratio threshold for rejecting large footprints in selection 2018-02-28 17:00:45 +01:00
Jon Evans 88fb4c57e5 PcbNew: center on items rather than zooming to them on find
Fixes: lp:1751480
* https://bugs.launchpad.net/kicad/+bug/1751480
2018-02-28 16:58:05 +01:00
Simon Richter 675bd39e8a Avoid shadowed variable 2018-02-28 16:34:03 +01:00
jean-pierre charras 2c85de3ab2 gerbview layer manager: fix a minor issue, and and icons in context menu, similar to pcbnew layer manager context menu 2018-02-28 10:21:37 +01:00
Jon Evans 2c54f6fe32 GerbView: Fix DCode reordering; ensure loaded layers are visible 2018-02-28 08:23:41 +01:00
Jon Evans de483ac1aa GerbView: only erase current layer if a new file is chosen 2018-02-28 08:23:40 +01:00
Jon Evans 490a2105c3 Properly update view when GerbView display settings changed 2018-02-28 08:23:39 +01:00
Jon Evans cd14525839 GerbView: More accurate selection of arc shapes 2018-02-28 08:23:39 +01:00
Jon Evans e2408989a4 GerbView: redraw negative items when visibility changes 2018-02-27 20:59:08 +01:00
Jon Evans 37beb726e3 GerbView: Implement in-place GAL layer reordering (for X2 sorting) 2018-02-27 20:59:07 +01:00
jean-pierre charras eb94d2fcd0 Gerbview: fix an issue when loading files: Layer filenames order in right tab view modified each time a new file is loaded.
It creates strange issues (inconsistent layer filenames order, inconsistent items colors) especially with non X2 files.
2018-02-27 19:58:07 +01:00
Robbert Lagerweij a59864201a pcbnew: use centerpoint distribution in align tool for overlaping items
reimplement the centerpoint distribution and use it when the items to be
distributed overlap leaving no gap to use for spacing

Fixes: lp:1748763
* https://bugs.launchpad.net/kicad/+bug/1748763
2018-02-27 17:58:19 +01:00
jean-pierre charras 5f578c884c Fix SetValue() method in TEXT_CTRL_EVAL
Normal SetValue() call would temporarily change the displayed
value, but as soon as the text widget receives focus again, the original
expression (not evaluated) is restored.

To avoid this, the original expression is cleared in the associated
NumericEvaluator object.
2018-02-27 12:47:43 +01:00
Maciej Suminski 5f2b8e0409 Change NumericEvaluator::clear() to optionally accept an object to clear 2018-02-27 12:47:32 +01:00
Jon Evans 0d794b20bb Add null check in ROUTER_TOOL::breakTrack() 2018-02-27 08:45:06 +01:00
Dan Weatherill 4124019f41 Send model change event on design rules change
Dispatches a TA_MODEL_CHANGE event when the design rules dialog is
closed, the intention being to cause the router tool to re-sync its
design rule information

Fixes: lp:1462929
* https://bugs.launchpad.net/kicad/+bug/1462929
2018-02-26 14:40:18 -05:00
Jon Evans 80035661dc Use proper path when loading files from Gerber job file 2018-02-26 14:26:58 -05:00
Jon Evans 5292829e05 Fix edge case GERBER_FILE_IMAGE creation logic 2018-02-26 14:26:47 -05:00
Jon Evans b03ac1f614 Only update item color when highlighting items in GerbView 2018-02-26 13:48:16 -05:00
Jon Evans 449da4303e Remove more unnecessary calls to RecacheAllItems 2018-02-26 13:47:55 -05:00
Maciej Suminski 55edf1aad2 PCB_PAINTER: use dynamic_cast to determine whether an object is of EDA_ITEM type 2018-02-26 17:22:50 +01:00
Maciej Suminski ad6571a508 GAL profiling: changed wxLogDebug() to wxLogTrace() for DRAW_PANEL_GAL 2018-02-26 17:22:47 +01:00
Jon Evans 31e78d670d Ensure ROUTER_PREVIEW_ITEM draws on top of all normal layers
Fixes: lp:1751646
* https://bugs.launchpad.net/kicad/+bug/1751646
2018-02-26 11:31:39 +01:00
Maciej Suminski b9285cf0e5 Display theta character correctly in ruler tool
Fixes: lp:1749549
* https://bugs.launchpad.net/kicad/+bug/1749549
2018-02-26 10:38:40 +01:00
Jon Evans 319b7cfc67 Remove extra call to SetTopLayer() when switching active layer 2018-02-25 19:19:45 -05:00
Jon Evans e21f18a176 Don't use the RTREE in UpdateAllLayersOrder() / UpdateAllLayersColor()
Since we are going to inspect every item for these calls, we don't
need to use the RTREE search, which is expensive with high item count.

This results in ~50% improvement in layer switching time in GerbView
when working with a set of large Gerber files.
2018-02-25 19:10:02 -05:00
Jon Evans 4ec7a02ccd Add a method to conditionally update VIEW_ITEMs (GerbView performance) 2018-02-25 18:20:44 -05:00
Jon Evans d7bb83ddcb Add a REPAINT flag for faster redraw when bounding box hasn't changed 2018-02-25 18:20:34 -05:00
Jon Evans be8bb24390 Make all new hotkeys editable; label some GAL-only hotkeys
Fixes: lp:1751183
* https://bugs.launchpad.net/kicad/+bug/1751183
2018-02-25 17:57:36 -05:00
Jon Evans cfd67163a1 Refactor post-load actions in PcbNew and apply them consistently
Fixes: lp:1751589
* https://bugs.launchpad.net/kicad/+bug/1751589
2018-02-25 17:47:36 -05:00
Jon Evans b90528a7ae Fix regression in GerbView display settings; some optimization too 2018-02-25 17:35:26 -05:00
Carsten Schoenert 2b52415cae fix misspelled 'Unkown' -> 'Unknown' 2018-02-25 17:10:10 -05:00
Carsten Schoenert 9679bd55c1 fix misspelled 'streching' -> stretching 2018-02-25 17:10:10 -05:00
Carsten Schoenert 6256feb9db fix misspelled 'occured' -> 'occurred' 2018-02-25 17:10:10 -05:00
Carsten Schoenert 5a86083a08 fix misspelled 'Occassionally' -> 'Occasionally' 2018-02-25 17:10:10 -05:00
Carsten Schoenert ff305781fb fix misspelled 'neeeded' -> 'needed' 2018-02-25 17:10:10 -05:00
Carsten Schoenert 39e81b253b fix misspelled 'Modifed' -> 'Modified' 2018-02-25 17:10:10 -05:00
Carsten Schoenert 485f90f27a fix misspelled 'Appearence' -> 'Appearance' 2018-02-25 17:10:10 -05:00
Carsten Schoenert cb14742442 fix misspelled 'accesing' -> 'accessing' 2018-02-25 17:10:10 -05:00
Michael Geselbracht 21f46776c6 Fix decimal point bug, support for more units V2
If ',' is used as decimal separator by the current locale a '.' is also accepted.
Also add support for units "mi", "th" and "in" as described in the documentation of pcbnew.

Fixes: lp:1751315
* https://bugs.launchpad.net/kicad/+bug/1751315
2018-02-25 08:21:23 +01:00
1148 changed files with 136580 additions and 121827 deletions
+1
View File
@@ -61,6 +61,7 @@ demos/**/_autosave-*
# editor/OS fluff
.*.swp
*~
.idea
.DS_Store
*.png
*.kiface
+9 -33
View File
@@ -29,6 +29,7 @@
#include <wx/log.h>
#include <wx/msgdlg.h>
#include <pgm_base.h>
#include <trace_helpers.h>
#include "common.h"
#include "3d_filename_resolver.h"
@@ -317,7 +318,8 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
wxString errmsg = "[3D File Resolver] No such path; ensure the environment var is defined";
errmsg.append( "\n" );
errmsg.append( tname );
wxLogMessage( errmsg );
errmsg.append( "\n" );
wxLogTrace( tracePathsAndFiles, errmsg );
}
return wxEmptyString;
@@ -374,8 +376,7 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
}
// ${ENV_VAR} paths have already been checked; skip them
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" )
|| sPL->m_alias.StartsWith( "$(" ) ) )
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" ) || sPL->m_alias.StartsWith( "$(" ) ) )
++sPL;
// at this point the filename must contain an alias or else it is invalid
@@ -392,7 +393,8 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
wxString errmsg = "[3D File Resolver] No such path";
errmsg.append( "\n" );
errmsg.append( tname );
wxLogTrace( MASK_3D_RESOLVER, errmsg );
errmsg.append( "\n" );
wxLogTrace( tracePathsAndFiles, errmsg );
}
return wxEmptyString;
@@ -428,7 +430,8 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
wxString errmsg = "[3D File Resolver] No such path; ensure the path alias is defined";
errmsg.append( "\n" );
errmsg.append( tname.substr( 1 ) );
wxLogTrace( MASK_3D_RESOLVER, errmsg );
errmsg.append( "\n" );
wxLogTrace( tracePathsAndFiles, errmsg );
}
return wxEmptyString;
@@ -641,40 +644,13 @@ bool S3D_FILENAME_RESOLVER::writePathList( void )
std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" )
|| sPL->m_alias.StartsWith( "$(" ) ) )
while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" ) || sPL->m_alias.StartsWith( "$(" ) ) )
++sPL;
wxFileName cfgpath( m_ConfigDir, S3D_RESOLVER_CONFIG );
wxString cfgname = cfgpath.GetFullPath();
std::ofstream cfgFile;
if( sPL == ePL )
{
wxMessageDialog md( NULL,
_( "3D search path list is empty;\ncontinue to write empty file?" ),
_( "Write 3D search path list" ), wxYES_NO );
if( md.ShowModal() == wxID_YES )
{
cfgFile.open( cfgname.ToUTF8(), std::ios_base::trunc );
if( !cfgFile.is_open() )
{
wxMessageBox( _( "Could not open configuration file" ),
_( "Write 3D search path list" ) );
return false;
}
cfgFile << "#V" << CFGFILE_VERSION << "\n";
cfgFile.close();
return true;
}
return false;
}
cfgFile.open( cfgname.ToUTF8(), std::ios_base::trunc );
if( !cfgFile.is_open() )
@@ -75,8 +75,7 @@ void DLG_3D_PATH_CONFIG::initDialog()
size_t listsize = rpaths->size();
size_t listidx = 0;
while( rI != rE && ( (*rI).m_alias.StartsWith( "${" )
|| (*rI).m_alias.StartsWith( "$(" ) ) )
while( rI != rE && ( (*rI).m_alias.StartsWith( "${" ) || (*rI).m_alias.StartsWith( "$(" ) ) )
{
++listidx;
++rI;
@@ -3,7 +3,7 @@
*
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
* Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -39,7 +39,7 @@
#define ID_CFG_PATHS ( ID_SET_DIR + 1 )
wxBEGIN_EVENT_TABLE( DLG_SELECT_3DMODEL, wxDialog )
wxBEGIN_EVENT_TABLE( DLG_SELECT_3DMODEL, DIALOG_SHIM )
EVT_DIRCTRL_SELECTIONCHANGED( ID_FILE_TREE, DLG_SELECT_3DMODEL::OnSelectionChanged )
EVT_DIRCTRL_FILEACTIVATED( ID_FILE_TREE, DLG_SELECT_3DMODEL::OnFileActivated )
EVT_CHOICE( ID_SET_DIR, DLG_SELECT_3DMODEL::SetRootDir )
@@ -49,9 +49,9 @@ wxEND_EVENT_TABLE()
DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheManager,
MODULE_3D_SETTINGS* aModelItem, wxString& prevModelSelectDir, int& prevModelWildcard ) :
wxDialog( aParent, wxID_ANY, _( "Select 3D Model" ), wxDefaultPosition,
wxSize( 500,200 ), wxCAPTION | wxRESIZE_BORDER | wxCLOSE_BOX
| wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxSYSTEM_MENU ),
DIALOG_SHIM( aParent, wxID_ANY, _( "Select 3D Model" ), wxDefaultPosition,
wxSize( 500,200 ), wxCAPTION | wxRESIZE_BORDER | wxCLOSE_BOX
| wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxSYSTEM_MENU ),
m_model( aModelItem ), m_cache( aCacheManager ), m_previousDir( prevModelSelectDir ),
m_previousFilterIndex( prevModelWildcard )
{
@@ -79,18 +79,16 @@ DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheMana
m_FileTree->ShowHidden( false );
m_FileTree->SetMinSize( wxSize( 300,100 ) );
m_FileTree->SetMinSize( wxSize( 300, 400 ) );
m_FileTree->SetLabel( wxT( "3D_MODEL_SELECTOR" ) );
bSizer2->Add( m_FileTree, 1, wxEXPAND | wxALL, 5 );
bSizer1->Add( bSizer2, 1, wxEXPAND, 5 );
bSizer1->Add( bSizer2, 3, wxEXPAND, 5 );
m_modelViewer = new C3D_MODEL_VIEWER( this,
COGL_ATT_LIST::GetAttributesList( true ),
m_cache );
m_modelViewer->SetMinSize( wxSize( 512, 384 ) );
m_modelViewer = new C3D_MODEL_VIEWER( this, COGL_ATT_LIST::GetAttributesList( true ), m_cache );
m_modelViewer->SetMinSize( wxSize( 500, 400 ) );
bSizer1->Add( m_modelViewer, 0, wxCENTER, 5 );
bSizer1->Add( m_modelViewer, 5, wxEXPAND | wxALL | wxCENTER, 5 );
// create the filter list
if( NULL != m_cache )
@@ -108,7 +106,6 @@ DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheMana
if( sL != eL )
filter.Append( wxT( "|" ) );
}
if( !filter.empty() )
@@ -137,7 +134,7 @@ DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL( wxWindow* aParent, S3D_CACHE* aCacheMana
dirChoices->SetMinSize( wxSize( 320, 12 ) );
wxStaticText* stDirChoice = new wxStaticText( this, -1, _( "Paths:" ) );
wxButton* cfgPaths = new wxButton( this, ID_CFG_PATHS, _( "Configure Path" ) );
wxButton* cfgPaths = new wxButton( this, ID_CFG_PATHS, _( "Configure Paths" ) );
hboxDirChoice->Add( stDirChoice, 0, wxALL | wxCENTER, 5 );
hboxDirChoice->Add( dirChoices, 1, wxEXPAND | wxALL, 5 );
hboxDirChoice->Add( cfgPaths, 0, wxALL, 5 );
@@ -2,6 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -38,15 +39,17 @@
#include <wx/sizer.h>
#include <wx/frame.h>
class MODULE_3D_SETTINGS;
class S3D_CACHE;
class S3D_FILENAME_RESOLVER;
class C3D_MODEL_VIEWER;
#include <dialog_shim.h>
class DLG_SELECT_3DMODEL : public wxDialog
class MODULE_3D_SETTINGS;
class S3D_CACHE;
class S3D_FILENAME_RESOLVER;
class C3D_MODEL_VIEWER;
class DLG_SELECT_3DMODEL : public DIALOG_SHIM
{
private:
MODULE_3D_SETTINGS* m_model; // data for the selected model
MODULE_3D_SETTINGS* m_model; // data for the selected model
S3D_CACHE* m_cache; // cache manager
S3D_FILENAME_RESOLVER* m_resolver; // 3D filename resolver
@@ -153,7 +153,7 @@ private:
void View3DLeft( wxCommandEvent& event ) override
{
m_previewPane->SetView3D( 'X' );
m_previewPane->SetView3D( GR_KB_SHIFT + 'X' );
}
void View3DFront( wxCommandEvent& event ) override
@@ -163,7 +163,7 @@ private:
void View3DTop( wxCommandEvent& event ) override
{
m_previewPane->SetView3D( 'z' );
m_previewPane->SetView3D( 'Z' );
}
void View3DUpdate( wxCommandEvent& event ) override
@@ -174,17 +174,17 @@ private:
void View3DRight( wxCommandEvent& event ) override
{
m_previewPane->SetView3D( 'x' );
m_previewPane->SetView3D( 'X' );
}
void View3DBack( wxCommandEvent& event ) override
{
m_previewPane->SetView3D( 'y' );
m_previewPane->SetView3D( GR_KB_SHIFT + 'Y' );
}
void View3DBottom( wxCommandEvent& event ) override
{
m_previewPane->SetView3D( 'Z' );
m_previewPane->SetView3D( GR_KB_SHIFT + 'Z' );
}
public:
+7 -28
View File
@@ -33,6 +33,7 @@
#include <class_board.h>
#include <3d_math.h>
#include "3d_fastmath.h"
#include <geometry/geometry_utils.h>
/**
* Trace mask used to enable or disable the trace output of this class.
@@ -62,7 +63,7 @@ CINFO3D_VISU::CINFO3D_VISU() :
m_boardPos = wxPoint();
m_boardSize = wxSize();
m_boardCenter = SFVEC3F();
m_boardCenter = SFVEC3F( 0.0f );
m_boardBoudingBox.Reset();
m_board2dBBox3DU.Reset();
@@ -243,37 +244,19 @@ int CINFO3D_VISU::GetCopperThicknessBIU() const
return COPPER_THICKNESS;
}
// Constant factors used for number of segments approximation calcs
#define MIN_SEG_PER_CIRCLE 12
#define MAX_SEG_PER_CIRCLE 48
#define SEG_MIN_FACTOR_BIU ( 0.10f * IU_PER_MM )
#define SEG_MAX_FACTOR_BIU ( 6.00f * IU_PER_MM )
unsigned int CINFO3D_VISU::GetNrSegmentsCircle( float aDiameter3DU ) const
{
wxASSERT( aDiameter3DU > 0.0f );
unsigned int result = mapf( aDiameter3DU,
m_calc_seg_min_factor3DU, m_calc_seg_max_factor3DU,
(float)MIN_SEG_PER_CIRCLE, (float)MAX_SEG_PER_CIRCLE );
wxASSERT( result > 1 );
return result;
return GetNrSegmentsCircle( (int)( aDiameter3DU / m_biuTo3Dunits ) );
}
unsigned int CINFO3D_VISU::GetNrSegmentsCircle( int aDiameterBUI ) const
unsigned int CINFO3D_VISU::GetNrSegmentsCircle( int aDiameterBIU ) const
{
wxASSERT( aDiameterBUI > 0 );
wxASSERT( aDiameterBIU > 0 );
unsigned int result = mapf( (float)aDiameterBUI,
(float)SEG_MIN_FACTOR_BIU, (float)SEG_MAX_FACTOR_BIU,
(float)MIN_SEG_PER_CIRCLE, (float)MAX_SEG_PER_CIRCLE );
wxASSERT( result > 1 );
return result;
return GetArcToSegmentCount( aDiameterBIU / 2, ARC_HIGH_DEF, 360.0 );
}
@@ -281,7 +264,7 @@ double CINFO3D_VISU::GetCircleCorrectionFactor( int aNrSides ) const
{
wxASSERT( aNrSides >= 3 );
return 1.0 / cos( M_PI / ( (double)aNrSides * 2.0 ) );
return GetCircletoPolyCorrectionFactor( aNrSides );
}
@@ -318,10 +301,6 @@ void CINFO3D_VISU::InitSettings( REPORTER *aStatusTextReporter )
// Calculate the convertion to apply to all positions.
m_biuTo3Dunits = RANGE_SCALE_3D / std::max( m_boardSize.x, m_boardSize.y );
// Calculate factors for cicle segment approximation
m_calc_seg_min_factor3DU = (float)( SEG_MIN_FACTOR_BIU * m_biuTo3Dunits );
m_calc_seg_max_factor3DU = (float)( SEG_MAX_FACTOR_BIU * m_biuTo3Dunits );
m_epoxyThickness3DU = m_board->GetDesignSettings().GetBoardThickness() *
m_biuTo3Dunits;
+4 -4
View File
@@ -394,10 +394,10 @@ class CINFO3D_VISU
/**
* @brief GetNrSegmentsCircle
* @param aDiameterBUI: diameter in board unities
* @param aDiameterBIU: diameter in board internal units
* @return number of sides that should be used in that circle
*/
unsigned int GetNrSegmentsCircle( int aDiameterBUI ) const;
unsigned int GetNrSegmentsCircle( int aDiameterBIU ) const;
/**
* @brief GetCircleCorrectionFactor - computes a angle correction
@@ -427,11 +427,11 @@ class CINFO3D_VISU
void createNewPad( const D_PAD* aPad,
CGENERICCONTAINER2D *aDstContainer,
const wxSize &aInflateValue ) const;
wxSize aInflateValue ) const;
void createNewPadWithClearance( const D_PAD *aPad,
CGENERICCONTAINER2D *aDstContainer,
int aClearanceValue ) const;
wxSize aClearanceValue ) const;
COBJECT2D *createNewPadDrill( const D_PAD* aPad, int aInflateValue );
@@ -66,7 +66,7 @@ static const CBBOX2D *s_boardBBox3DU = NULL;
static const BOARD_ITEM *s_boardItem = NULL;
// This is a call back function, used by DrawGraphicText to draw the 3D text shape:
void addTextSegmToContainer( int x0, int y0, int xf, int yf )
void addTextSegmToContainer( int x0, int y0, int xf, int yf, void* aData )
{
wxASSERT( s_boardBBox3DU != NULL );
wxASSERT( s_dstcontainer != NULL );
@@ -297,10 +297,14 @@ COBJECT2D *CINFO3D_VISU::createNewTrack( const TRACK* aTrack,
// board_items_to_polygon_shape_transform.cpp
void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
CGENERICCONTAINER2D *aDstContainer,
int aClearanceValue ) const
wxSize aClearanceValue ) const
{
const int dx = (aPad->GetSize().x / 2) + aClearanceValue;
const int dy = (aPad->GetSize().y / 2) + aClearanceValue;
// note: for most of shapes, aClearanceValue.x = aClearanceValue.y
// only rectangular and oval shapes can have different values
// when drawn on the solder paste layer, because we can have a margin that is a
// percent of pad size
const int dx = (aPad->GetSize().x / 2) + aClearanceValue.x;
const int dy = (aPad->GetSize().y / 2) + aClearanceValue.y;
if( !dx || !dy )
{
@@ -328,7 +332,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
case PAD_SHAPE_OVAL:
{
if( abs( dx - dy ) == 0 )
if( dx == dy )
{
// The segment object cannot store start and end the same position,
// so add a circle instead
@@ -351,7 +355,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
shape_offset.y = dy - dx;
iwidth = dx * 2;
}
else //if( dy <= dx )
else //if( dy < dx )
{
shape_offset.x = dy - dx;
iwidth = dy * 2;
@@ -374,8 +378,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
}
else
{
aDstContainer->Add( new CROUNDSEGMENT2D( start3DU,
end3DU,
aDstContainer->Add( new CROUNDSEGMENT2D( start3DU, end3DU,
iwidth * m_biuTo3Dunits,
*aPad ) );
}
@@ -386,7 +389,7 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
case PAD_SHAPE_TRAPEZOID:
case PAD_SHAPE_RECT:
{
// https://github.com/KiCad/kicad-source-mirror/blob/0cab3e47ad8097db7b898b3cef2cf9b235318ca3/pcbnew/board_items_to_polygon_shape_transform.cpp#L613
// see pcbnew/board_items_to_polygon_shape_transform.cpp
wxPoint corners[4];
aPad->BuildPadPolygon( corners, wxSize( 0, 0), aPad->GetOrientation() );
@@ -419,34 +422,33 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
// roundsegments that are in the same start and end position
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[0],
corners3DU[1],
aClearanceValue * 2.0f * m_biuTo3Dunits,
aClearanceValue.x * 2.0f * m_biuTo3Dunits,
*aPad ) );
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[1],
corners3DU[2],
aClearanceValue * 2.0f * m_biuTo3Dunits,
aClearanceValue.x * 2.0f * m_biuTo3Dunits,
*aPad ) );
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[2],
corners3DU[3],
aClearanceValue * 2.0f * m_biuTo3Dunits,
aClearanceValue.x * 2.0f * m_biuTo3Dunits,
*aPad ) );
aDstContainer->Add( new CROUNDSEGMENT2D( corners3DU[3],
corners3DU[0],
aClearanceValue * 2.0f * m_biuTo3Dunits,
aClearanceValue.x * 2.0f * m_biuTo3Dunits,
*aPad ) );
}
break;
case PAD_SHAPE_ROUNDRECT:
{
const int pad_radius = aPad->GetRoundRectCornerRadius();
const int rounding_radius = pad_radius + aClearanceValue;
wxSize shapesize( aPad->GetSize() );
shapesize.x += aClearanceValue * 2;
shapesize.y += aClearanceValue * 2;
shapesize.x += aClearanceValue.x * 2;
shapesize.y += aClearanceValue.y * 2;
int rounding_radius = aPad->GetRoundRectCornerRadius( shapesize );
wxPoint corners[4];
@@ -501,8 +503,8 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
polyList.Append( aPad->GetCustomShapeAsPolygon() );
aPad->CustomShapeAsPolygonToBoardPosition( &polyList, aPad->ShapePos(), aPad->GetOrientation() );
if( aClearanceValue )
polyList.Inflate( aClearanceValue, 32 );
if( aClearanceValue.x )
polyList.Inflate( aClearanceValue.x, 32 );
// This convert the poly in outline and holes
polyList.Simplify( SHAPE_POLY_SET::PM_FAST );
@@ -576,7 +578,7 @@ COBJECT2D *CINFO3D_VISU::createNewPadDrill( const D_PAD* aPad, int aInflateValue
// board_items_to_polygon_shape_transform.cpp
void CINFO3D_VISU::createNewPad( const D_PAD* aPad,
CGENERICCONTAINER2D *aDstContainer,
const wxSize &aInflateValue ) const
wxSize aInflateValue ) const
{
switch( aPad->GetShape() )
{
@@ -584,7 +586,7 @@ void CINFO3D_VISU::createNewPad( const D_PAD* aPad,
case PAD_SHAPE_OVAL:
case PAD_SHAPE_ROUNDRECT:
case PAD_SHAPE_CUSTOM:
createNewPadWithClearance( aPad, aDstContainer, aInflateValue.x );
createNewPadWithClearance( aPad, aDstContainer, aInflateValue );
break;
case PAD_SHAPE_TRAPEZOID:
+12 -1
View File
@@ -52,8 +52,19 @@ void CINFO3D_VISU::buildPadShapePolygon( const D_PAD* aPad,
case PAD_SHAPE_CIRCLE:
case PAD_SHAPE_OVAL:
case PAD_SHAPE_ROUNDRECT:
aPad->TransformShapeWithClearanceToPolygon( aCornerBuffer, aInflateValue.x,
{
// We are using TransformShapeWithClearanceToPolygon to build the shape.
// Currently, this method uses only the same inflate value for X and Y dirs.
// so because here this is not the case, we use a inflated dummy pad to build
// the polygonal shape
// TODO: remove this dummy pad when TransformShapeWithClearanceToPolygon will use
// a wxSize to inflate the pad size
D_PAD dummy( *aPad );
wxSize new_size = aPad->GetSize() + aInflateValue + aInflateValue;
dummy.SetSize( new_size );
dummy.TransformShapeWithClearanceToPolygon( aCornerBuffer, 0,
aSegmentsPerCircle, aCorrectionFactor );
}
break;
case PAD_SHAPE_TRAPEZOID:
+63 -39
View File
@@ -39,7 +39,7 @@
#include <class_board.h>
#include "status_text_reporter.h"
#include <gl_context_mgr.h>
#include <profile.h> // To use GetRunningMicroSecs or an other profiling utility
#include <profile.h> // To use GetRunningMicroSecs or another profiling utility
#include <bitmaps.h>
#include <hotkeys_basic.h>
#include <menus_helpers.h>
@@ -701,27 +701,27 @@ void EDA_3D_CANVAS::OnPopUpMenu( wxCommandEvent &event )
break;
case ID_POPUP_VIEW_XPOS:
key = 'x';
break;
case ID_POPUP_VIEW_XNEG:
key = 'X';
break;
case ID_POPUP_VIEW_YPOS:
key = 'y';
case ID_POPUP_VIEW_XNEG:
key = GR_KB_SHIFT + 'X';
break;
case ID_POPUP_VIEW_YNEG:
case ID_POPUP_VIEW_YPOS:
key = 'Y';
break;
case ID_POPUP_VIEW_YNEG:
key = GR_KB_SHIFT + 'Y';
break;
case ID_POPUP_VIEW_ZPOS:
key = 'z';
key = 'Z';
break;
case ID_POPUP_VIEW_ZNEG:
key = 'Z';
key = GR_KB_SHIFT + 'Z';
break;
case ID_POPUP_MOVE3D_LEFT:
@@ -758,12 +758,27 @@ void EDA_3D_CANVAS::OnCharHook( wxKeyEvent &event )
void EDA_3D_CANVAS::OnKeyEvent( wxKeyEvent& event )
{
//wxLogTrace( m_logTrace, wxT( "EDA_3D_CANVAS::OnKeyEvent" ) );
int localkey = event.GetKeyCode();
// Use only upper char values in comparisons
// (the Shift modifier is a separate attribute)
if( (localkey >= 'a') && (localkey <= 'z') )
localkey += 'A' - 'a';
if( m_camera_is_moving )
return;
SetView3D( event.GetKeyCode() );
event.Skip();
if( event.ShiftDown() )
localkey |= GR_KB_SHIFT;
if( event.ControlDown() )
localkey |= GR_KB_CTRL;
if( event.AltDown() )
localkey |= GR_KB_ALT;
if( !SetView3D( localkey ) )
event.Skip();
}
@@ -875,54 +890,55 @@ void EDA_3D_CANVAS::move_pivot_based_on_cur_mouse_position()
}
void EDA_3D_CANVAS::SetView3D( int keycode )
bool EDA_3D_CANVAS::SetView3D( int aKeycode )
{
if( m_camera_is_moving )
return;
return false;
const float delta_move = m_delta_move_step_factor * m_settings.CameraGet().ZoomGet();
const float arrow_moving_time_speed = 8.0f;
bool handled = false;
switch( keycode )
switch( aKeycode )
{
case WXK_SPACE:
move_pivot_based_on_cur_mouse_position();
return;
return true;
case WXK_LEFT:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( -delta_move, 0.0f, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return;
return true;
case WXK_RIGHT:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( +delta_move, 0.0f, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return;
return true;
case WXK_UP:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( 0.0f, +delta_move, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return;
return true;
case WXK_DOWN:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( 0.0f, -delta_move, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return;
return true;
case WXK_HOME:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
request_start_moving_camera( glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
return;
return true;
case WXK_END:
break;
@@ -932,25 +948,28 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().RotateZ_T1( glm::radians( 45.0f ) );
request_start_moving_camera();
handled = true;
break;
case WXK_F1:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
if( m_settings.CameraGet().Zoom_T1( 1.4f ) )
request_start_moving_camera( 3.0f );
return;
return true;
case WXK_F2:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
if( m_settings.CameraGet().Zoom_T1( 1/1.4f ) )
request_start_moving_camera( 3.0f );
return;
return true;
case '+':
break;
case '-':
break;
@@ -959,6 +978,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL,
!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL ) );
ReloadRequest();
handled = true;
break;
case 's':
@@ -966,6 +986,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT,
!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT ) );
ReloadRequest();
handled = true;
break;
case 'v':
@@ -973,6 +994,7 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL,
!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL ) );
ReloadRequest();
handled = true;
break;
case 'r':
@@ -981,62 +1003,62 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
request_start_moving_camera( glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
return;
return true;
case 'x':
case 'X':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateZ_T1( glm::radians( -90.0f ) );
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
request_start_moving_camera();
return;
return true;
case 'X':
case GR_KB_SHIFT + 'X':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateZ_T1( glm::radians( 90.0f ) );
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
request_start_moving_camera();
return;
return true;
case 'y':
case 'Y':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
request_start_moving_camera();
return;
return true;
case 'Y':
case GR_KB_SHIFT + 'Y':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
m_settings.CameraGet().RotateZ_T1( glm::radians( -180.0f ) );
request_start_moving_camera();
return;
return true;
case 'z':
case 'Z':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
request_start_moving_camera(
glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
return;
return true;
case 'Z':
case GR_KB_SHIFT + 'Z':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateX_T1( glm::radians( -180.0f ) );
request_start_moving_camera(
glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
return;
return true;
default:
return;
return false;
}
m_mouse_was_moved = true;
@@ -1045,6 +1067,8 @@ void EDA_3D_CANVAS::SetView3D( int keycode )
DisplayStatus();
Request_refresh();
return handled;
}
+6 -4
View File
@@ -100,9 +100,11 @@ class EDA_3D_CANVAS : public HIDPI_GL_CANVAS
/**
* @brief SetView3D - Helper function to call view commands
* @param keycode: ascii key commands
* @param aKeycode: ascii key commands
* @return true if the key code was handled,
* false if no command found for this code.
*/
void SetView3D( int keycode );
bool SetView3D( int aKeycode );
/**
* @brief RenderEngineChanged - Notify that the render engine was changed
@@ -121,6 +123,8 @@ class EDA_3D_CANVAS : public HIDPI_GL_CANVAS
*/
void Request_refresh( bool aRedrawImmediately = true );
void OnKeyEvent( wxKeyEvent& event );
private:
void OnPaint( wxPaintEvent &event );
@@ -149,8 +153,6 @@ class EDA_3D_CANVAS : public HIDPI_GL_CANVAS
void OnCharHook( wxKeyEvent& event );
void OnKeyEvent( wxKeyEvent& event );
void OnTimerTimeout_Editing( wxTimerEvent& event );
/**
@@ -35,7 +35,7 @@
#include "../../3d_fastmath.h"
#include <trigo.h>
#include <project.h>
#include <profile.h> // To use GetRunningMicroSecs or an other profiling utility
#include <profile.h> // To use GetRunningMicroSecs or another profiling utility
void C3D_RENDER_OGL_LEGACY::add_object_to_triangle_layer( const CFILLEDCIRCLE2D * aFilledCircle,
@@ -642,7 +642,7 @@ void C3D_RENDER_OGL_LEGACY::reload( REPORTER *aStatusTextReporter )
if( aStatusTextReporter )
aStatusTextReporter->Report( _( "Loading 3D models" ) );
load_3D_models();
load_3D_models( aStatusTextReporter );
#ifdef PRINT_STATISTICS_3D_VIEWER
unsigned stats_end_models_Load_Time = GetRunningMicroSecs();
@@ -768,9 +768,11 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
{
const VIA *via = static_cast<const VIA*>(track);
const float holediameter = via->GetDrillValue() * m_settings.BiuTo3Dunits();
const float thickness = m_settings.GetCopperThickness3DU();
const float hole_inner_radius = ( holediameter / 2.0f );
const float holediameter = via->GetDrillValue() * m_settings.BiuTo3Dunits();
const float thickness = m_settings.GetCopperThickness3DU();
const int nrSegments = m_settings.GetNrSegmentsCircle( via->GetDrillValue() );
const double correctionFactor = m_settings.GetCircleCorrectionFactor( nrSegments );
const float hole_inner_radius = ( holediameter / 2.0f ) * correctionFactor;
const SFVEC2F via_center( via->GetStart().x * m_settings.BiuTo3Dunits(),
-via->GetStart().y * m_settings.BiuTo3Dunits() );
@@ -790,7 +792,7 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
hole_inner_radius + thickness,
ztop,
zbot,
m_settings.GetNrSegmentsCircle( via->GetDrillValue() ),
nrSegments,
layerTriangleVIA );
}
}
@@ -829,20 +831,20 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
// we use the hole diameter to calculate the seg count.
// for round holes, drillsize.x == drillsize.y
// for oblong holes, the diameter is the smaller of
// (drillsize.x, drillsize.y)
const int diam = std::min( drillsize.x, drillsize.y ) +
m_settings.GetCopperThicknessBIU() * 2;
const int segmentsPerCircle = m_settings.GetNrSegmentsCircle( diam );
// for slots, the diameter is the smaller of (drillsize.x, drillsize.y)
int copperThickness = m_settings.GetCopperThicknessBIU();
int radius = std::min( drillsize.x, drillsize.y ) / 2 + copperThickness;
int nrSegments = m_settings.GetNrSegmentsCircle( radius * 2 );
double correctionFactor = m_settings.GetCircleCorrectionFactor( nrSegments );
int correction = radius * ( correctionFactor - 1 );
pad->BuildPadDrillShapePolygon( tht_outer_holes_poly,
m_settings.GetCopperThicknessBIU(),
segmentsPerCircle );
copperThickness + correction,
nrSegments );
pad->BuildPadDrillShapePolygon( tht_inner_holes_poly,
0,
segmentsPerCircle );
correction,
nrSegments );
}
}
}
@@ -921,7 +923,7 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
* cache for this render. (cache based on C_OGL_3DMODEL with associated
* openGL lists in GPU memory)
*/
void C3D_RENDER_OGL_LEGACY::load_3D_models()
void C3D_RENDER_OGL_LEGACY::load_3D_models( REPORTER *aStatusTextReporter )
{
if( (!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL )) &&
(!m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT )) &&
@@ -943,7 +945,18 @@ void C3D_RENDER_OGL_LEGACY::load_3D_models()
{
if( !sM->m_Filename.empty() )
{
if( aStatusTextReporter )
{
// Display the short filename of the 3D model loaded:
// (the full name is usually too long to be displayed)
wxFileName fn( sM->m_Filename );
wxString msg;
msg.Printf( _( "Loading %s" ), fn.GetFullName() );
aStatusTextReporter->Report( msg );
}
// Check if the model is not present in our cache map
// (Not already loaded in memory)
if( m_3dmodel_map.find( sM->m_Filename ) == m_3dmodel_map.end() )
{
// It is not present, try get it from cache
@@ -174,7 +174,7 @@ private:
void generate_3D_Vias_and_Pads();
void load_3D_models();
void load_3D_models( REPORTER *aStatusTextReporter );
/**
* @brief render_3D_models
@@ -218,7 +218,7 @@ C_OGL_3DMODEL::C_OGL_3DMODEL( const S3DMODEL &a3DModel,
glDisableClientState( GL_NORMAL_ARRAY );
glDisableClientState( GL_VERTEX_ARRAY );
glFinish();
glFlush();
delete [] pColorRGBA;
}
@@ -319,7 +319,7 @@ C_OGL_3DMODEL::C_OGL_3DMODEL( const S3DMODEL &a3DModel,
for( unsigned int mesh_i = 0; mesh_i < a3DModel.m_MeshesSize; ++mesh_i )
m_model_bbox.Union( m_meshs_bbox[mesh_i] );
glFinish();
glFlush();
}
}
@@ -46,7 +46,7 @@
#include <class_module.h>
#include <base_units.h>
#include <profile.h> // To use GetRunningMicroSecs or an other profiling utility
#include <profile.h> // To use GetRunningMicroSecs or another profiling utility
/**
* Scale convertion from 3d model units to pcb units
@@ -1211,7 +1211,7 @@ void C3D_RENDER_RAYTRACING::load_3D_models()
wxPoint pos = module->GetPosition();
glm::mat4 moduleMatrix = glm::mat4();
glm::mat4 moduleMatrix = glm::mat4( 1.0f );
moduleMatrix = glm::translate( moduleMatrix,
SFVEC3F( pos.x * m_settings.BiuTo3Dunits(),
@@ -36,7 +36,7 @@
#include "3d_fastmath.h"
#include "3d_math.h"
#include "../common_ogl/ogl_utils.h"
#include <profile.h> // To use GetRunningMicroSecs or an other profiling utility
#include <profile.h> // To use GetRunningMicroSecs or another profiling utility
// This should be used in future for the function
// convertLinearToSRGB
@@ -372,7 +372,7 @@ void C3D_RENDER_RAYTRACING::rt_render_tracing( GLubyte *ptrPBO ,
int numBlocksRendered = 0;
#pragma omp parallel for schedule(dynamic) shared(breakLoop) \
firstprivate(ptrPBO, nrBlocks, startTime) reduction(+:numBlocksRendered) default(none)
firstprivate(ptrPBO) reduction(+:numBlocksRendered) default(none)
for( long iBlock = 0; iBlock < nrBlocks; iBlock++ )
{
@@ -497,7 +497,7 @@ static void HITINFO_PACKET_init( HITINFO_PACKET *aHitPacket )
aHitPacket[i].m_HitInfo.m_tHit = std::numeric_limits<float>::infinity();
aHitPacket[i].m_HitInfo.m_acc_node_info = 0;
aHitPacket[i].m_hitresult = false;
aHitPacket[i].m_HitInfo.m_HitNormal = SFVEC3F();
aHitPacket[i].m_HitInfo.m_HitNormal = SFVEC3F( 0.0f );
aHitPacket[i].m_HitInfo.m_ShadowFactor = 1.0f;
}
}
@@ -706,9 +706,9 @@ void C3D_RENDER_RAYTRACING::rt_render_trace_block( GLubyte *ptrPBO ,
{
m_postshader_ssao.SetPixelData( blockPos.x + x,
yBlockPos,
SFVEC3F(),
SFVEC3F( 0.0f ),
outColor,
SFVEC3F(),
SFVEC3F( 0.0f ),
0,
1.0f );
}
@@ -883,9 +883,9 @@ void C3D_RENDER_RAYTRACING::rt_render_trace_block( GLubyte *ptrPBO ,
hitPacket_X0Y0[i].m_HitInfo.m_ShadowFactor );
else
m_postshader_ssao.SetPixelData( bPos.x, bPos.y,
SFVEC3F(),
SFVEC3F( 0.0f ),
hColor,
SFVEC3F(),
SFVEC3F( 0.0f ),
0,
1.0f );
@@ -965,16 +965,16 @@ void C3D_RENDER_RAYTRACING::rt_render_post_process_blur_finish( GLubyte *ptrPBO,
{
GLubyte *ptr = &ptrPBO[ y * m_realBufferSize.x * 4 ];
SFVEC3F *ptrShaderY0 =
const SFVEC3F *ptrShaderY0 =
&m_shaderBuffer[ glm::max((int)y - 2, 0) * m_realBufferSize.x ];
SFVEC3F *ptrShaderY1 =
const SFVEC3F *ptrShaderY1 =
&m_shaderBuffer[ glm::max((int)y - 1, 0) * m_realBufferSize.x ];
SFVEC3F *ptrShaderY2 =
const SFVEC3F *ptrShaderY2 =
&m_shaderBuffer[ y * m_realBufferSize.x ];
SFVEC3F *ptrShaderY3 =
const SFVEC3F *ptrShaderY3 =
&m_shaderBuffer[ glm::min((int)y + 1, (int)(m_realBufferSize.y - 1)) *
m_realBufferSize.x ];
SFVEC3F *ptrShaderY4 =
const SFVEC3F *ptrShaderY4 =
&m_shaderBuffer[ glm::min((int)y + 2, (int)(m_realBufferSize.y - 1)) *
m_realBufferSize.x ];
@@ -982,77 +982,46 @@ void C3D_RENDER_RAYTRACING::rt_render_post_process_blur_finish( GLubyte *ptrPBO,
{
// This #if should be 1, it is here that can be used for debug proposes during development
#if 1
int idx = x > 1 ? -2 : 0;
SFVEC3F bluredShadeColor = ptrShaderY0[idx] * 1.0f / 273.0f +
ptrShaderY1[idx] * 4.0f / 273.0f +
ptrShaderY2[idx] * 7.0f / 273.0f +
ptrShaderY3[idx] * 4.0f / 273.0f +
ptrShaderY4[idx] * 1.0f / 273.0f;
SFVEC3F bluredShadeColor = (*ptrShaderY0) * 1.0f / 273.0f +
(*ptrShaderY1) * 4.0f / 273.0f +
(*ptrShaderY2) * 7.0f / 273.0f +
(*ptrShaderY3) * 4.0f / 273.0f +
(*ptrShaderY4) * 1.0f / 273.0f;
if( x > 1 )
{
ptrShaderY0++;
ptrShaderY1++;
ptrShaderY2++;
ptrShaderY3++;
ptrShaderY4++;
}
idx = x > 0 ? -1 : 0;
bluredShadeColor += ptrShaderY0[idx] * 4.0f / 273.0f +
ptrShaderY1[idx] * 16.0f / 273.0f +
ptrShaderY2[idx] * 26.0f / 273.0f +
ptrShaderY3[idx] * 16.0f / 273.0f +
ptrShaderY4[idx] * 4.0f / 273.0f;
bluredShadeColor += (*ptrShaderY0) * 4.0f / 273.0f +
(*ptrShaderY1) *16.0f / 273.0f +
(*ptrShaderY2) *26.0f / 273.0f +
(*ptrShaderY3) *16.0f / 273.0f +
(*ptrShaderY4) * 4.0f / 273.0f;
bluredShadeColor += (*ptrShaderY0) * 7.0f / 273.0f +
(*ptrShaderY1) * 26.0f / 273.0f +
(*ptrShaderY2) * 41.0f / 273.0f +
(*ptrShaderY3) * 26.0f / 273.0f +
(*ptrShaderY4) * 7.0f / 273.0f;
if( x > 0 )
{
ptrShaderY0++;
ptrShaderY1++;
ptrShaderY2++;
ptrShaderY3++;
ptrShaderY4++;
}
idx = (x < (int)m_realBufferSize.x - 1) ? 1 : 0;
bluredShadeColor += ptrShaderY0[idx] * 4.0f / 273.0f +
ptrShaderY1[idx] *16.0f / 273.0f +
ptrShaderY2[idx] *26.0f / 273.0f +
ptrShaderY3[idx] *16.0f / 273.0f +
ptrShaderY4[idx] * 4.0f / 273.0f;
bluredShadeColor += (*ptrShaderY0) * 7.0f / 273.0f +
(*ptrShaderY1) *26.0f / 273.0f +
(*ptrShaderY2) *41.0f / 273.0f +
(*ptrShaderY3) *26.0f / 273.0f +
(*ptrShaderY4) * 7.0f / 273.0f;
idx = (x < (int)m_realBufferSize.x - 2) ? 2 : 0;
bluredShadeColor += ptrShaderY0[idx] * 1.0f / 273.0f +
ptrShaderY1[idx] * 4.0f / 273.0f +
ptrShaderY2[idx] * 7.0f / 273.0f +
ptrShaderY3[idx] * 4.0f / 273.0f +
ptrShaderY4[idx] * 1.0f / 273.0f;
if( x < ((int)m_realBufferSize.x - 1) )
{
ptrShaderY0++;
ptrShaderY1++;
ptrShaderY2++;
ptrShaderY3++;
ptrShaderY4++;
}
bluredShadeColor += (*ptrShaderY0) * 4.0f / 273.0f +
(*ptrShaderY1) *16.0f / 273.0f +
(*ptrShaderY2) *26.0f / 273.0f +
(*ptrShaderY3) *16.0f / 273.0f +
(*ptrShaderY4) * 4.0f / 273.0f;
if( x < ((int)m_realBufferSize.x - 2) )
{
ptrShaderY0++;
ptrShaderY1++;
ptrShaderY2++;
ptrShaderY3++;
ptrShaderY4++;
}
bluredShadeColor += (*ptrShaderY0) * 1.0f / 273.0f +
(*ptrShaderY1) * 4.0f / 273.0f +
(*ptrShaderY2) * 7.0f / 273.0f +
(*ptrShaderY3) * 4.0f / 273.0f +
(*ptrShaderY4) * 1.0f / 273.0f;
ptrShaderY0-= 3;
ptrShaderY1-= 3;
ptrShaderY2-= 3;
ptrShaderY3-= 3;
ptrShaderY4-= 3;
// process next pixel
++ptrShaderY0;
++ptrShaderY1;
++ptrShaderY2;
++ptrShaderY3;
++ptrShaderY4;
#ifdef USE_SRGB_SPACE
const SFVEC3F originColor = convertLinearToSRGB( m_postshader_ssao.GetColorAtNotProtected( SFVEC2I( x,y ) ) );
@@ -2067,7 +2036,7 @@ bool C3D_RENDER_RAYTRACING::initializeOpenGL()
void C3D_RENDER_RAYTRACING::initialize_block_positions()
{
m_realBufferSize = SFVEC2UI();
m_realBufferSize = SFVEC2UI( 0 );
// Calc block positions for fast preview mode
// /////////////////////////////////////////////////////////////////////
+423
View File
@@ -0,0 +1,423 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file 3d_menubar.cpp
*/
#include <fctsys.h>
#include <eda_3d_viewer.h>
#include <3d_canvas/cinfo3d_visu.h>
#include <menus_helpers.h>
#include <3d_viewer_id.h>
#include "help_common_strings.h"
extern struct EDA_HOTKEY_CONFIG g_3DViewer_Hokeys_Descr[];
void EDA_3D_VIEWER::CreateMenuBar()
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::CreateMenuBar" ) );
wxMenuBar* menuBar = new wxMenuBar;
wxMenu* fileMenu = new wxMenu;
wxMenu* editMenu = new wxMenu;
wxMenu* viewMenu = new wxMenu;
wxMenu* prefsMenu = new wxMenu;
wxMenu* helpMenu = new wxMenu;
menuBar->Append( fileMenu, _( "&File" ) );
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_PNG,
_( "Export Current View as PNG..." ),
KiBitmap( export_xpm ) );
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_JPEG,
_( "Export Current View as JPEG..." ),
KiBitmap( export_xpm ) );
fileMenu->AppendSeparator();
AddMenuItem( fileMenu, wxID_EXIT,
_( "&Exit" ),
KiBitmap( exit_xpm ) );
menuBar->Append( editMenu, _( "&Edit" ) );
AddMenuItem( editMenu, ID_TOOL_SCREENCOPY_TOCLIBBOARD,
_( "Copy 3D Image" ),
KiBitmap( copy_xpm ) );
menuBar->Append( viewMenu, _( "&View" ) );
AddMenuItem( viewMenu, ID_ZOOM_IN,
_( "Zoom &In" ), HELP_ZOOM_IN,
KiBitmap( zoom_in_xpm ) );
AddMenuItem( viewMenu, ID_ZOOM_OUT,
_( "Zoom &Out" ), HELP_ZOOM_OUT,
KiBitmap( zoom_out_xpm ) );
AddMenuItem( viewMenu, ID_ZOOM_PAGE,
_( "Zoom to &Fit" ), HELP_ZOOM_FIT,
KiBitmap( zoom_fit_in_page_xpm ) );
AddMenuItem( viewMenu, ID_ZOOM_REDRAW,
_( "&Redraw" ), HELP_ZOOM_REDRAW,
KiBitmap( zoom_redraw_xpm ) );
viewMenu->AppendSeparator();
AddMenuItem( viewMenu, ID_ROTATE3D_X_NEG,
_( "Rotate X Clockwise" ),
KiBitmap( rotate_neg_x_xpm ) );
AddMenuItem( viewMenu, ID_ROTATE3D_X_POS,
_( "Rotate X Counterclockwise" ),
KiBitmap( rotate_pos_x_xpm ) );
viewMenu->AppendSeparator();
AddMenuItem( viewMenu, ID_ROTATE3D_Y_NEG,
_( "Rotate Y Clockwise" ),
KiBitmap( rotate_neg_y_xpm ) );
AddMenuItem( viewMenu, ID_ROTATE3D_Y_POS,
_( "Rotate Y Counterclockwise" ),
KiBitmap( rotate_pos_y_xpm ) );
viewMenu->AppendSeparator();
AddMenuItem( viewMenu, ID_ROTATE3D_Z_NEG,
_( "Rotate Z Clockwise" ),
KiBitmap( rotate_neg_z_xpm ) );
AddMenuItem( viewMenu, ID_ROTATE3D_Z_POS,
_( "Rotate Z Counterclockwise" ),
KiBitmap( rotate_pos_z_xpm ) );
viewMenu->AppendSeparator();
AddMenuItem( viewMenu, ID_MOVE3D_LEFT,
_( "Move left" ),
KiBitmap( left_xpm ) );
AddMenuItem( viewMenu, ID_MOVE3D_RIGHT,
_( "Move right" ),
KiBitmap( right_xpm ) );
AddMenuItem( viewMenu, ID_MOVE3D_UP,
_( "Move up" ),
KiBitmap( up_xpm ) );
AddMenuItem( viewMenu, ID_MOVE3D_DOWN,
_( "Move down" ),
KiBitmap( down_xpm ) );
menuBar->Append( prefsMenu, _( "&Preferences" ) );
AddMenuItem( prefsMenu, ID_MENU3D_MOUSEWHEEL_PANNING,
_( "Use Touchpad to Pan" ),
KiBitmap( tools_xpm ), wxITEM_CHECK );
prefsMenu->AppendSeparator();
AddMenuItem( prefsMenu, ID_TOOL_SET_VISIBLE_ITEMS,
_( "Display Options" ),
KiBitmap( read_setup_xpm ) );
wxMenu * renderEngineList = new wxMenu;
AddMenuItem( prefsMenu, renderEngineList, ID_MENU3D_ENGINE,
_( "Render Engine" ), KiBitmap( render_mode_xpm ) );
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_OPENGL_LEGACY,
_( "OpenGL" ),
wxEmptyString );
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_RAYTRACING,
_( "Raytracing" ),
wxEmptyString );
renderEngineList->Check( ID_MENU3D_ENGINE_OPENGL_LEGACY,
m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
renderEngineList->Check( ID_MENU3D_ENGINE_RAYTRACING,
m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
wxMenu * renderOptionsMenu = new wxMenu;
AddMenuItem( prefsMenu, renderOptionsMenu, ID_MENU3D_FL,
_( "Render Options" ), KiBitmap( options_3drender_xpm ) );
wxMenu * materialsList = new wxMenu;
AddMenuItem( renderOptionsMenu, materialsList, ID_MENU3D_FL_RENDER_MATERIAL,
_( "Material Properties" ), KiBitmap( color_materials_xpm ) );
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL,
_( "Use All Properties" ),
_( "Use all material properties from each 3D model file" ) );
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY,
_( "Use Diffuse Only" ),
_( "Use only the diffuse color property from model 3D model file " ) );
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE,
_( "CAD Color Style" ),
_( "Use a CAD color style based on the diffuse color of the material" ) );
// Add specific preferences for OpenGL
// /////////////////////////////////////////////////////////////////////////
wxMenu * renderOptionsMenu_OPENGL = new wxMenu;
AddMenuItem( renderOptionsMenu, renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL,
_( "OpenGL Options" ), KiBitmap( tools_xpm ) );
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS,
_( "Show Copper Thickness" ),
_( "Shows the copper thickness on copper layers (slower loading)"),
KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX,
_( "Show Model Bounding Boxes" ),
KiBitmap( ortho_xpm ), wxITEM_CHECK );
// Add specific preferences for Raytracing
// /////////////////////////////////////////////////////////////////////////
wxMenu * renderOptionsMenu_RAYTRACING = new wxMenu;
AddMenuItem( renderOptionsMenu, renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING,
_( "Raytracing Options" ), KiBitmap( tools_xpm ) );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS,
_( "Render Shadows" ),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES,
_( "Procedural Textures" ),
_( "Apply procedural textures to materials (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_BACKFLOOR,
_( "Add Floor" ),
_( "Adds a floor plane below the board (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFRACTIONS,
_( "Refractions" ),
_( "Render materials with refractions properties on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFLECTIONS,
_( "Reflections" ),
_( "Render materials with reflections properties on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING,
_( "Anti-aliasing" ),
_( "Render with improved quality on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_POST_PROCESSING,
_( "Post-processing" ),
_( "Apply Screen Space Ambient Occlusion and Global Illumination reflections on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
prefsMenu->AppendSeparator();
// Colors, axis and grid elements
// /////////////////////////////////////////////////////////////////////////
// Add submenu set Colors
wxMenu * setColorMenu = new wxMenu;
AddMenuItem( prefsMenu, setColorMenu, ID_MENU3D_COLOR,
_( "Choose Colors" ), KiBitmap( palette_xpm ) );
wxMenu * setBgColorMenu = new wxMenu;
AddMenuItem( setColorMenu, setBgColorMenu, ID_MENU3D_BGCOLOR,
_( "Background Color" ), KiBitmap( palette_xpm ) );
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_TOP_SELECTION,
_( "Background Top Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_BOTTOM_SELECTION,
_( "Background Bottom Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_SILKSCREEN_COLOR_SELECTION,
_( "Silkscreen Color..." ), KiBitmap( setcolor_silkscreen_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERMASK_COLOR_SELECTION,
_( "Solder Mask Color..." ), KiBitmap( setcolor_soldermask_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERPASTE_COLOR_SELECTION,
_( "Solder Paste Color..." ), KiBitmap( setcolor_solderpaste_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_COPPER_COLOR_SELECTION,
_( "Copper/Surface Finish Color..." ), KiBitmap( setcolor_copper_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_PCB_BODY_COLOR_SELECTION,
_( "Board Body Color..." ), KiBitmap( setcolor_board_body_xpm ) );
AddMenuItem( prefsMenu, ID_MENU3D_AXIS_ONOFF,
_( "Show 3D &Axis" ), KiBitmap( axis3d_front_xpm ), wxITEM_CHECK );
// Creates grid menu
// /////////////////////////////////////////////////////////////////////////
wxMenu * gridlistMenu = new wxMenu;
AddMenuItem( prefsMenu, gridlistMenu, ID_MENU3D_GRID,
_( "3D Grid" ), KiBitmap( grid_xpm ) );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_NOGRID, _( "No 3D Grid" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_10_MM, _( "3D Grid 10 mm" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_5_MM, _( "3D Grid 5 mm" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_2P5_MM, _( "3D Grid 2.5 mm" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_1_MM, _( "3D Grid 1 mm" ), wxEmptyString );
// If the grid is on, check the corresponding menuitem showing the grid size
if( m_settings.GridGet() != GRID3D_NONE )
{
gridlistMenu->Check( ID_MENU3D_GRID_10_MM, m_settings.GridGet() == GRID3D_10MM );
gridlistMenu->Check( ID_MENU3D_GRID_5_MM, m_settings.GridGet() == GRID3D_5MM );
gridlistMenu->Check( ID_MENU3D_GRID_2P5_MM, m_settings.GridGet() == GRID3D_2P5MM );
gridlistMenu->Check( ID_MENU3D_GRID_1_MM, m_settings.GridGet() == GRID3D_1MM );
}
else
gridlistMenu->Check( ID_MENU3D_GRID_NOGRID, true );
// Reset options
// /////////////////////////////////////////////////////////////////////////
prefsMenu->AppendSeparator();
AddMenuItem( prefsMenu, ID_MENU3D_RESET_DEFAULTS,
_( "Reset to Default Settings" ),
KiBitmap( tools_xpm ) );
// Help menu
// /////////////////////////////////////////////////////////////////////////
menuBar->Append( helpMenu, _( "&Help" ) );
AddMenuItem( helpMenu, wxID_HELP,
_( "Pcbnew &Manual" ),
_( "Open Pcbnew Manual" ),
KiBitmap( online_help_xpm ) );
AddMenuItem( helpMenu, wxID_INDEX,
_( "&Getting Started in KiCad" ),
_( "Open \"Getting Started in KiCad\" guide for beginners" ),
KiBitmap( help_xpm ) );
wxString text = AddHotkeyName( _( "&List Hotkeys..." ), g_3DViewer_Hokeys_Descr, HK_HELP );
AddMenuItem( helpMenu, ID_MENU3D_HELP_HOTKEY_SHOW_CURRENT_LIST,
text,
_( "Displays the current hotkeys list and corresponding commands" ),
KiBitmap( hotkeys_xpm ) );
helpMenu->AppendSeparator();
AddMenuItem( helpMenu, ID_HELP_GET_INVOLVED,
_( "Get &Involved" ),
_( "Contribute to KiCad (opens a web browser)" ),
KiBitmap( info_xpm ) );
helpMenu->AppendSeparator();
AddMenuItem( helpMenu, wxID_ABOUT,
_( "&About KiCad" ),
_( "Display KiCad About dialog" ),
KiBitmap( about_xpm ) );
SetMenuBar( menuBar );
SetMenuBarOptionsState();
}
void EDA_3D_VIEWER::SetMenuBarOptionsState()
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState" ) );
wxMenuBar* menuBar = GetMenuBar();
if( menuBar == NULL )
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState menuBar == NULL" ) );
return;
}
wxMenuItem* item;
// Set the state of toggle menus according to the current display options
item = menuBar->FindItem( ID_MENU3D_MOUSEWHEEL_PANNING );
item->Check( m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) );
item = menuBar->FindItem( ID_MENU3D_ENGINE_OPENGL_LEGACY );
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
item = menuBar->FindItem( ID_MENU3D_ENGINE_RAYTRACING );
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL );
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_NORMAL );
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY );
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_DIFFUSE_ONLY );
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE );
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_CAD_MODE );
// OpenGL
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS );
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) );
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX );
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX ) );
// Raytracing
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_SHADOWS ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_BACKFLOOR );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_BACKFLOOR ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFRACTIONS );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFRACTIONS ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFLECTIONS );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFLECTIONS ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_POST_PROCESSING );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES ) );
item = menuBar->FindItem( ID_MENU3D_AXIS_ONOFF );
item->Check( m_settings.GetFlag( FL_AXIS ) );
}
+11 -397
View File
@@ -3,8 +3,8 @@
*
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -63,8 +63,8 @@ void EDA_3D_VIEWER::ReCreateMainToolbar()
m_mainToolBar->AddSeparator();
m_mainToolBar->AddTool( ID_TOOL_SET_VISIBLE_ITEMS, wxEmptyString,
KiBitmap( read_setup_xpm ),
_( "Set display options, and some layers visibility" ) );
KiBitmap( read_setup_xpm ),
_( "Set display options, and some layers visibility" ) );
m_mainToolBar->AddSeparator();
m_mainToolBar->AddTool( ID_RENDER_CURRENT_VIEW, wxEmptyString,
@@ -84,34 +84,34 @@ void EDA_3D_VIEWER::ReCreateMainToolbar()
_( "Redraw view" ) );
m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ),
_( "Fit in page" ) );
_( "Zoom to fit 3D model" ) );
m_mainToolBar->AddSeparator();
m_mainToolBar->AddTool( ID_ROTATE3D_X_NEG, wxEmptyString,
KiBitmap( rotate_neg_x_xpm ),
_( "Rotate X <-" ) );
_( "Rotate X Clockwise" ) );
m_mainToolBar->AddTool( ID_ROTATE3D_X_POS, wxEmptyString,
KiBitmap( rotate_pos_x_xpm ),
_( "Rotate X ->" ) );
_( "Rotate X Counterclockwise" ) );
m_mainToolBar->AddSeparator();
m_mainToolBar->AddTool( ID_ROTATE3D_Y_NEG, wxEmptyString,
KiBitmap( rotate_neg_y_xpm ),
_( "Rotate Y <-" ) );
_( "Rotate Y Clockwise" ) );
m_mainToolBar->AddTool( ID_ROTATE3D_Y_POS, wxEmptyString,
KiBitmap( rotate_pos_y_xpm ),
_( "Rotate Y ->" ) );
_( "Rotate Y Counterclockwise" ) );
m_mainToolBar->AddSeparator();
m_mainToolBar->AddTool( ID_ROTATE3D_Z_NEG, wxEmptyString,
KiBitmap( rotate_neg_z_xpm ),
_( "Rotate Z <-" ) );
_( "Rotate Z Clockwise" ) );
m_mainToolBar->AddTool( ID_ROTATE3D_Z_POS, wxEmptyString,
KiBitmap( rotate_pos_z_xpm ),
_( "Rotate Z ->" ) );
_( "Rotate Z Counterclockwise" ) );
m_mainToolBar->AddSeparator();
m_mainToolBar->AddTool( ID_MOVE3D_LEFT, wxEmptyString, KiBitmap( left_xpm ),
@@ -135,392 +135,6 @@ void EDA_3D_VIEWER::ReCreateMainToolbar()
}
void EDA_3D_VIEWER::CreateMenuBar()
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::CreateMenuBar" ) );
wxMenuBar* menuBar = new wxMenuBar;
wxMenu* fileMenu = new wxMenu;
wxMenu* editMenu = new wxMenu;
wxMenu* prefsMenu = new wxMenu;
wxMenu* helpMenu = new wxMenu;
menuBar->Append( fileMenu, _( "&File" ) );
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_PNG,
_( "Export Current View as PNG..." ),
KiBitmap( export_xpm ) );
AddMenuItem( fileMenu, ID_MENU_SCREENCOPY_JPEG,
_( "Export Current View as JPEG..." ),
KiBitmap( export_xpm ) );
fileMenu->AppendSeparator();
AddMenuItem( fileMenu, wxID_EXIT,
_( "&Exit" ),
KiBitmap( exit_xpm ) );
menuBar->Append( editMenu, _( "&Edit" ) );
AddMenuItem( editMenu, ID_TOOL_SCREENCOPY_TOCLIBBOARD,
_( "Copy 3D Image" ),
KiBitmap( copy_xpm ) );
menuBar->Append( prefsMenu, _( "&Preferences" ) );
AddMenuItem( prefsMenu, ID_MENU3D_MOUSEWHEEL_PANNING,
_( "Use Touchpad to Pan" ),
KiBitmap( tools_xpm ), wxITEM_CHECK );
prefsMenu->AppendSeparator();
AddMenuItem( prefsMenu, ID_MENU3D_REALISTIC_MODE,
_( "Realistic Mode" ),
KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
wxMenu * renderEngineList = new wxMenu;
AddMenuItem( prefsMenu, renderEngineList, ID_MENU3D_ENGINE,
_( "Render Engine" ), KiBitmap( render_mode_xpm ) );
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_OPENGL_LEGACY,
_( "OpenGL" ),
wxEmptyString );
renderEngineList->AppendRadioItem( ID_MENU3D_ENGINE_RAYTRACING,
_( "Raytracing" ),
wxEmptyString );
renderEngineList->Check( ID_MENU3D_ENGINE_OPENGL_LEGACY,
m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
renderEngineList->Check( ID_MENU3D_ENGINE_RAYTRACING,
m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
wxMenu * renderOptionsMenu = new wxMenu;
AddMenuItem( prefsMenu, renderOptionsMenu, ID_MENU3D_FL,
_( "Render Options" ), KiBitmap( options_3drender_xpm ) );
wxMenu * materialsList = new wxMenu;
AddMenuItem( renderOptionsMenu, materialsList, ID_MENU3D_FL_RENDER_MATERIAL,
_( "Material Properties" ), KiBitmap( color_materials_xpm ) );
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL,
_( "Use All Properties" ),
_( "Use all material properties from each 3D model file" ) );
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY,
_( "Use Diffuse Only" ),
_( "Use only the diffuse color property from model 3D model file " ) );
materialsList->AppendRadioItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE,
_( "CAD Color Style" ),
_( "Use a CAD color style based on the diffuse color of the material" ) );
// Add specific preferences for OpenGL
// /////////////////////////////////////////////////////////////////////////
wxMenu * renderOptionsMenu_OPENGL = new wxMenu;
AddMenuItem( renderOptionsMenu, renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL,
_( "OpenGL Options" ), KiBitmap( tools_xpm ) );
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS,
_( "Show Copper Thickness" ),
_( "Shows the copper thickness on copper layers (slower loading)"),
KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_OPENGL, ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX,
_( "Show Model Bounding Boxes" ),
KiBitmap( ortho_xpm ), wxITEM_CHECK );
// Add specific preferences for Raytracing
// /////////////////////////////////////////////////////////////////////////
wxMenu * renderOptionsMenu_RAYTRACING = new wxMenu;
AddMenuItem( renderOptionsMenu, renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING,
_( "Raytracing Options" ), KiBitmap( tools_xpm ) );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS,
_( "Render Shadows" ),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES,
_( "Procedural Textures" ),
_( "Apply procedural textures to materials (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_BACKFLOOR,
_( "Add Floor" ),
_( "Adds a floor plane below the board (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFRACTIONS,
_( "Refractions" ),
_( "Render materials with refractions properties on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFLECTIONS,
_( "Reflections" ),
_( "Render materials with reflections properties on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING,
_( "Anti-aliasing" ),
_( "Render with improoved quality on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_POST_PROCESSING,
_( "Post-processing" ),
_( "Apply Screen Space Ambient Occlusion and Global Illumination reflections on final render (slow)"),
KiBitmap( green_xpm ), wxITEM_CHECK );
prefsMenu->AppendSeparator();
// Colors, axis and grid elements
// /////////////////////////////////////////////////////////////////////////
// Add submenu set Colors
wxMenu * setColorMenu = new wxMenu;
AddMenuItem( prefsMenu, setColorMenu, ID_MENU3D_COLOR,
_( "Choose Colors" ), KiBitmap( palette_xpm ) );
wxMenu * setBgColorMenu = new wxMenu;
AddMenuItem( setColorMenu, setBgColorMenu, ID_MENU3D_BGCOLOR,
_( "Background Color" ), KiBitmap( palette_xpm ) );
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_TOP_SELECTION,
_( "Background Top Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_BOTTOM_SELECTION,
_( "Background Bottom Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_SILKSCREEN_COLOR_SELECTION,
_( "Silkscreen Color..." ), KiBitmap( setcolor_silkscreen_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERMASK_COLOR_SELECTION,
_( "Solder Mask Color..." ), KiBitmap( setcolor_soldermask_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERPASTE_COLOR_SELECTION,
_( "Solder Paste Color..." ), KiBitmap( setcolor_solderpaste_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_COPPER_COLOR_SELECTION,
_( "Copper/Surface Finish Color..." ), KiBitmap( setcolor_copper_xpm ) );
AddMenuItem( setColorMenu, ID_MENU3D_PCB_BODY_COLOR_SELECTION,
_( "Board Body Color..." ), KiBitmap( setcolor_board_body_xpm ) );
AddMenuItem( prefsMenu, ID_MENU3D_AXIS_ONOFF,
_( "Show 3D &Axis" ), KiBitmap( axis3d_front_xpm ), wxITEM_CHECK );
// Creates grid menu
// /////////////////////////////////////////////////////////////////////////
wxMenu * gridlistMenu = new wxMenu;
AddMenuItem( prefsMenu, gridlistMenu, ID_MENU3D_GRID,
_( "3D Grid" ), KiBitmap( grid_xpm ) );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_NOGRID, _( "No 3D Grid" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_10_MM, _( "3D Grid 10 mm" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_5_MM, _( "3D Grid 5 mm" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_2P5_MM, _( "3D Grid 2.5 mm" ), wxEmptyString );
gridlistMenu->AppendRadioItem( ID_MENU3D_GRID_1_MM, _( "3D Grid 1 mm" ), wxEmptyString );
// If the grid is on, check the corresponding menuitem showing the grid size
if( m_settings.GridGet() != GRID3D_NONE )
{
gridlistMenu->Check( ID_MENU3D_GRID_10_MM, m_settings.GridGet() == GRID3D_10MM );
gridlistMenu->Check( ID_MENU3D_GRID_5_MM, m_settings.GridGet() == GRID3D_5MM );
gridlistMenu->Check( ID_MENU3D_GRID_2P5_MM, m_settings.GridGet() == GRID3D_2P5MM );
gridlistMenu->Check( ID_MENU3D_GRID_1_MM, m_settings.GridGet() == GRID3D_1MM );
}
else
gridlistMenu->Check( ID_MENU3D_GRID_NOGRID, true );
// Display elements options
// /////////////////////////////////////////////////////////////////////////
prefsMenu->AppendSeparator();
AddMenuItem( prefsMenu, ID_MENU3D_SHOW_BOARD_BODY,
_( "Show Board Bod&y" ), KiBitmap( use_3D_copper_thickness_xpm ), wxITEM_CHECK );
AddMenuItem( prefsMenu, ID_MENU3D_ZONE_ONOFF,
_( "Show Zone &Filling" ), KiBitmap( add_zone_xpm ), wxITEM_CHECK );
wxMenu * moduleAttributes = new wxMenu;
AddMenuItem( prefsMenu, moduleAttributes, ID_MENU3D_MODULE_ONOFF,
_( "Show 3D M&odels" ), KiBitmap( shape_3d_xpm ) );
moduleAttributes->AppendCheckItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL,
_( "Through Hole" ),
_( "Footprint Properties -> Placement type -> Through hole" ) );
moduleAttributes->AppendCheckItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL_INSERT,
_( "Surface Mount" ),
_( "Footprint Properties -> Placement type -> Surface mount" ) );
moduleAttributes->AppendCheckItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_VIRTUAL,
_( "Virtual" ),
_( "Footprint Properties -> Placement type -> Virtual (eg: edge connectors, test points, mechanical parts)" ) );
// Layer options
// /////////////////////////////////////////////////////////////////////////
prefsMenu->AppendSeparator();
wxMenu * layersMenu = new wxMenu;
AddMenuItem( prefsMenu, layersMenu, ID_MENU3D_LAYERS,
_( "Show &Layers" ), KiBitmap( tools_xpm ) );
AddMenuItem( layersMenu, ID_MENU3D_ADHESIVE_ONOFF,
_( "Show &Adhesive Layers" ), KiBitmap( tools_xpm ), wxITEM_CHECK );
AddMenuItem( layersMenu, ID_MENU3D_SILKSCREEN_ONOFF,
_( "Show &Silkscreen Layers" ), KiBitmap( text_xpm ), wxITEM_CHECK );
AddMenuItem( layersMenu, ID_MENU3D_SOLDER_MASK_ONOFF,
_( "Show Solder &Mask Layers" ), KiBitmap( pads_mask_layers_xpm ), wxITEM_CHECK );
AddMenuItem( layersMenu, ID_MENU3D_SOLDER_PASTE_ONOFF,
_( "Show Solder &Paste Layers" ), KiBitmap( pads_mask_layers_xpm ), wxITEM_CHECK );
// Other layers are not "board" layers, and are not shown in realistic mode
// These menus will be disabled in in realistic mode
AddMenuItem( layersMenu, ID_MENU3D_COMMENTS_ONOFF,
_( "Show &Comments and Drawings Layers" ), KiBitmap( editor_xpm ), wxITEM_CHECK );
AddMenuItem( layersMenu, ID_MENU3D_ECO_ONOFF,
_( "Show &Eco Layers" ), KiBitmap( editor_xpm ), wxITEM_CHECK );
// Reset options
// /////////////////////////////////////////////////////////////////////////
prefsMenu->AppendSeparator();
AddMenuItem( prefsMenu, ID_MENU3D_RESET_DEFAULTS,
_( "Reset to Default Settings" ),
KiBitmap( tools_xpm ) );
// Help menu
// /////////////////////////////////////////////////////////////////////////
menuBar->Append( helpMenu, _( "&Help" ) );
AddMenuItem( helpMenu, ID_MENU3D_HELP_HOTKEY_SHOW_CURRENT_LIST,
_( "&List Hotkeys..." ),
_( "Displays the current hotkeys list and corresponding commands" ),
KiBitmap( hotkeys_xpm ) );
SetMenuBar( menuBar );
SetMenuBarOptionsState();
}
void EDA_3D_VIEWER::SetMenuBarOptionsState()
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState" ) );
wxMenuBar* menuBar = GetMenuBar();
if( menuBar == NULL )
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::SetMenuBarOptionsState menuBar == NULL" ) );
return;
}
wxMenuItem* item;
// Set the state of toggle menus according to the current display options
item = menuBar->FindItem( ID_MENU3D_MOUSEWHEEL_PANNING );
item->Check( m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) );
item = menuBar->FindItem( ID_MENU3D_ENGINE_OPENGL_LEGACY );
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY );
item = menuBar->FindItem( ID_MENU3D_ENGINE_RAYTRACING );
item->Check( m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING );
item = menuBar->FindItem( ID_MENU3D_REALISTIC_MODE );
item->Check( m_settings.GetFlag( FL_USE_REALISTIC_MODE ) );
item = menuBar->FindItem( ID_MENU3D_COMMENTS_ONOFF );
item->Enable( !m_settings.GetFlag( FL_USE_REALISTIC_MODE ) );
item = menuBar->FindItem( ID_MENU3D_ECO_ONOFF );
item->Enable( !m_settings.GetFlag( FL_USE_REALISTIC_MODE ) );
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL );
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_NORMAL );
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY );
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_DIFFUSE_ONLY );
item = menuBar->FindItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE );
item->Check( m_settings.MaterialModeGet() == MATERIAL_MODE_CAD_MODE );
// OpenGL
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS );
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) );
item = menuBar->FindItem( ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX );
item->Check( m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX ) );
// Raytracing
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_SHADOWS ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_BACKFLOOR );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_BACKFLOOR ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFRACTIONS );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFRACTIONS ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_REFLECTIONS );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFLECTIONS ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_POST_PROCESSING );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING ) );
item = menuBar->FindItem( ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES );
item->Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES ) );
item = menuBar->FindItem( ID_MENU3D_SHOW_BOARD_BODY );
item->Check( m_settings.GetFlag( FL_SHOW_BOARD_BODY ) );
item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL );
item->Check( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL ) );
item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL_INSERT );
item->Check( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT ) );
item = menuBar->FindItem( ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_VIRTUAL );
item->Check( m_settings.GetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL ) );
item = menuBar->FindItem( ID_MENU3D_ZONE_ONOFF );
item->Check( m_settings.GetFlag( FL_ZONE ) );
item = menuBar->FindItem( ID_MENU3D_AXIS_ONOFF );
item->Check( m_settings.GetFlag( FL_AXIS ) );
item = menuBar->FindItem( ID_MENU3D_ADHESIVE_ONOFF );
item->Check( m_settings.GetFlag( FL_ADHESIVE ) );
item = menuBar->FindItem( ID_MENU3D_SILKSCREEN_ONOFF );
item->Check( m_settings.GetFlag( FL_SILKSCREEN ) );
item = menuBar->FindItem( ID_MENU3D_SOLDER_MASK_ONOFF );
item->Check( m_settings.GetFlag( FL_SOLDERMASK ) );
item = menuBar->FindItem( ID_MENU3D_SOLDER_PASTE_ONOFF );
item->Check( m_settings.GetFlag( FL_SOLDERPASTE ) );
item = menuBar->FindItem( ID_MENU3D_COMMENTS_ONOFF );
item->Check( m_settings.GetFlag( FL_COMMENTS ) );
item = menuBar->FindItem( ID_MENU3D_ECO_ONOFF );
item->Check( m_settings.GetFlag( FL_ECO ));
}
void EDA_3D_VIEWER::SetToolbars()
{
}
@@ -54,9 +54,7 @@ void EDA_3D_VIEWER::Install3DViewOptionDialog( wxCommandEvent& event )
{
SetMenuBarOptionsState();
// Force immediate display redraw:
ReloadRequest();
m_canvas->Request_refresh();
NewDisplay( true );
}
}
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Aug 4 2017)
// C++ code generated with wxFormBuilder (version Jul 2 2017)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -87,7 +87,10 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
fgSizerRenderOptions->Add( fgSizer3, 1, wxEXPAND, 5 );
bSizeLeft->Add( fgSizerRenderOptions, 1, wxEXPAND, 5 );
bSizeLeft->Add( fgSizerRenderOptions, 0, wxEXPAND|wxBOTTOM, 5 );
bSizeLeft->Add( 0, 10, 0, 0, 5 );
m_staticText3DmodelVisibility = new wxStaticText( this, wxID_ANY, _("3D model visibility:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3DmodelVisibility->Wrap( -1 );
@@ -128,7 +131,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
fgSizer3DVisibility->Add( m_checkBox3DshapesVirtual, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bSizeLeft->Add( fgSizer3DVisibility, 1, wxEXPAND, 5 );
bSizeLeft->Add( fgSizer3DVisibility, 0, wxEXPAND, 5 );
bSizerUpper->Add( bSizeLeft, 1, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
@@ -190,9 +193,12 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
fgSizerShowBrdLayersOpts->Add( m_checkBoxAdhesive, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bSizeLayer->Add( fgSizerShowBrdLayersOpts, 1, wxEXPAND, 5 );
bSizeLayer->Add( fgSizerShowBrdLayersOpts, 0, wxEXPAND, 5 );
m_staticTextUserLayers = new wxStaticText( this, wxID_ANY, _("User layers:"), wxDefaultPosition, wxDefaultSize, 0 );
bSizeLayer->Add( 0, 10, 0, 0, 5 );
m_staticTextUserLayers = new wxStaticText( this, wxID_ANY, _("User layers (not shown in realistic mode):"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextUserLayers->Wrap( -1 );
m_staticTextUserLayers->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
@@ -222,7 +228,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
fgSizerShowUserLayersOpts->Add( m_checkBoxECO, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bSizeLayer->Add( fgSizerShowUserLayersOpts, 1, wxEXPAND, 5 );
bSizeLayer->Add( fgSizerShowUserLayersOpts, 0, wxEXPAND, 5 );
bSizerRight->Add( bSizeLayer, 1, wxEXPAND, 5 );
@@ -234,7 +240,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
bSizerMain->Add( bSizerUpper, 1, wxEXPAND, 5 );
m_staticlineH = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticlineH, 0, wxEXPAND | wxALL, 5 );
bSizerMain->Add( m_staticlineH, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
@@ -243,7 +249,7 @@ DIALOG_3D_VIEW_OPTIONS_BASE::DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWi
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizer->Realize();
bSizerMain->Add( m_sdbSizer, 0, wxALL|wxEXPAND, 5 );
bSizerMain->Add( m_sdbSizer, 0, wxALL|wxALIGN_RIGHT, 5 );
this->SetSizer( bSizerMain );
@@ -44,7 +44,7 @@
<property name="minimum_size"></property>
<property name="name">DIALOG_3D_VIEW_OPTIONS_BASE</property>
<property name="pos"></property>
<property name="size">571,399</property>
<property name="size">571,372</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
<property name="title">3D Display Options</property>
@@ -196,8 +196,8 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<property name="flag">wxEXPAND|wxBOTTOM</property>
<property name="proportion">0</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">3</property>
<property name="flexible_direction">wxBOTH</property>
@@ -1125,6 +1125,16 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">10</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
@@ -1211,7 +1221,7 @@
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<property name="proportion">0</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">3</property>
<property name="flexible_direction">wxBOTH</property>
@@ -1950,7 +1960,7 @@
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<property name="proportion">0</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">3</property>
<property name="flexible_direction">wxBOTH</property>
@@ -2681,6 +2691,16 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">10</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
@@ -2713,7 +2733,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">User layers:</property>
<property name="label">User layers (not shown in realistic mode):</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
@@ -2767,7 +2787,7 @@
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<property name="proportion">0</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">3</property>
<property name="flexible_direction">wxBOTH</property>
@@ -3148,7 +3168,7 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND | wxALL</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStaticLine" expanded="1">
<property name="BottomDockable">1</property>
@@ -3229,7 +3249,7 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxALL|wxALIGN_RIGHT</property>
<property name="proportion">0</property>
<object class="wxStdDialogButtonSizer" expanded="1">
<property name="Apply">0</property>
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Aug 4 2017)
// C++ code generated with wxFormBuilder (version Jul 2 2017)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -85,7 +85,7 @@ class DIALOG_3D_VIEW_OPTIONS_BASE : public DIALOG_SHIM
public:
DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("3D Display Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 571,399 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_3D_VIEW_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("3D Display Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 571,372 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_3D_VIEW_OPTIONS_BASE();
};
+49 -111
View File
@@ -141,24 +141,17 @@ BEGIN_EVENT_TABLE( EDA_3D_VIEWER, EDA_BASE_FRAME )
END_EVENT_TABLE()
EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway,
PCB_BASE_FRAME *aParent,
const wxString &aTitle,
long style ) :
EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway, PCB_BASE_FRAME *aParent,
const wxString &aTitle, long style ) :
KIWAY_PLAYER( aKiway,
aParent,
FRAME_PCB_DISPLAY3D,
aTitle,
wxDefaultPosition,
wxDefaultSize,
style,
VIEWER3D_FRAMENAME )
KIWAY_PLAYER( aKiway, aParent,
FRAME_PCB_DISPLAY3D, aTitle,
wxDefaultPosition, wxDefaultSize,
style, VIEWER3D_FRAMENAME )
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::EDA_3D_VIEWER %s" ), aTitle );
m_canvas = NULL;
m_defaultFileName = "";
// Give it an icon
wxIcon icon;
@@ -203,6 +196,8 @@ EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway,
m_mainToolBar->EnableTool( ID_RENDER_CURRENT_VIEW,
(m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY) );
m_mainToolBar->Connect( wxEVT_KEY_DOWN, wxKeyEventHandler( EDA_3D_VIEWER::OnKeyEvent ), NULL, this );
// Fixes bug in Windows (XP and possibly others) where the canvas requires the focus
// in order to receive mouse events. Otherwise, the user has to click somewhere on
// the canvas before it will respond to mouse wheel events.
@@ -213,6 +208,8 @@ EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway,
EDA_3D_VIEWER::~EDA_3D_VIEWER()
{
m_mainToolBar->Disconnect( wxEVT_KEY_DOWN, wxKeyEventHandler( EDA_3D_VIEWER::OnKeyEvent ), NULL, this );
m_auimgr.UnInit();
// m_canvas delete will be called by wxWidget manager
@@ -284,8 +281,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
break;
case ID_RELOAD3D_BOARD:
ReloadRequest();
m_canvas->Request_refresh();
NewDisplay( true );
break;
case ID_ROTATE3D_X_POS:
@@ -351,7 +347,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
if( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY )
m_canvas->Request_refresh();
else
ReloadRequest();
NewDisplay( true );
}
return;
@@ -361,7 +357,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
if( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY )
m_canvas->Request_refresh();
else
ReloadRequest();
NewDisplay( true );
}
return;
@@ -392,27 +388,27 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
case ID_MENU3D_REALISTIC_MODE:
m_settings.SetFlag( FL_USE_REALISTIC_MODE, isChecked );
SetMenuBarOptionsState();
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL:
m_settings.MaterialModeSet( MATERIAL_MODE_NORMAL );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY:
m_settings.MaterialModeSet( MATERIAL_MODE_DIFFUSE_ONLY );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE:
m_settings.MaterialModeSet( MATERIAL_MODE_CAD_MODE );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS:
m_settings.SetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS, isChecked );
ReloadRequest();
NewDisplay( true );
return;
case ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX:
@@ -427,12 +423,12 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
case ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES:
m_settings.SetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_FL_RAYTRACING_BACKFLOOR:
m_settings.SetFlag( FL_RENDER_RAYTRACING_BACKFLOOR, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_FL_RAYTRACING_REFRACTIONS:
@@ -447,7 +443,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
case ID_MENU3D_FL_RAYTRACING_POST_PROCESSING:
m_settings.SetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING:
@@ -457,7 +453,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
case ID_MENU3D_SHOW_BOARD_BODY:
m_settings.SetFlag( FL_SHOW_BOARD_BODY, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_AXIS_ONOFF:
@@ -467,52 +463,52 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
case ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL:
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_NORMAL_INSERT:
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_MODULE_ONOFF_ATTRIBUTES_VIRTUAL:
m_settings.SetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_ZONE_ONOFF:
m_settings.SetFlag( FL_ZONE, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_ADHESIVE_ONOFF:
m_settings.SetFlag( FL_ADHESIVE, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_SILKSCREEN_ONOFF:
m_settings.SetFlag( FL_SILKSCREEN, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_SOLDER_MASK_ONOFF:
m_settings.SetFlag( FL_SOLDERMASK, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_SOLDER_PASTE_ONOFF:
m_settings.SetFlag( FL_SOLDERPASTE, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_COMMENTS_ONOFF:
m_settings.SetFlag( FL_COMMENTS, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_ECO_ONOFF:
m_settings.SetFlag( FL_ECO, isChecked );
ReloadRequest( );
NewDisplay( true );
return;
case ID_MENU3D_RESET_DEFAULTS:
@@ -525,10 +521,10 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
// Refresh menu option state
SetMenuBarOptionsState();
// Tell canvas that we (may) changed the render engine
// Tell canvas that we (may have) changed the render engine
RenderEngineChanged();
ReloadRequest();
NewDisplay( true );
}
return;
@@ -905,6 +901,15 @@ void EDA_3D_VIEWER::OnRightClick( const wxPoint &MousePos, wxMenu *PopMenu )
}
void EDA_3D_VIEWER::OnKeyEvent( wxKeyEvent& event )
{
if( m_canvas )
return m_canvas->OnKeyEvent( event );
event.Skip();
}
void EDA_3D_VIEWER::RedrawActiveWindow( wxDC *DC, bool EraseBg )
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::RedrawActiveWindow" ) );
@@ -934,7 +939,7 @@ void EDA_3D_VIEWER::takeScreenshot( wxCommandEvent& event )
fn.SetExt( file_ext );
fullFileName = EDA_FILE_SELECTOR( _( "3D Image File Name:" ), fn.GetPath(),
m_defaultFileName, file_ext, mask, this,
m_defaultSaveScreenshotFileName, file_ext, mask, this,
wxFD_SAVE | wxFD_OVERWRITE_PROMPT, true );
if( fullFileName.IsEmpty() )
@@ -1050,7 +1055,7 @@ bool EDA_3D_VIEWER::Set3DSilkScreenColorFromUser()
&definedColors );
if( change )
NewDisplay();
NewDisplay( true );
return change;
}
@@ -1086,7 +1091,7 @@ bool EDA_3D_VIEWER::Set3DSolderMaskColorFromUser()
&definedColors );
if( change )
NewDisplay();
NewDisplay( true );
return change;
}
@@ -1112,7 +1117,7 @@ bool EDA_3D_VIEWER::Set3DCopperColorFromUser()
&definedColors );
if( change )
NewDisplay();
NewDisplay( true );
return change;
}
@@ -1142,7 +1147,7 @@ bool EDA_3D_VIEWER::Set3DBoardBodyColorFromUser()
&definedColors );
if( change )
NewDisplay();
NewDisplay( true );
return change;
}
@@ -1167,74 +1172,7 @@ bool EDA_3D_VIEWER::Set3DSolderPasteColorFromUser()
&definedColors );
if( change )
NewDisplay();
NewDisplay( true );
return change;
}
// Define 3D Viewer Hotkeys
static EDA_HOTKEY Hk3D_PivotCenter( _HKI( "Center pivot rotation (Middle mouse click)" ), 0, WXK_SPACE );
static EDA_HOTKEY Hk3D_MoveLeft( _HKI( "Move board Left" ), ID_POPUP_MOVE3D_LEFT, WXK_LEFT );
static EDA_HOTKEY Hk3D_MoveRight( _HKI( "Move board Right" ), ID_POPUP_MOVE3D_RIGHT, WXK_RIGHT );
static EDA_HOTKEY Hk3D_MoveUp( _HKI( "Move board Up" ), ID_POPUP_MOVE3D_UP, WXK_UP );
static EDA_HOTKEY Hk3D_MoveDown( _HKI( "Move board Down" ), ID_POPUP_MOVE3D_DOWN, WXK_DOWN );
static EDA_HOTKEY Hk3D_HomeView( _HKI( "Home view" ), 0, WXK_HOME );
static EDA_HOTKEY Hk3D_ResetView( _HKI( "Reset view" ), 0, 'R' );
static EDA_HOTKEY Hk3D_ViewFront( _HKI( "View Front" ), ID_POPUP_VIEW_YPOS, 'Y' );
static EDA_HOTKEY Hk3D_ViewBack( _HKI( "View Back" ), ID_POPUP_VIEW_YNEG, GR_KB_SHIFT + 'Y' );
static EDA_HOTKEY Hk3D_ViewLeft( _HKI( "View Left" ), ID_POPUP_VIEW_XNEG, GR_KB_SHIFT + 'X' );
static EDA_HOTKEY Hk3D_ViewRight( _HKI( "View Right" ), ID_POPUP_VIEW_XPOS, 'X' );
static EDA_HOTKEY Hk3D_ViewTop( _HKI( "View Top" ), ID_POPUP_VIEW_ZPOS, 'Z' );
static EDA_HOTKEY Hk3D_ViewBot( _HKI( "View Bot" ), ID_POPUP_VIEW_ZNEG, GR_KB_SHIFT + 'Z' );
static EDA_HOTKEY Hk3D_Rotate45axisZ( _HKI( "Rotate 45 degrees over Z axis" ), 0, WXK_TAB );
static EDA_HOTKEY Hk3D_ZoomIn( _HKI( "Zoom in " ), ID_POPUP_ZOOMIN, WXK_F1 );
static EDA_HOTKEY Hk3D_ZoomOut( _HKI( "Zoom out" ), ID_POPUP_ZOOMOUT, WXK_F2 );
static EDA_HOTKEY Hk3D_AttributesTHT( _HKI( "Toggle 3D models with type Through Hole" ), 0, 'T' );
static EDA_HOTKEY Hk3D_AttributesSMD( _HKI( "Toggle 3D models with type Surface Mount" ), 0, 'S' );
static EDA_HOTKEY Hk3D_AttributesVirtual( _HKI( "Toggle 3D models with type Virtual" ), 0, 'V' );
static wxString viewer3DSectionTitle( _HKI( "Viewer 3D" ) );
// List of hotkey descriptors for the 3D Viewer only
// !TODO: this is used just for help menu, the structured are not used yet in the viewer
static EDA_HOTKEY* viewer3d_Hotkey_List[] =
{
&Hk3D_PivotCenter,
&Hk3D_MoveLeft,
&Hk3D_MoveRight,
&Hk3D_MoveUp,
&Hk3D_MoveDown,
&Hk3D_HomeView,
&Hk3D_ResetView,
&Hk3D_ViewFront,
&Hk3D_ViewBack,
&Hk3D_ViewLeft,
&Hk3D_ViewRight,
&Hk3D_ViewTop,
&Hk3D_ViewBot,
&Hk3D_Rotate45axisZ,
&Hk3D_ZoomIn,
&Hk3D_ZoomOut,
&Hk3D_AttributesTHT,
&Hk3D_AttributesSMD,
&Hk3D_AttributesVirtual,
NULL
};
// list of sections and corresponding hotkey list for the 3D Viewer
// (used to list current hotkeys)
struct EDA_HOTKEY_CONFIG g_3DViewer_Hokeys_Descr[] =
{
{ &g_CommonSectionTag, viewer3d_Hotkey_List, &viewer3DSectionTitle },
{ NULL, NULL, NULL }
};
void EDA_3D_VIEWER::DisplayHotKeys()
{
DisplayHotkeyList( this, g_3DViewer_Hokeys_Descr );
}
+6 -7
View File
@@ -52,8 +52,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
public:
EDA_3D_VIEWER( KIWAY *aKiway,
PCB_BASE_FRAME *aParent,
EDA_3D_VIEWER( KIWAY *aKiway, PCB_BASE_FRAME *aParent,
const wxString &aTitle,
long style = KICAD_DEFAULT_3D_DRAWFRAME_STYLE );
@@ -66,7 +65,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
/**
* Request reloading the 3D view. However the request will be executed
* only when the 3D canvas is refreshed.
* It allows to prepare changes and request for 3D rebuild only when all
* It allows one to prepare changes and request for 3D rebuild only when all
* changes are committed.
* This is made because the 3D rebuild can take a long time, and this rebuild
* cannot always made after each change, for calculation time reason.
@@ -93,14 +92,14 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
void SetDefaultFileName( const wxString &aFn )
{
wxFileName fn( aFn );
m_defaultFileName = fn.GetName();
m_defaultSaveScreenshotFileName = fn.GetName();
}
/**
* Function GetDefaultFileName
* @return the default suggested file name
*/
const wxString &GetDefaultFileName() const { return m_defaultFileName; }
const wxString &GetDefaultFileName() const { return m_defaultSaveScreenshotFileName; }
/**
* Function GetSettings
@@ -202,8 +201,8 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
void LoadSettings( wxConfigBase *aCfg ) override;
void OnLeftClick( wxDC *DC, const wxPoint &MousePos );
void OnRightClick( const wxPoint &MousePos, wxMenu *PopMenu );
void OnKeyEvent( wxKeyEvent& event );
void RedrawActiveWindow( wxDC *DC, bool EraseBg );
@@ -226,7 +225,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
/**
* Filename to propose for save a screenshot
*/
wxString m_defaultFileName;
wxString m_defaultSaveScreenshotFileName;
/**
* The canvas where the openGL context will be rendered
+99
View File
@@ -0,0 +1,99 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file hotkeys.cpp
* @brief list of hotkeys used in 3D viewer
*/
#include <hotkeys_basic.h>
#include "eda_3d_viewer.h"
#include "../3d_viewer_id.h"
// Define 3D Viewer Hotkeys
static EDA_HOTKEY HkHotkeysHelp( _HKI( "Help (this window)" ), HK_HELP, GR_KB_CTRL + WXK_F1 );
static EDA_HOTKEY Hk3D_PivotCenter( _HKI( "Center pivot rotation (Middle mouse click)" ), 0, WXK_SPACE );
static EDA_HOTKEY Hk3D_MoveLeft( _HKI( "Move board Left" ), ID_POPUP_MOVE3D_LEFT, WXK_LEFT );
static EDA_HOTKEY Hk3D_MoveRight( _HKI( "Move board Right" ), ID_POPUP_MOVE3D_RIGHT, WXK_RIGHT );
static EDA_HOTKEY Hk3D_MoveUp( _HKI( "Move board Up" ), ID_POPUP_MOVE3D_UP, WXK_UP );
static EDA_HOTKEY Hk3D_MoveDown( _HKI( "Move board Down" ), ID_POPUP_MOVE3D_DOWN, WXK_DOWN );
static EDA_HOTKEY Hk3D_HomeView( _HKI( "Home view" ), 0, WXK_HOME );
static EDA_HOTKEY Hk3D_ResetView( _HKI( "Reset view" ), 0, 'R' );
static EDA_HOTKEY Hk3D_ViewFront( _HKI( "View Front" ), ID_POPUP_VIEW_YPOS, 'Y' );
static EDA_HOTKEY Hk3D_ViewBack( _HKI( "View Back" ), ID_POPUP_VIEW_YNEG, GR_KB_SHIFT + 'Y' );
static EDA_HOTKEY Hk3D_ViewLeft( _HKI( "View Left" ), ID_POPUP_VIEW_XNEG, GR_KB_SHIFT + 'X' );
static EDA_HOTKEY Hk3D_ViewRight( _HKI( "View Right" ), ID_POPUP_VIEW_XPOS, 'X' );
static EDA_HOTKEY Hk3D_ViewTop( _HKI( "View Top" ), ID_POPUP_VIEW_ZPOS, 'Z' );
static EDA_HOTKEY Hk3D_ViewBot( _HKI( "View Bot" ), ID_POPUP_VIEW_ZNEG, GR_KB_SHIFT + 'Z' );
static EDA_HOTKEY Hk3D_Rotate45axisZ( _HKI( "Rotate 45 degrees over Z axis" ), 0, WXK_TAB );
static EDA_HOTKEY Hk3D_ZoomIn( _HKI( "Zoom in " ), ID_POPUP_ZOOMIN, WXK_F1 );
static EDA_HOTKEY Hk3D_ZoomOut( _HKI( "Zoom out" ), ID_POPUP_ZOOMOUT, WXK_F2 );
static EDA_HOTKEY Hk3D_AttributesTHT( _HKI( "Toggle 3D models with type Through Hole" ), 0, 'T' );
static EDA_HOTKEY Hk3D_AttributesSMD( _HKI( "Toggle 3D models with type Surface Mount" ), 0, 'S' );
static EDA_HOTKEY Hk3D_AttributesVirtual( _HKI( "Toggle 3D models with type Virtual" ), 0, 'V' );
static wxString viewer3DSectionTitle( _HKI( "Viewer 3D" ) );
// List of hotkey descriptors for the 3D Viewer only
// !TODO: this is used just for help menu, the structured are not used yet in the viewer
static EDA_HOTKEY* viewer3d_Hotkey_List[] =
{
&HkHotkeysHelp,
&Hk3D_PivotCenter,
&Hk3D_MoveLeft,
&Hk3D_MoveRight,
&Hk3D_MoveUp,
&Hk3D_MoveDown,
&Hk3D_HomeView,
&Hk3D_ResetView,
&Hk3D_ViewFront,
&Hk3D_ViewBack,
&Hk3D_ViewLeft,
&Hk3D_ViewRight,
&Hk3D_ViewTop,
&Hk3D_ViewBot,
&Hk3D_Rotate45axisZ,
&Hk3D_ZoomIn,
&Hk3D_ZoomOut,
&Hk3D_AttributesTHT,
&Hk3D_AttributesSMD,
&Hk3D_AttributesVirtual,
NULL
};
// list of sections and corresponding hotkey list for the 3D Viewer
// (used to list current hotkeys)
struct EDA_HOTKEY_CONFIG g_3DViewer_Hokeys_Descr[] =
{
{ &g_CommonSectionTag, viewer3d_Hotkey_List, &viewer3DSectionTitle },
{ NULL, NULL, NULL }
};
void EDA_3D_VIEWER::DisplayHotKeys()
{
DisplayHotkeyList( this, g_3DViewer_Hokeys_Descr );
}
+2
View File
@@ -97,6 +97,8 @@ set(3D-VIEWER_SRCS
3d_rendering/cpostshader.cpp
3d_rendering/cpostshader_ssao.cpp
3d_rendering/ctrack_ball.cpp
3d_viewer/3d_menubar.cpp
3d_viewer/hotkeys.cpp
3d_rendering/test_cases.cpp
3d_rendering/trackball.cpp
3d_viewer/3d_toolbar.cpp
+4 -1
View File
@@ -50,6 +50,9 @@ void OGL_GetScreenshot( wxImage &aDstImage )
// Alphabuffer was causing some transparency problems on some systems (Windows)
// unsigned char* alphabuffer = (unsigned char*) malloc( viewport.x * viewport.y );
// Call glFinish before screenshot to ensure everything is fully drawn.
glFinish();
glPixelStorei( GL_PACK_ALIGNMENT, 1 );
glReadBuffer( GL_BACK_LEFT );
@@ -130,7 +133,7 @@ GLuint OGL_LoadTexture( const CIMAGE &aImage )
glBindTexture( GL_TEXTURE_2D, 0 );
glFinish();
glFlush();
free( rgbaBuffer );
+1 -1
View File
@@ -34,7 +34,7 @@ Andrew Zonenberg <azonenberg[at]drawersteak-dot-com>
Cirilo Bernardo <cirilo_bernardo[at]yahoo-dot-com>
Adam Wolf <adamwolf[at]feelslikeburning-dot-com>
Bernhard Stegmaier <stegmaier[at]sw-systems-dot-de>
Chris Pavlina <pavlina.chris[at]gmail-dot-com>
Alexis Lockwood <alexlockwood[at]fastmail-dot-com>
Simon Richter <Simon.Richter[at]hogyros-dot-de>
Mario Luzeiro <mrluzeiro[at]ua-dot-pt>
Mateusz Skowroński <skowri[at]gmail-dot-com>
+89 -16
View File
@@ -21,6 +21,17 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
cmake_minimum_required( VERSION 2.8.12 FATAL_ERROR )
# because of http://public.kitware.com/Bug/view.php?id=10395
# See https://gitlab.kitware.com/cmake/cmake/issues/15943
# Remove as soon as 3.1 is minimum required version
if(POLICY CMP0025)
cmake_policy(SET CMP0025 NEW) # CMake 3.0
endif()
project( kicad )
# Default to CMAKE_BUILD_TYPE = Release unless overridden on command line
# http://www.cmake.org/pipermail/cmake/2008-September/023808.html
if( DEFINED CMAKE_BUILD_TYPE )
@@ -29,13 +40,8 @@ else()
set( CMAKE_BUILD_TYPE Release CACHE STRING "Set to either \"Release\" or \"Debug\"" )
endif()
project( kicad )
include( GNUInstallDirs )
cmake_minimum_required( VERSION 2.8.12 FATAL_ERROR )
# because of http://public.kitware.com/Bug/view.php?id=10395
# Path to local CMake modules.
set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules )
@@ -70,9 +76,13 @@ option( KICAD_SCRIPTING_ACTION_MENU
)
option( KICAD_USE_OCE
"Build tools and plugins related to OpenCascade Community Edition (default OFF)"
"Build tools and plugins related to OpenCascade Community Edition (default ON)"
ON )
option( KICAD_USE_OCC
"Build tools and plugins related to OpenCascade Technology (overrides KICAD_USE_OCE, default OFF)"
OFF )
option( KICAD_INSTALL_DEMOS
"Install kicad demos and examples (default ON)"
ON )
@@ -205,6 +215,44 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
endif()
endif()
#================================================
# Provide access to CCACHE
#================================================
if (USE_CCACHE)
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
set(RULE_LAUNCH_COMPILE "${RULE_LAUNCH_COMPILE} ${CCACHE_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH_COMPILE})
get_property(RULE_LAUNCH_LINK GLOBAL PROPERTY RULE_LAUNCH_LINK)
set(RULE_LAUNCH_LINK "${RULE_LAUNCH_LINK} ${CCACHE_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${RULE_LAUNCH_LINK})
message(STATUS "Used ${CCACHE_FOUND} for compilation.")
else(CCACHE_FOUND)
message(STATUS "CCache was requested but not found.")
endif(CCACHE_FOUND)
endif(USE_CCACHE)
#================================================
# Provide access to CCACHE
#================================================
if (USE_DISTCC)
find_program(DISTCC_FOUND distcc)
if(DISTCC_FOUND)
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
set(RULE_LAUNCH_COMPILE "${RULE_LAUNCH_COMPILE} ${DISTCC_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH_COMPILE})
message(STATUS "Using ${DISTCC_FOUND} for distributed build.")
else(DISTCC_FOUND)
message(INFO "Distcc was requested but not found.")
endif(DISTCC_FOUND)
endif(USE_DISTCC)
#================================================
# Set flags for GCC, or treat llvm as GCC
#================================================
@@ -321,6 +369,12 @@ if( KICAD_USE_OCE )
add_definitions( -DKICAD_USE_OCE )
endif()
if( KICAD_USE_OCC )
add_definitions( -DKICAD_USE_OCC )
remove_definitions( -DKICAD_USE_OCE )
unset( KICAD_USE_OCE )
endif()
if( KICAD_USE_CUSTOM_PADS )
add_definitions( -DKICAD_USE_CUSTOM_PADS )
endif()
@@ -356,6 +410,9 @@ if( NOT APPLE )
set( KICAD_BIN bin
CACHE PATH "Location of KiCad binaries." )
set( KICAD_DATA ${CMAKE_INSTALL_DATADIR}/kicad
CACHE PATH "Location of KiCad data files." )
if( WIN32 )
set( KICAD_PLUGINS ${KICAD_BIN}/scripting/plugins
CACHE PATH "Location of KiCad plugins." )
@@ -366,7 +423,7 @@ if( NOT APPLE )
set( KICAD_USER_PLUGIN ${KICAD_BIN}/plugins
CACHE PATH "Location of KiCad user-loaded plugins" )
else()
set( KICAD_PLUGINS ${CMAKE_INSTALL_LIBDIR}/kicad/plugins
set( KICAD_PLUGINS ${KICAD_DATA}/plugins
CACHE PATH "Location of KiCad plugins." )
set( KICAD_LIB ${CMAKE_INSTALL_LIBDIR}
@@ -376,8 +433,6 @@ if( NOT APPLE )
CACHE PATH "Location of KiCad user-loaded plugins" )
endif()
set( KICAD_DATA ${CMAKE_INSTALL_DATADIR}/kicad
CACHE PATH "Location of KiCad data files." )
set( KICAD_DOCS ${CMAKE_INSTALL_DATADIR}/doc/kicad
CACHE PATH "Location of KiCad documentation files." )
set( KICAD_DEMOS ${KICAD_DATA}/demos
@@ -524,6 +579,7 @@ endif()
#
# Find OpenGL library, required
#
set( OpenGL_GL_PREFERENCE "GLVND" ) # CMake 3.11+ setting; see 'cmake --help-policy CMP0072'
find_package( OpenGL REQUIRED )
#
@@ -539,6 +595,8 @@ endif()
#
find_package( GLM 0.9.5.1 REQUIRED )
add_definitions( -DGLM_FORCE_CTOR_INIT )
#
# Find CURL library, required for github plugin
#
@@ -572,9 +630,24 @@ endif()
# Find OpenCascade Community Edition, required for STEP plugin and tools
if( KICAD_USE_OCE )
set( LIBS_OCE TKBinXCAF TKPCAF TKSTEP TKXDESTEP TKIGES TKXDEIGES )
set( OCC_LIBRARIES TKBinXCAF TKPCAF TKSTEP TKXDESTEP TKIGES TKXDEIGES )
find_package( OCE 0.16 REQUIRED ${LIBS_OCE} )
find_package( OCE 0.16 REQUIRED ${OCC_LIBRARIES} )
elseif( KICAD_USE_OCC )
find_package(OpenCASCADE)
if( NOT OCC_FOUND )
MESSAGE( FATAL_ERROR "================================================================\n"
" KICAD_USE_OCC=True but OpenCASCADE was no found!\n"
"================================================================\n")
endif()
if( OCC_VERSION_STRING VERSION_LESS 6.8.0 )
MESSAGE( FATAL_ERROR "================================================================\n"
"OpenCASCADE version ${OCC_VERSION_STRING} was found.\n"
" KiCad requires a minimum version of 6.8.0\n"
"================================================================\n")
endif()
include_directories( SYSTEM ${OCC_INCLUDE_DIR} )
endif()
# Assist with header file searching optimization:
@@ -793,7 +866,7 @@ add_custom_target( uninstall
###
# Install scripts
###
if( UNIX )
if( UNIX AND NOT APPLE )
install( DIRECTORY scripts
DESTINATION ${KICAD_DOCS}
COMPONENT resources
@@ -815,25 +888,25 @@ if( UNIX AND NOT APPLE )
# Install Mime directory
install( DIRECTORY ${UNIX_ICON_FILES}
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
DESTINATION share
COMPONENT resources
)
# Install Icons
install( DIRECTORY ${UNIX_MIME_FILES}
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
DESTINATION share
COMPONENT resources
)
# Install Applications directory (.desktop files)
install( DIRECTORY ${UNIX_APPLICATIONS_FILES}
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
DESTINATION share
COMPONENT resources
)
# Install AppStream directory (app store entry)
install( DIRECTORY ${UNIX_APPDATA_FILES}
DESTINATION ${CMAKE_INSTALL_PREFIX}/share
DESTINATION share
COMPONENT resources
)
endif()
-42
View File
@@ -1,42 +0,0 @@
# - Check if a symbol exists as a function, variable, or macro in C++
# CHECK_CXX_SYMBOL_EXISTS(<symbol> <files> <variable>)
#
# Check that the <symbol> is available after including given header
# <files> and store the result in a <variable>. Specify the list
# of files in one argument as a semicolon-separated list.
# CHECK_CXX_SYMBOL_EXISTS() can be used to check in C++ files, as opposed
# to CHECK_SYMBOL_EXISTS(), which works only for C.
#
# If the header files define the symbol as a macro it is considered
# available and assumed to work. If the header files declare the
# symbol as a function or variable then the symbol must also be
# available for linking. If the symbol is a type or enum value
# it will not be recognized (consider using CheckTypeSize or
# CheckCSourceCompiles).
#
# The following variables may be set before calling this macro to
# modify the way the check is run:
#
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
# CMAKE_REQUIRED_INCLUDES = list of include directories
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
#=============================================================================
# Copyright 2003-2011 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
include(CheckSymbolExists)
macro(CHECK_CXX_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
_CHECK_SYMBOL_EXISTS("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" )
endmacro()
+192
View File
@@ -0,0 +1,192 @@
# Try to find OCC
# Once done this will define
#
# OCC_FOUND - system has OCC - OpenCASCADE
# OCC_INCLUDE_DIR - where the OCC include directory can be found
# OCC_LIBRARY_DIR - where the OCC library directory can be found
# OCC_LIBRARIES - Link this to use OCC
############################################################################
#
# Modifications Copyright (C) 2018 Seth Hillbrand
#
# Based on FindOpenCasCade.cmake by the FreeCAD CAx development team
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Set the needed libraries
set( OCC_LIBS
TKBinL
TKBin
TKBinTObj
TKBinXCAF
TKBool
TKBO
TKBRep
TKCAF
TKCDF
TKernel
TKFeat
TKFillet
TKG2d
TKG3d
TKGeomAlgo
TKGeomBase
TKHLR
TKIGES
TKLCAF
TKMath
TKMesh
TKMeshVS
TKOffset
TKOpenGl
TKPrim
TKService
TKShHealing
TKSTEP209
TKSTEPAttr
TKSTEPBase
TKSTEP
TKSTL
TKTObj
TKTopAlgo
TKV3d
TKVRML
TKXCAF
TKXDEIGES
TKXDESTEP
TKXMesh
TKXmlL
TKXml
TKXmlTObj
TKXmlXCAF
TKXSBase
)
set(OCC_TYPE "OpenCASCADE Standard Edition")
if(WIN32)
if(CYGWIN OR MINGW)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
/usr/include/opencascade
/usr/local/include/opencascade
/opt/opencascade/include
/opt/opencascade/inc
)
FIND_LIBRARY(OCC_LIBRARY TKernel
HINTS
${OCC_LIBRARY_DIR}
/usr/lib
/usr/local/lib
/opt/opencascade/lib
)
else(CYGWIN OR MINGW)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
)
FIND_LIBRARY(OCC_LIBRARY TKernel
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
)
endif(CYGWIN OR MINGW)
else(WIN32)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
/usr/include/opencascade
/usr/local/include/opencascade
/opt/opencascade/include
/opt/opencascade/inc
)
FIND_LIBRARY(OCC_LIBRARY TKernel
HINTS
${OCC_LIBRARY_DIR}
/usr
/usr/local
/opt/opencascade
/opt/opencascade/lin64/gcc
PATH_SUFFIXES lib
)
endif(WIN32)
if(OCC_LIBRARY)
GET_FILENAME_COMPONENT(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
IF(NOT OCC_INCLUDE_DIR)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
${OCC_LIBRARY_DIR}/../inc
)
ENDIF()
else(OCC_LIBRARY)
message( "" )
message( "*** OpenCascade library missing ***" )
message( "Verify your OpenCascade installation or pass CMake" )
message( " the library directory as '-DOCC_LIBRARY_DIR=<path>'" )
message( "" )
message( FATAL_ERROR "" )
endif(OCC_LIBRARY)
if(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
REGEX "#define OCC_VERSION_MAJOR.*"
)
string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
REGEX "#define OCC_VERSION_MINOR.*"
)
string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
REGEX "#define OCC_VERSION_MAINTENANCE.*"
)
string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
else(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
message( "" )
message( "*** OpenCascade header files missing ***" )
message( "Verify your OpenCascade installation or pass CMake" )
message( " the header directory as '-DOCC_INCLUDE_DIR=<path>'" )
message( "" )
message( FATAL_ERROR "" )
endif(OCC_INCLUDE_DIR AND NOT ${OCC_INCLUDE_DIR} STREQUAL "OCC_INCLUDE_DIR-NOTFOUND")
# handle the QUIETLY and REQUIRED arguments and set OCC_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
if(OCC_FOUND)
foreach(lib IN LISTS OCC_LIBS)
#Use the specified library location if given
find_library(OCC_TEMP_LIB ${lib} HINTS ${OCC_LIBRARY_DIR} NO_DEFAULT_PATH)
if(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
message( "" )
message( "*** OpenCascade library missing ***" )
message( "Could not find a library for ${lib} at ${OCC_LIBRARY_DIR}" )
message( "Verify your OpenCascade installation or pass CMake" )
message( " the library directory as '-DOCC_LIBRARY_DIR=<path>'" )
message( "" )
message( FATAL_ERROR "" )
else(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
list(APPEND OCC_LIBRARIES ${OCC_TEMP_LIB})
endif(${OCC_TEMP_LIB} STREQUAL "OCC_TEMP_LIB-NOTFOUND")
unset(OCC_TEMP_LIB CACHE)
endforeach(lib)
#Convert path names to absolute for cleaner display
get_filename_component(OCC_INCLUDE_DIR "${OCC_INCLUDE_DIR}" ABSOLUTE)
get_filename_component(OCC_LIBRARY_DIR "${OCC_LIBRARY_DIR}" ABSOLUTE)
message(STATUS "Found ${OCC_TYPE} version: ${OCC_VERSION_STRING}")
message(STATUS " ++ ${OCC_TYPE} include directory: ${OCC_INCLUDE_DIR}")
message(STATUS " ++ ${OCC_TYPE} shared libraries directory: ${OCC_LIBRARY_DIR}")
endif(OCC_FOUND)
+1 -1
View File
@@ -35,4 +35,4 @@
# be set after each version tag is added to the git repo. This will
# give developers a reasonable idea where which branch was used to build
# KiCad.
set( KICAD_VERSION "5.0.0-rc2-dev-unknown" )
set( KICAD_VERSION "5.0.0" )
+1 -1
View File
@@ -1128,7 +1128,7 @@ removed: (common/infospgm.cpp) is no longer needed
When a sheet is deleted by block delete. it is put in undo list.
It is really deleted after 10 changes (when the undo list is full).
At this time, the associated data is also deleted.
If an other (not deleted) sheet shares the same data, this data is lost.
If another (not deleted) sheet shares the same data, this data is lost.
Need work to solve this problem and keep the undo/redo feature.
+1 -1
View File
@@ -281,7 +281,7 @@ Component library object and other minor improvements.
Speed up ZONE_CONTAINER::Copy method
Speed up NETINFO_ITEM* BOARD::FindNet( const wxString& aNetname ) by using afast binary search
Switch to kbool V2.1. This version solves others problems in zones calculations.
Adding an other way to generate thermal shape; DO NOT USE: this is for kbool tests only
Adding another way to generate thermal shape; DO NOT USE: this is for kbool tests only
(I am thinking some bugs are remaining, so i am always working on kbool tests.
Klaas Olwerda is supporting me)
+1 -1
View File
@@ -46,7 +46,7 @@ PROJECT_BRIEF =
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.
PROJECT_LOGO =
PROJECT_LOGO = ../kicad_doxygen_logo.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
+71 -74
View File
@@ -95,22 +95,35 @@ available and is always required to build KiCad.
## Python Programming Language ## {#python}
The [Python][] programming language is used to provide scripting support to KiCad. It only needs
to be install if the [KiCad scripting](#kicad_scripting) build configuration option is enabled.
The [Python][] programming language is used to provide scripting support to KiCad. It needs
to be installed unless the [KiCad scripting](#kicad_scripting) build configuration option is
disabled.
## wxPython Library ## {#wxpython}
The [wxPython][] library is used to provide a scripting console for Pcbnew. It only needs to be
installed if the [wxPython scripting](#wxpython_scripting) build configuration option is enabled.
When building KiCad with wxPython support, make sure the version of the wxWidgets library and
the version of wxPython installed on your system are the same. Mismatched versions have been
known to cause runtime issues.
The [wxPython][] library is used to provide a scripting console for Pcbnew. It needs to be
installed unless the [wxPython scripting](#wxpython_scripting) build configuration option is
disabled. When building KiCad with wxPython support, make sure the version of the wxWidgets
library and the version of wxPython installed on your system are the same. Mismatched versions
have been known to cause runtime issues.
## Curl Multi-Protocol File Transfer Library ## {#curl}
The [Curl Multi-Protocol File Transfer Library][libcurl] is used to provide secure internet
file transfer access for the [GitHub][] plug in. This library only needs to be installed if
the GitHub plug build option is enabled.
file transfer access for the [GitHub][] plug in. This library needs to be installed unless
the GitHub plug build option is disabled.
## OpenCascade Community Edition (OCE) ## {#oce}
The [OpenCascade Community Edition][liboce] is used to provide support for loading and saving
3D model file formats such as STEP. This library needs to be installed unless the OCE build
option is disabled.
## Ngspice Library ## {#ngspice}
The [Ngspice Library][libngsice] is used to provide Spice simulation support in the schematic
editor. Make sure the the version of ngspice library used was built with the--with-ngshared
option. This library needs to be installed unless the Spice build option is disabled.
# KiCad Build Configuration Options # {#build_opts}
@@ -175,29 +188,22 @@ The KICAD_SCRIPTING_ACTION_MENU option allows Python scripts to be added directl
menu. This option is disabled by default. Please note that this option is highly experimental
and can cause Pcbnew to crash if Python scripts create an invalid object state within Pcbnew.
## Setting the Build Version and Repository Name ## {#build_version_opt}
## KiCad Build Version ## {#build_version_opt}
The KiCad version string is defined by the three CMake variables KICAD_VERSION, KICAD_BRANCH_NAME,
and KICAD_VERSION_EXTRA. Variables KICAD_BRANCH_NAME and KICAD_VERSION_EXTRA are defined as empty
strings and can be set at configuration. Unless the source branch is a stable release archive,
KICAD_VERSION is set to "no-vcs-found". If an optional variable is not define, it is not appended
to the full version string. If an optional variable is defined it is appended along with a leading
'-' to the full version string as follows:
The KiCad version string is defined by the output of `git describe --dirty` when git is available
or the version string defined in CMakeModules/KiCadVersion.cmake with the value of
KICAD_VERSION_EXTRA appended to the former. If the KICAD_VERSION_EXTRA variable is not define,
it is not appended to the version string. If the KICAD_VERSION_EXTRA variable is defined it
is appended along with a leading '-' to the full version string as follows:
KICAD_VERSION[-KICAD_BRANCH_NAME][-KICAD_VERSION_EXTRA]
(KICAD_VERSION[-KICAD_VERSION_EXTRA])
When the version string is set to "no-vcs-found", the build script automatically creates the
version string information from the [git][] repository information as follows:
The build script automatically creates the version string information from the [git][] repository
information as follows:
(2016-08-26 revision 67230ac)-master
| | |
| | branch name, "HEAD" if not on a branch,
| | or "unknown" if no .git present
| |
| abbreviated commit hash, or no-git if no .git
| present
(5.0.0-rc2-dev-100-g5a33f0960)
|
date of commit, or date of build if no .git present
output of `git describe --dirty` if git is available.
# Getting the KiCad Source Code ## {#getting_src}
@@ -215,7 +221,7 @@ copy on your machine by using the following command:
Here is a list of source links:
Stable release archive: https://launchpad.net/kicad/4.0/4.0.2/+download/kicad-4.0.2.tar.xz
Stable release archive: https://launchpad.net/kicad/4.0/4.0.7/+download/kicad-4.0.7.tar.xz
Development branch: https://code.launchpad.net/~kicad-product-committers/kicad/+git/product-git/+ref/master
@@ -230,9 +236,6 @@ To perform a full build on Linux, run the following commands:
mkdir build/debug # Optional for debug build.
cd build/release
cmake -DCMAKE_BUILD_TYPE=Release \
-DKICAD_SCRIPTING=ON \
-DKICAD_SCRIPTING_MODULES=ON \
-DKICAD_SCRIPTING_WXPYTHON=ON \
../../
make
sudo make install
@@ -249,38 +252,19 @@ the dependencies from source which is a huge and frustrating undertaking. The [
provides packages for all of the require dependencies to build KiCad. To setup the [MSYS2][]
build environment, depending on your system download and run either the [MSYS2 32-bit Installer][]
or the [MSYS2 64-bit Installer][]. After the installer is finished, update to the latest
package versions by running the `msys2_shell.bat` file located in the MSYS2 install path and
package versions by running the `msys2_shell.cmd` file located in the MSYS2 install path and
running the command `pacman -Syu`. If the msys2-runtime package is updated, close the shell
and run `msys2_shell.bat`.
and run `msys2_shell.cmd`.
## MSYS2 the Easy Way ## {#msys2_easy}
## Building using MSYS2 ## {#msys2_build}
The easiest way to build KiCad using the [MSYS2][] build environment is to use the KiCad
[PKGBUILD][] provided by the MSYS2 project to build package using the head of the KiCad
development branch. To build the KiCad package, run the `msys2_shell.bat` file located in the
MSYS2 install path and run the following commands:
pacman -S base-devel git
mkdir src
cd src
git clone https://github.com/Alexpux/MINGW-packages
cd MinGW-packages/mingw-w64-kicad-git
makepkg-mingw -is
This will download and install all of the build dependencies, clone the KiCad source mirror
from GitHub, create both 32-bit and 64-bit KiCad packages depending on your MSYS setup, and
install the newly built KiCad packages. Please note that this build process takes a very
long time to build even on a fast system.
## MSYS2 the Hard Way ## {#msys2_hard}
If you do not want to create KiCad packages and prefer the traditional `make && make install`
method of building KiCad, your task is significantly more involved. For 64 bit builds run
the `mingw64_shell.bat` file located in the MSYS2 install path. At the command prompt run the
the following commands:
The following commands assume you are building for 64-bit Windows, and that you already have
the KiCad source code in a folder called `kicad-source` in your home directory. See below
for changes if you need to build for 32-bit instead. Run `mingw64.exe` from the MSYS2
install path. At the command prompt run the the following commands:
pacman -S base-devel \
git \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-doxygen \
mingw-w64-x86_64-gcc \
@@ -294,7 +278,9 @@ the following commands:
mingw-w64-x86_64-wxPython \
mingw-w64-x86_64-wxWidgets \
mingw-w64-x86_64-toolchain \
mingw-w64-x86_64-glm
mingw-w64-x86_64-glm \
mingw-w64-x86_64-oce \
mingw-w64-x86_64-ngspice
cd kicad-source
mkdir -p build/release
mkdir build/debug # Optional for debug build.
@@ -304,15 +290,13 @@ the following commands:
-DCMAKE_PREFIX_PATH=/mingw64 \
-DCMAKE_INSTALL_PREFIX=/mingw64 \
-DDEFAULT_INSTALL_PATH=/mingw64 \
-DKICAD_SCRIPTING=ON \
-DKICAD_SCRIPTING_MODULES=ON \
-DKICAD_SCRIPTING_WXPYTHON=ON \
../../
make install
For 32-bit builds, run `mingw32_shell.bat` and change `x86_64` to `i686` in the package names and
For 32-bit builds, run `mingw32.exe` and change `x86_64` to `i686` in the package names and
change the paths in the cmake configuration from `/mingw64` to `/mingw32`.
For debug builds, run the cmake command with `-DCMAKE_BUILD_TYPE=Debug` from the `build/debug` folder.
## Known MSYS2 Build Issues ## {#known_issues_msys2}
@@ -328,13 +312,27 @@ to crash. You must downgrade to version 1.57 by running the command:
pacman -U /var/cache/pacman/pkg/mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz
If the file mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz is no longer in your pacman cache,
you will have to down load it from the [MSYS2 64-bit SourceForge repo][]. You should also
you will have to download it from the [MSYS2 64-bit SourceForge repo][]. You should also
configure pacman to prevent upgrading the 64-bit Boost package by adding:
IgnorePkg = mingw-w64-x86_64-boost
to your /etc/pacman.conf file.
### Building OCE from source
KiCad requires OCE by default, and the version installed by `pacman` can cause build errors in
x86_64 systems as of March 2018. In order to work around this, you can build OCE from source on
these systems. Building OCE on Windows requires that you place the source code in a very short
directory path, otherwise you will run into errors caused by the maximum path length on Windows.
In the example below, the `MINGW-packages` repository is cloned to `/c/mwp`, which is equivalent to
`C:\mwp` in Windows path terminology. You may wish to change the destination of the `git clone`
command if you do not want to place it on the root of your C drive, but if you run in to strange
compilation errors about missing files, it is probably because your path is too long.
git clone https://github.com/Alexpux/MINGW-packages /c/mwp
cd /c/mwp/mingw-w64-oce
makepkg-mingw -is
# Building KiCad on macOS # {#build_osx}
@@ -345,10 +343,10 @@ building and packaging KiCad on macOS, see the [macOS bundle build scripts][].
In the following set of commands, replace the macOS version number (i.e. 10.9) with the desired
minimum version. It may be easiest to build for the same version you are running.
KiCad currently won't work with a stock version of wxWidgets that can be downloaded or installed by
package managers like MacPorts or Homebrew. To avoid having to deal with patches a [KiCad fork of
wxWidgets][] is being maintained on GitHub. All the needed patches and some other fixes/improvements
are contained in the `kicad/macos-wx-3.0` branch.
KiCad currently won't work with a stock version of wxWidgets that can be downloaded or
installed by package managers like MacPorts or Homebrew. To avoid having to deal with
patches a [KiCad fork of wxWidgets][] is being maintained on GitHub. All the needed patches
and some other fixes/improvements are contained in the `kicad/macos-wx-3.0` branch.
To perform a wxWidgets build, execute the following commands:
@@ -411,9 +409,6 @@ configuration as follows to point it to your own wxWidgets/wxPython:
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
-DwxWidgets_CONFIG_EXECUTABLE=<your wxWidgets build folder>/wx-bin/bin/wx-config \
-DKICAD_SCRIPTING=ON \
-DKICAD_SCRIPTING_MODULES=ON \
-DKICAD_SCRIPTING_WXPYTHON=ON \
-DPYTHON_EXECUTABLE=<path-to-python-exe>/python \
-DPYTHON_SITE_PACKAGE_PATH=<your wxWidgets build folder>/wx-bin/lib/python2.7/site-packages \
-DCMAKE_INSTALL_PREFIX=../bin \
@@ -456,9 +451,9 @@ you will have to apply the Boost patches in the KiCad source [patches folder][].
[Cairo]: http://cairographics.org/
[Python]: https://www.python.org/
[wxPython]: http://wxpython.org/
[MSYS2]: http://msys2.github.io/
[MSYS2 32-bit Installer]: http://repo.msys2.org/distrib/i686/msys2-i686-20150916.exe
[MSYS2 64-bit Installer]: http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20150916.exe
[MSYS2]: http://www.msys2.org/
[MSYS2 32-bit Installer]: http://repo.msys2.org/distrib/i686/msys2-i686-20161025.exe
[MSYS2 64-bit Installer]: http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe
[PKGBUILD]: https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-kicad-git/PKGBUILD
[macOS bundle build scripts]:http://bazaar.launchpad.net/~adamwolf/+junk/kicad-mac-packaging/files
[KiCad fork of wxWidgets]:https://github.com/KiCad/wxWidgets
@@ -469,3 +464,5 @@ you will have to apply the Boost patches in the KiCad source [patches folder][].
[GLM]: http://glm.g-truc.net/
[git]: https://git-scm.com/
[OCE]: https://github.com/tpaviot/oce
[liboce]: https://github.com/tpaviot/oce
[libngspice]: https://sourceforge.net/projects/ngspice/
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

+1 -1
View File
@@ -45,7 +45,7 @@ PROJECT_BRIEF =
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.
PROJECT_LOGO =
PROJECT_LOGO = Documentation/kicad_doxygen_logo.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
+1 -1
View File
@@ -19,7 +19,7 @@
<key>CFBundleLongVersionString</key>
<string></string>
<key>CFBundleName</key>
<string>bitmap2component</string>
<string>Bitmap 2 Component</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
+1 -1
View File
@@ -639,7 +639,7 @@ void BM2CMP_FRAME::ExportFile( FILE* aOutfile, OUTPUT_FMT_ID aFormat )
if( !potrace_bitmap )
{
wxString msg;
msg.Printf( wxT( "Error allocating memory for potrace bitmap" ) );
msg.Printf( _( "Error allocating memory for potrace bitmap" ) );
wxMessageBox( msg );
return;
}
+3 -3
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Dec 30 2017)
// C++ code generated with wxFormBuilder (version Apr 19 2018)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -128,12 +128,12 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
wxString m_radioBoxFormatChoices[] = { _("Eeschema (.lib file)"), _("Pcbnew (.kicad_mod file)"), _("Postscript (.ps file)"), _("Logo for title block (.kicad_wks file)") };
int m_radioBoxFormatNChoices = sizeof( m_radioBoxFormatChoices ) / sizeof( wxString );
m_radioBoxFormat = new wxRadioBox( m_panelRight, wxID_ANY, _("Format"), wxDefaultPosition, wxDefaultSize, m_radioBoxFormatNChoices, m_radioBoxFormatChoices, 1, wxRA_SPECIFY_COLS );
m_radioBoxFormat = new wxRadioBox( m_panelRight, wxID_ANY, _("Format:"), wxDefaultPosition, wxDefaultSize, m_radioBoxFormatNChoices, m_radioBoxFormatChoices, 1, wxRA_SPECIFY_COLS );
m_radioBoxFormat->SetSelection( 1 );
brightSizer->Add( m_radioBoxFormat, 0, wxEXPAND|wxALL, 5 );
wxStaticBoxSizer* sbSizer2;
sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( m_panelRight, wxID_ANY, _("Image Options") ), wxVERTICAL );
sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( m_panelRight, wxID_ANY, _("Image Options:") ), wxVERTICAL );
m_ThresholdText = new wxStaticText( sbSizer2->GetStaticBox(), wxID_ANY, _("Black / White Threshold:"), wxDefaultPosition, wxDefaultSize, 0 );
m_ThresholdText->Wrap( -1 );
+3 -2
View File
@@ -14,6 +14,7 @@
<property name="file">bitmap2cmp_gui_base</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="indent_with_spaces"></property>
<property name="internationalize">1</property>
<property name="name">bitmap2cmp_gui</property>
<property name="namespace"></property>
@@ -2019,7 +2020,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Format</property>
<property name="label">Format:</property>
<property name="majorDimension">1</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
@@ -2082,7 +2083,7 @@
<property name="proportion">0</property>
<object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
<property name="label">Image Options</property>
<property name="label">Image Options:</property>
<property name="minimum_size"></property>
<property name="name">sbSizer2</property>
<property name="orient">wxVERTICAL</property>
+1 -1
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Dec 30 2017)
// C++ code generated with wxFormBuilder (version Apr 19 2018)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
Binary file not shown.
+5 -2
View File
@@ -2,7 +2,7 @@
# This program source code file is part of KICAD, a free EDA CAD application.
#
# Copyright (C) 2011 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
# Copyright (C) 2011-2016 Kicad Developers, see change_log.txt for contributors#.
# Copyright (C) 2011-2018 Kicad Developers, see AUTHORS.txt for contributors.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -98,6 +98,7 @@ set( BMAPS_SMALL
pintype_opencoll
pintype_openemit
pintype_noconnect
refresh
tree_nosel
tree_sel
)
@@ -344,6 +345,7 @@ set( BMAPS_MID
load_module_board
load_module_lib
local_ratsnest
lock_unlock
locked
measurement
minus
@@ -411,6 +413,7 @@ set( BMAPS_MID
options_all_vias
options_arc
options_circle
options_generic
options_module
options_pad
options_pinsheet
@@ -630,7 +633,7 @@ function( svg2png inputFile outFile pngWidth pngHeight )
add_custom_command(
OUTPUT ${outFile}
COMMAND ${Inkscape_EXECUTABLE} --export-area-snap -f ${inputFile} -e ${outFile}
COMMAND ${Inkscape_EXECUTABLE} --without-gui --export-area-snap -f ${inputFile} -e ${outFile}
-w ${pngWidth} -h ${pngHeight} > ${logfile}
DEPENDS ${inputFile}
COMMENT "Creating ${pngHeight} pixel tall ${outFile}"
+34
View File
@@ -0,0 +1,34 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps.h>
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff,
0x61, 0x00, 0x00, 0x01, 0x0b, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x9d, 0xd3, 0xbd, 0x4a, 0x43,
0x41, 0x10, 0x05, 0xe0, 0xcf, 0xc4, 0x18, 0xd2, 0xda, 0x08, 0x82, 0x18, 0xc1, 0xce, 0x1f, 0xb0,
0x55, 0x44, 0xc1, 0x42, 0x1b, 0xf3, 0x22, 0x8a, 0xb6, 0x62, 0x2f, 0x82, 0xb1, 0xf0, 0x25, 0x2c,
0x05, 0x15, 0x2c, 0x54, 0x62, 0x91, 0x32, 0x88, 0x85, 0x79, 0x01, 0x5b, 0x1f, 0x20, 0x2a, 0x11,
0x7f, 0x9a, 0x09, 0x5c, 0x96, 0x24, 0x24, 0x39, 0x70, 0x2f, 0x3b, 0x3b, 0x7b, 0xe6, 0xec, 0xbd,
0x67, 0x86, 0xde, 0x18, 0xc7, 0x1c, 0xca, 0xc8, 0x67, 0xf6, 0x8f, 0x51, 0xea, 0xc3, 0xb3, 0x8e,
0x5b, 0xb4, 0xf0, 0x17, 0x4f, 0x0b, 0x57, 0x38, 0x8d, 0xb8, 0x9c, 0x55, 0xe9, 0x20, 0x8f, 0x73,
0x1c, 0xe2, 0x07, 0x35, 0xbc, 0x22, 0x87, 0x25, 0x54, 0x32, 0xe7, 0xa7, 0xf0, 0x96, 0x2a, 0x5f,
0x44, 0xf5, 0xa7, 0xac, 0x42, 0x60, 0x17, 0xed, 0xcc, 0x8d, 0x2a, 0x29, 0x79, 0x23, 0x12, 0x35,
0x14, 0x92, 0xdc, 0x22, 0x9a, 0x78, 0x46, 0x03, 0x8f, 0xd8, 0x49, 0x0b, 0xdc, 0xe1, 0x17, 0x0b,
0x46, 0xc0, 0x04, 0xbe, 0x70, 0x3f, 0x0a, 0x39, 0x87, 0x19, 0x14, 0xf1, 0x32, 0x04, 0x6f, 0x05,
0xfb, 0x98, 0x14, 0xaf, 0xbd, 0xd8, 0x1c, 0x14, 0x67, 0xa9, 0x9d, 0xc3, 0xe2, 0x01, 0x9f, 0x49,
0x1b, 0x0c, 0x8c, 0x79, 0x7c, 0xe3, 0x3a, 0x4d, 0x6c, 0x87, 0x45, 0x8d, 0xb0, 0xac, 0x19, 0x16,
0x66, 0x51, 0x44, 0x3d, 0x1c, 0x5b, 0xd3, 0xa5, 0x59, 0x3a, 0x8d, 0xd2, 0x8e, 0x38, 0x55, 0xae,
0x47, 0xbe, 0xda, 0xad, 0x95, 0xdf, 0x33, 0xeb, 0x31, 0x1c, 0x60, 0x33, 0xd4, 0x96, 0xb1, 0x15,
0xae, 0x55, 0x71, 0xd4, 0xed, 0xdb, 0x66, 0xa3, 0xfa, 0x09, 0x2e, 0x93, 0x61, 0xfa, 0xc0, 0x0d,
0x56, 0xfb, 0xfd, 0x9c, 0x52, 0x8c, 0x6a, 0xf6, 0x16, 0xd3, 0x31, 0xd2, 0x85, 0x5e, 0xa4, 0x7f,
0x48, 0xf6, 0x3b, 0x32, 0xac, 0x39, 0x22, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE refresh_xpm[1] = {{ png, sizeof( png ), "refresh_xpm" }};
//EOF
+84 -85
View File
@@ -8,91 +8,90 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x05, 0x33, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0xd6, 0x79, 0x4c, 0x93,
0x67, 0x1c, 0x07, 0xf0, 0x87, 0x8a, 0x47, 0xbd, 0xa6, 0x80, 0x32, 0x20, 0x9b, 0xd3, 0x2c, 0xf3,
0x0f, 0x37, 0xdd, 0x8c, 0x59, 0xe2, 0xa6, 0x8b, 0xc6, 0x73, 0x32, 0xe4, 0xb2, 0xf4, 0x82, 0xb6,
0x54, 0xe9, 0x05, 0x0c, 0x14, 0x07, 0x2a, 0xa0, 0x4e, 0x86, 0x58, 0x70, 0x43, 0x64, 0x72, 0x08,
0x11, 0x10, 0x25, 0xa0, 0x53, 0x4e, 0x07, 0x28, 0x08, 0x55, 0x04, 0x15, 0x1c, 0x1e, 0xc1, 0x33,
0xe2, 0x7d, 0x15, 0x2b, 0x16, 0x15, 0x95, 0xb6, 0xef, 0x77, 0x6f, 0xbb, 0xd0, 0x50, 0x0e, 0xe9,
0x96, 0xf9, 0x24, 0x4f, 0xde, 0xb4, 0xe9, 0xf3, 0x7c, 0xde, 0xe7, 0xf7, 0x7b, 0xfa, 0x7b, 0x1e,
0x42, 0xac, 0x6d, 0xcb, 0x04, 0x9f, 0x11, 0x57, 0x1e, 0x87, 0xb8, 0xf9, 0xce, 0x24, 0x2c, 0xd6,
0x68, 0xf2, 0x3e, 0xda, 0x68, 0xd6, 0x2a, 0xb9, 0x3d, 0x4f, 0xd2, 0x31, 0x37, 0x22, 0xa6, 0x6b,
0x41, 0xe4, 0xd6, 0x76, 0x67, 0x41, 0x90, 0x76, 0x3c, 0x47, 0xa2, 0x71, 0x11, 0x06, 0x5d, 0x9c,
0x24, 0x0e, 0x3d, 0xc8, 0xf4, 0x12, 0x87, 0xd1, 0x2f, 0xb1, 0x84, 0xb8, 0xf9, 0x4d, 0x26, 0x9b,
0x37, 0x33, 0xfe, 0xbd, 0xe0, 0x21, 0x1a, 0xe7, 0xc0, 0x95, 0x96, 0x2f, 0x8a, 0x8a, 0xd3, 0xde,
0x78, 0xf8, 0x18, 0x2d, 0x77, 0xef, 0xa3, 0xbb, 0xe9, 0xf4, 0x7a, 0x5c, 0x7f, 0xf0, 0x08, 0x25,
0x67, 0xce, 0x21, 0xfe, 0x50, 0xa9, 0x9e, 0xbf, 0x7d, 0x57, 0xfb, 0x8c, 0xe0, 0x0d, 0x6d, 0xf4,
0x0b, 0x68, 0xed, 0x79, 0xd2, 0x7b, 0x4e, 0x7e, 0x81, 0x35, 0xf6, 0x3c, 0x79, 0xd4, 0xe0, 0xc8,
0x0f, 0xdc, 0xd9, 0xf4, 0xa0, 0x87, 0x3b, 0x8a, 0x2b, 0xde, 0x52, 0x14, 0x85, 0x9a, 0x8b, 0x97,
0x21, 0x4a, 0x4c, 0x87, 0x35, 0xad, 0xfd, 0xe5, 0x2b, 0x2c, 0x88, 0x8c, 0xd3, 0x8f, 0xf0, 0xf2,
0xd7, 0xbd, 0x8b, 0xb0, 0x19, 0xcf, 0x91, 0x46, 0x4c, 0x12, 0x87, 0xb4, 0x37, 0xdf, 0xbc, 0x6d,
0x1e, 0x7c, 0xeb, 0x89, 0x1a, 0x85, 0x0d, 0x4d, 0x56, 0x41, 0xe1, 0xd9, 0xf9, 0x7a, 0x3a, 0xac,
0x86, 0x31, 0xac, 0x95, 0x2f, 0xfb, 0x27, 0x96, 0x73, 0x1d, 0xed, 0x79, 0xb2, 0x86, 0x15, 0x71,
0x49, 0x1d, 0x2f, 0x5f, 0xbf, 0xb1, 0x18, 0x6c, 0x84, 0xd2, 0xcb, 0xab, 0x07, 0x45, 0x92, 0x4a,
0x2b, 0x29, 0x47, 0x5f, 0x85, 0xa1, 0xf5, 0xb1, 0x1a, 0xe3, 0xd8, 0x92, 0x67, 0x7d, 0x0c, 0x5b,
0x0f, 0xe1, 0x62, 0x7b, 0xae, 0x44, 0xbd, 0xbf, 0xf6, 0x94, 0xbe, 0xbf, 0x09, 0xfe, 0xba, 0x79,
0x0b, 0x9e, 0xb1, 0x89, 0xef, 0x44, 0x72, 0x6b, 0xea, 0xa8, 0x09, 0x7c, 0xb9, 0xa1, 0x3b, 0x97,
0x1f, 0xf8, 0x04, 0x68, 0x2c, 0x77, 0x15, 0x5b, 0x7a, 0x88, 0xe9, 0x23, 0xc1, 0xf7, 0x9b, 0x12,
0x90, 0x53, 0x7d, 0x02, 0x9a, 0x8e, 0x17, 0x7d, 0x26, 0x79, 0xab, 0xd3, 0xe1, 0xd1, 0xb3, 0xe7,
0x03, 0x22, 0xc6, 0x4d, 0x61, 0xc7, 0x93, 0x1a, 0x1a, 0xaf, 0xb7, 0x9a, 0x3e, 0x77, 0xe9, 0xf4,
0xa0, 0x73, 0xac, 0xb6, 0x80, 0x46, 0xb2, 0x65, 0x0d, 0x0b, 0x53, 0x8a, 0xb0, 0x38, 0xa5, 0x88,
0x9a, 0x16, 0xf1, 0xab, 0x7e, 0x2c, 0x3f, 0x90, 0x1a, 0xc9, 0x96, 0x1a, 0x26, 0x4b, 0x7e, 0xea,
0x62, 0x29, 0x93, 0x91, 0x79, 0xb4, 0x16, 0x75, 0x97, 0xaf, 0x61, 0xe9, 0x26, 0x65, 0xbf, 0xc8,
0xc9, 0x96, 0xab, 0xb0, 0xe3, 0x4a, 0x0c, 0xaa, 0x4b, 0x57, 0xa8, 0xee, 0xef, 0x3a, 0x3a, 0x5f,
0xc3, 0x9e, 0x2b, 0xbd, 0x6f, 0x09, 0x71, 0xe4, 0xe5, 0x5e, 0x05, 0x75, 0x08, 0x3b, 0xa3, 0x46,
0x78, 0xe3, 0x53, 0xac, 0x39, 0xfd, 0x04, 0x32, 0xd5, 0x1d, 0xb8, 0x1f, 0xac, 0xc7, 0xac, 0x1d,
0xf9, 0x94, 0xcb, 0x9a, 0xad, 0x3a, 0x26, 0x47, 0x4e, 0x31, 0x96, 0x0b, 0xe0, 0x20, 0x08, 0xd6,
0x2f, 0x8a, 0x8e, 0xa7, 0xb6, 0xfd, 0x51, 0x82, 0xbb, 0xea, 0x36, 0x5c, 0xb8, 0x7d, 0x07, 0x74,
0x5e, 0x0d, 0x47, 0x1a, 0x9b, 0xa9, 0x9e, 0x78, 0x9b, 0xb6, 0x03, 0x13, 0xf9, 0xf2, 0x56, 0x0b,
0x88, 0xc9, 0x96, 0xe6, 0x2f, 0xda, 0x53, 0x01, 0xc9, 0x89, 0x3b, 0x90, 0x9d, 0xbc, 0x0b, 0x09,
0x8d, 0x88, 0x8e, 0xdf, 0x04, 0xbb, 0xf2, 0x0a, 0xdc, 0xca, 0x2e, 0x60, 0xc1, 0xe1, 0xb3, 0xf8,
0x7a, 0x5f, 0x0d, 0x26, 0x29, 0xb3, 0xe0, 0x1c, 0x9f, 0x8d, 0xd1, 0xe1, 0x09, 0x94, 0xad, 0x38,
0x4c, 0x6f, 0xe3, 0xbd, 0x92, 0x62, 0x78, 0x0a, 0x91, 0x5c, 0x5a, 0x69, 0xe8, 0xbd, 0xca, 0x7b,
0x6d, 0x1a, 0x38, 0xf2, 0x15, 0x57, 0x2c, 0xa0, 0xe1, 0x2b, 0x02, 0x76, 0xcf, 0xde, 0x75, 0x18,
0x9c, 0xa3, 0x57, 0xc1, 0x3b, 0x76, 0xcd, 0xf4, 0xf4, 0x2e, 0x6f, 0xa1, 0x91, 0xf3, 0x58, 0x58,
0xd8, 0x88, 0x6f, 0x0f, 0x9c, 0xc2, 0xe7, 0x19, 0x65, 0x60, 0x0a, 0x43, 0xe1, 0x92, 0x56, 0x84,
0x71, 0x3b, 0x0b, 0x30, 0x74, 0x7b, 0x0e, 0x88, 0x72, 0x0f, 0x6c, 0x04, 0x21, 0x86, 0xf2, 0xa6,
0x0b, 0x7d, 0xc2, 0x69, 0xfc, 0x83, 0x3b, 0x09, 0x02, 0x9b, 0x2d, 0x77, 0x9c, 0xa7, 0x38, 0xfe,
0x8b, 0x84, 0x5c, 0x2c, 0x2b, 0x69, 0x86, 0x6b, 0xe9, 0x79, 0xd3, 0x73, 0x71, 0x51, 0x13, 0xe6,
0x1f, 0x3a, 0x83, 0x6f, 0xe8, 0x90, 0xce, 0xa4, 0x57, 0x33, 0x35, 0xf3, 0x08, 0x26, 0x6c, 0x49,
0x85, 0xc3, 0xef, 0x07, 0x31, 0xf2, 0xb7, 0x7d, 0x26, 0xa4, 0x1b, 0x2a, 0x3b, 0xdb, 0xdc, 0x07,
0xba, 0x74, 0xfb, 0x1e, 0xe8, 0x52, 0xd5, 0x60, 0x01, 0x31, 0x96, 0x0b, 0xd7, 0x4f, 0x8e, 0x49,
0xc7, 0x9c, 0x03, 0xf5, 0x98, 0x4b, 0xe7, 0x65, 0x0e, 0xbd, 0x82, 0xd9, 0x05, 0x27, 0x31, 0x2b,
0xaf, 0x16, 0xd3, 0x73, 0xab, 0x30, 0x35, 0xab, 0x02, 0x8e, 0x5b, 0x33, 0x30, 0x4c, 0xb4, 0x1a,
0x23, 0xd6, 0x25, 0x80, 0x11, 0x93, 0x06, 0xf2, 0x4b, 0x5a, 0x37, 0xa4, 0x2f, 0x3e, 0x7d, 0xae,
0x0f, 0xd4, 0x74, 0xa3, 0x15, 0x2e, 0x82, 0xa0, 0xda, 0x5e, 0xe5, 0x86, 0x1f, 0xe8, 0xb8, 0x21,
0x51, 0x6f, 0x9c, 0x74, 0x46, 0x6e, 0x35, 0xa6, 0xef, 0xad, 0xc2, 0xb4, 0x9c, 0xa3, 0x26, 0x60,
0x4a, 0x66, 0x19, 0x9c, 0x12, 0xf3, 0x30, 0x6a, 0x4d, 0x2c, 0x46, 0x44, 0x25, 0x82, 0x11, 0xbd,
0x03, 0x64, 0x6d, 0x1c, 0x08, 0x5b, 0x06, 0x12, 0x95, 0x04, 0xe2, 0x25, 0xa6, 0x56, 0xed, 0xcc,
0x80, 0xf6, 0x55, 0x27, 0x9e, 0x3c, 0xd7, 0x9a, 0x21, 0xe3, 0x2e, 0x75, 0x16, 0x06, 0x97, 0x5b,
0x42, 0xae, 0x7c, 0xe1, 0xd8, 0xd5, 0xb1, 0xaf, 0x3f, 0xc9, 0x28, 0x45, 0x77, 0xff, 0x38, 0xbd,
0x18, 0xce, 0xa9, 0x85, 0x60, 0x06, 0x6e, 0xc4, 0xd0, 0x55, 0xe1, 0x60, 0xd2, 0xe1, 0xb2, 0x89,
0xcf, 0x32, 0x87, 0xcc, 0x1c, 0x3a, 0xbe, 0x42, 0xbf, 0x2e, 0x3b, 0xdf, 0xb4, 0xc5, 0xbf, 0xfc,
0x71, 0x03, 0xf2, 0x54, 0xf5, 0x88, 0x2d, 0x28, 0x86, 0x7f, 0xd2, 0x6e, 0x38, 0xf9, 0x29, 0x0a,
0x2d, 0x21, 0x37, 0x5f, 0xef, 0x61, 0x8a, 0xa8, 0x0e, 0xbb, 0xe4, 0x03, 0x30, 0xf6, 0xf1, 0xc9,
0x05, 0x18, 0x9b, 0x90, 0x83, 0xe1, 0xe1, 0x4a, 0x0c, 0xdb, 0xb2, 0x0b, 0x43, 0x12, 0xb2, 0xfb,
0x00, 0x3d, 0x72, 0xa4, 0xcb, 0x57, 0x35, 0x58, 0x84, 0xcd, 0x58, 0x23, 0x67, 0x04, 0xaf, 0xef,
0x1c, 0xe3, 0x23, 0x0e, 0xe8, 0x75, 0xa8, 0xf9, 0x2e, 0xb5, 0x11, 0x87, 0xb5, 0x1b, 0x27, 0xb4,
0xa5, 0x01, 0xe3, 0x93, 0x9e, 0xe0, 0x9f, 0x10, 0x0d, 0x00, 0xf4, 0x84, 0xf6, 0xd7, 0xd6, 0x5b,
0x40, 0x79, 0x74, 0x19, 0xb3, 0xe3, 0x48, 0x4e, 0x1b, 0x0b, 0x74, 0xaf, 0x15, 0x71, 0xe7, 0x10,
0x61, 0xc8, 0x53, 0xd3, 0xe0, 0xb0, 0x58, 0x90, 0x80, 0xf0, 0x41, 0x01, 0x33, 0xe4, 0x17, 0xa2,
0xdb, 0x5b, 0x5d, 0x67, 0x46, 0xd4, 0x74, 0x9e, 0x1c, 0x78, 0x32, 0x0d, 0x71, 0xe7, 0x7c, 0xd4,
0x4f, 0xd5, 0xe6, 0x7c, 0x45, 0xf8, 0x8a, 0x36, 0xf2, 0x73, 0x0a, 0x88, 0x22, 0x9a, 0xde, 0x51,
0xe9, 0xd6, 0x43, 0x82, 0x90, 0xae, 0xac, 0x2a, 0x95, 0x19, 0x5a, 0xb2, 0x51, 0xf9, 0x7c, 0xd4,
0x0a, 0x7f, 0xff, 0x01, 0x8e, 0x07, 0xdf, 0x4f, 0x89, 0xa7, 0xa8, 0x93, 0xc8, 0x22, 0xad, 0x06,
0x7a, 0x42, 0x99, 0x95, 0xb5, 0x26, 0x24, 0xeb, 0x98, 0x4a, 0x3f, 0x81, 0x2f, 0x53, 0x0d, 0x7c,
0xd4, 0xcd, 0x9b, 0x67, 0x4b, 0xdc, 0x45, 0xa9, 0xf4, 0xd1, 0xfd, 0x98, 0xb0, 0xa5, 0x1a, 0x12,
0xb4, 0xb1, 0x8b, 0x6c, 0x4e, 0xb6, 0x1a, 0xda, 0x5d, 0x71, 0x1c, 0x0f, 0x34, 0xcf, 0x8c, 0x35,
0xef, 0x29, 0x59, 0x26, 0xfa, 0xd0, 0xba, 0x7b, 0x82, 0x2b, 0x6f, 0x0a, 0x71, 0x17, 0xae, 0x25,
0x5e, 0xfe, 0xe7, 0x88, 0x97, 0xa8, 0x9d, 0xac, 0x5c, 0xfb, 0x82, 0x44, 0x28, 0x41, 0xb6, 0x65,
0x0e, 0x08, 0xa5, 0xfe, 0x59, 0x85, 0xef, 0xd6, 0xc5, 0x68, 0x99, 0xde, 0xfe, 0xdc, 0xff, 0x76,
0xfd, 0x59, 0xc2, 0xb2, 0xa3, 0x61, 0x16, 0xf1, 0xf0, 0x2f, 0x21, 0xee, 0x02, 0x2d, 0xe1, 0x05,
0x69, 0x48, 0x68, 0x0c, 0x45, 0x62, 0xd2, 0x7a, 0x40, 0xa1, 0x6f, 0x17, 0x46, 0xc6, 0x19, 0xe8,
0x03, 0xaf, 0xfc, 0xff, 0xb9, 0x73, 0x19, 0xc3, 0xeb, 0xca, 0x9b, 0x4f, 0x3c, 0x84, 0x29, 0x74,
0x7f, 0x48, 0x7c, 0x24, 0x6d, 0x24, 0x30, 0xfa, 0x8d, 0x0d, 0x57, 0xde, 0x35, 0xdc, 0x98, 0x5f,
0x4f, 0xbf, 0x89, 0xef, 0xe5, 0xae, 0x67, 0xba, 0x50, 0xba, 0x09, 0x22, 0x18, 0x9e, 0xe2, 0x96,
0x21, 0xee, 0x02, 0xde, 0x60, 0x3f, 0xff, 0x1b, 0x73, 0x06, 0xe5, 0x5c, 0xf9, 0x44, 0x86, 0x22,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x05, 0x22, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x7b, 0x4c, 0x53,
0x57, 0x1c, 0xc7, 0x0f, 0x2f, 0x85, 0xa1, 0x43, 0x51, 0xc4, 0x69, 0x9c, 0xd3, 0xa1, 0x43, 0xf7,
0xd2, 0x2c, 0x33, 0x73, 0x33, 0x4e, 0xb7, 0x3f, 0x30, 0x30, 0xa8, 0x1d, 0x14, 0xfa, 0x6e, 0xa1,
0x50, 0x4a, 0x0b, 0x8a, 0x80, 0x82, 0x65, 0xa8, 0x20, 0x38, 0x50, 0xd1, 0xa9, 0x81, 0x15, 0x54,
0x64, 0xb0, 0xcc, 0x17, 0x1a, 0x11, 0x4d, 0x71, 0xc8, 0x1c, 0xc3, 0x17, 0x28, 0x4e, 0x97, 0x88,
0xe0, 0x0b, 0xc7, 0x94, 0x39, 0x79, 0x6b, 0x7d, 0xd0, 0xc2, 0xfd, 0xee, 0xdc, 0x3a, 0x9d, 0xa5,
0x80, 0xb8, 0xb8, 0x6f, 0x72, 0x92, 0x7b, 0x4f, 0x4e, 0xce, 0x27, 0xbf, 0xc7, 0xf9, 0x9e, 0x43,
0xc8, 0x20, 0x65, 0xcf, 0x11, 0x7a, 0xd9, 0x71, 0xc4, 0x3b, 0x89, 0xb7, 0x20, 0x81, 0xf8, 0xc9,
0xe6, 0x12, 0x1e, 0x6f, 0x08, 0x79, 0xa9, 0xfa, 0x40, 0xe9, 0xe0, 0xca, 0x57, 0x6e, 0x1a, 0x2f,
0x8d, 0x32, 0xb8, 0x85, 0xc4, 0x62, 0x4a, 0x6c, 0x3a, 0xe3, 0x2a, 0x8b, 0x66, 0x86, 0x06, 0x28,
0x98, 0xa1, 0x81, 0x61, 0x3d, 0xce, 0x82, 0x70, 0xc3, 0x70, 0xbe, 0xea, 0xaa, 0x8d, 0xaf, 0xb8,
0x88, 0xf8, 0x08, 0xb5, 0xc4, 0x4f, 0x38, 0x9f, 0xcc, 0x93, 0x3b, 0xbe, 0x18, 0xc4, 0x57, 0x32,
0x89, 0x42, 0x6a, 0x35, 0xd9, 0xf9, 0x06, 0xfd, 0xd9, 0xf3, 0x98, 0x9d, 0x9c, 0x8d, 0xf8, 0x33,
0x2d, 0x88, 0x3a, 0xd9, 0x84, 0x90, 0x63, 0xd7, 0xc1, 0x2d, 0x3e, 0x87, 0x8f, 0xb7, 0xeb, 0xe1,
0xb9, 0xae, 0x00, 0xe3, 0xb5, 0x1b, 0xe1, 0x1a, 0x91, 0xc8, 0x38, 0x8a, 0x34, 0x8c, 0x2d, 0x57,
0xce, 0xd8, 0x70, 0xe5, 0x3d, 0xf6, 0x01, 0x8a, 0x0e, 0x1a, 0xb9, 0xdd, 0x80, 0x0c, 0x47, 0xae,
0x4c, 0x34, 0x4a, 0x10, 0xde, 0x7a, 0xf8, 0xcc, 0xaf, 0x0c, 0xa8, 0x2a, 0x2f, 0xd6, 0x61, 0xf6,
0xaa, 0x2d, 0xd0, 0xd6, 0xb4, 0x61, 0x11, 0x05, 0x05, 0x53, 0x50, 0x40, 0xe9, 0x45, 0x2c, 0x28,
0xae, 0xc1, 0x27, 0x7b, 0x4e, 0xe0, 0xbd, 0xc2, 0xa3, 0x98, 0xbc, 0xed, 0x10, 0xdc, 0xb2, 0x8a,
0xe0, 0x98, 0x59, 0x00, 0x22, 0x5d, 0x0c, 0xe2, 0x27, 0x01, 0x9b, 0x91, 0xbe, 0x09, 0x3c, 0x9e,
0x93, 0x9b, 0x30, 0x22, 0x6f, 0x56, 0x4c, 0x52, 0xc7, 0xad, 0xd6, 0x36, 0x3c, 0x51, 0x55, 0xfd,
0x55, 0xcc, 0xd4, 0x66, 0x9a, 0x21, 0xa1, 0x15, 0x37, 0x20, 0x28, 0xab, 0x87, 0xdf, 0xa1, 0x0b,
0xf8, 0x6c, 0x5f, 0x15, 0x3e, 0xdc, 0x59, 0x81, 0x69, 0xf9, 0x47, 0x30, 0x21, 0xa7, 0x18, 0x23,
0x36, 0xef, 0x86, 0x6d, 0x78, 0x02, 0x48, 0xe8, 0x32, 0xd8, 0x2c, 0x94, 0x33, 0xfd, 0xa4, 0x4a,
0xf0, 0xb6, 0xab, 0x20, 0xbc, 0x21, 0xb1, 0x60, 0xcf, 0xc3, 0x1e, 0x86, 0xc1, 0xb3, 0xba, 0xd0,
0xf0, 0x3b, 0xa6, 0xc7, 0xa5, 0x41, 0x5a, 0x7e, 0x05, 0x81, 0x47, 0x2e, 0xc1, 0x97, 0x42, 0x3e,
0xdf, 0x5f, 0x8d, 0x8f, 0x76, 0x55, 0xe2, 0xdd, 0x82, 0x32, 0x4c, 0xda, 0xfa, 0x38, 0x1a, 0x87,
0xa8, 0x64, 0x1a, 0x4d, 0x34, 0x48, 0xfa, 0x76, 0x0a, 0x92, 0x59, 0x81, 0x6c, 0x86, 0xf9, 0x87,
0x68, 0x5e, 0x93, 0x68, 0xda, 0x8e, 0xd7, 0xd6, 0xa3, 0x2f, 0xd5, 0xdd, 0x6c, 0x82, 0x47, 0xf4,
0x2a, 0x0a, 0x38, 0x0f, 0xaf, 0x03, 0x67, 0xf1, 0x69, 0xd1, 0x29, 0xcc, 0xda, 0xf9, 0x0b, 0xde,
0xa1, 0x10, 0x36, 0x65, 0xee, 0xd9, 0xfb, 0xe0, 0x18, 0xbf, 0x0e, 0x44, 0xa0, 0x06, 0xf9, 0x7a,
0x1b, 0x48, 0x46, 0x9e, 0x35, 0x88, 0x46, 0x51, 0x6a, 0xc7, 0x91, 0x20, 0x6d, 0x77, 0x31, 0x73,
0xba, 0xee, 0x2a, 0x1e, 0x76, 0x19, 0xad, 0x40, 0x37, 0xfe, 0x6a, 0xc6, 0xeb, 0xea, 0x44, 0x73,
0x3d, 0x58, 0xc0, 0x8c, 0xc2, 0x72, 0x78, 0xee, 0x28, 0xc5, 0xc4, 0xdc, 0x83, 0x8f, 0xeb, 0x92,
0xb8, 0x11, 0x24, 0x48, 0x05, 0x92, 0x9a, 0x63, 0x86, 0x98, 0x23, 0xe2, 0xf4, 0x02, 0x8d, 0x95,
0x68, 0x4e, 0x46, 0xe7, 0x16, 0xc2, 0x37, 0x25, 0x93, 0xf1, 0x50, 0xc6, 0x98, 0x46, 0xf0, 0x95,
0xcc, 0x1b, 0x8a, 0xe8, 0x9e, 0xc0, 0xf4, 0xcd, 0xa6, 0xec, 0xc3, 0x47, 0x99, 0x33, 0x97, 0xaf,
0xa3, 0xf1, 0x4e, 0x0b, 0xc6, 0x29, 0x97, 0x62, 0x7a, 0xfe, 0x8f, 0x98, 0x92, 0xa7, 0xa7, 0x80,
0x12, 0x8c, 0xfd, 0x76, 0xbf, 0xb9, 0x26, 0x43, 0x56, 0x66, 0x81, 0xf0, 0xc2, 0x40, 0x68, 0x57,
0x9a, 0x21, 0xec, 0xa0, 0x51, 0xd9, 0x72, 0x83, 0x7b, 0x2c, 0x40, 0xe3, 0x64, 0x51, 0xfa, 0xde,
0x29, 0xbb, 0xd3, 0x71, 0x17, 0x05, 0x3f, 0x55, 0x42, 0x92, 0xa9, 0x63, 0x66, 0x44, 0x69, 0x8d,
0x63, 0xc4, 0xea, 0x1e, 0x5b, 0x8e, 0x14, 0xce, 0x91, 0x2b, 0x30, 0x6c, 0x79, 0x26, 0x86, 0xa5,
0xe6, 0xc2, 0x69, 0x7d, 0x21, 0x6c, 0x92, 0xff, 0x81, 0x24, 0x6d, 0xfa, 0x17, 0xc2, 0x8e, 0xb4,
0x5c, 0xd8, 0x7e, 0x29, 0xef, 0xee, 0x15, 0x91, 0x7a, 0x57, 0x69, 0xcd, 0x05, 0x0c, 0xa4, 0x07,
0x5d, 0x5d, 0x18, 0x2e, 0x8a, 0x80, 0x43, 0xc2, 0x7a, 0xd8, 0x68, 0xbe, 0xa2, 0x05, 0x5f, 0x04,
0xe2, 0x1f, 0x0a, 0x22, 0xd2, 0x80, 0xd0, 0x6e, 0xb4, 0x80, 0xb0, 0x23, 0x55, 0x07, 0x3b, 0xff,
0x10, 0xa3, 0x05, 0x68, 0x8c, 0x48, 0x95, 0x5b, 0x74, 0xa2, 0x7a, 0x40, 0x10, 0xdb, 0x85, 0x2e,
0x22, 0xb5, 0xf5, 0x86, 0x3c, 0xe5, 0xd3, 0xe2, 0x5b, 0x8c, 0x94, 0x6c, 0x0a, 0x52, 0x3c, 0xb2,
0x00, 0x8d, 0x0c, 0x52, 0xae, 0xfd, 0xae, 0xbc, 0x12, 0xcf, 0x93, 0x8b, 0x30, 0xc2, 0x7a, 0xc3,
0xa0, 0x70, 0x90, 0x35, 0x5b, 0xad, 0xe7, 0x69, 0x4a, 0xa9, 0x33, 0xdc, 0xb7, 0x00, 0x0d, 0x59,
0x28, 0x5b, 0x9e, 0x75, 0xb8, 0x6c, 0x40, 0x88, 0x4e, 0x5f, 0x8e, 0x89, 0x8a, 0x25, 0x70, 0x11,
0xab, 0xa9, 0xd5, 0x2c, 0x87, 0xdd, 0xe2, 0x14, 0x90, 0x27, 0x9d, 0x96, 0x96, 0x63, 0x0d, 0x5a,
0xb9, 0x99, 0x05, 0xdd, 0xb5, 0x3c, 0x45, 0x5f, 0x88, 0x34, 0x19, 0x45, 0x25, 0xdd, 0xfd, 0xa5,
0xec, 0x76, 0x7b, 0x07, 0x54, 0x59, 0x79, 0x68, 0x37, 0xdc, 0x87, 0xd1, 0xd4, 0x8d, 0xb3, 0x57,
0xae, 0x23, 0xf3, 0x80, 0x1e, 0xde, 0xa9, 0xdf, 0xc0, 0x86, 0xda, 0xcc, 0x70, 0x1a, 0xe9, 0xc8,
0xc8, 0x24, 0x90, 0x98, 0x35, 0x66, 0x00, 0xdb, 0xda, 0x6c, 0x73, 0xd8, 0xf3, 0x42, 0xdb, 0x2c,
0x41, 0x3e, 0x22, 0x19, 0xeb, 0x06, 0xbd, 0x21, 0x8f, 0x8c, 0x46, 0x70, 0x56, 0x6f, 0xc0, 0xda,
0x7d, 0x87, 0xfa, 0x8d, 0x74, 0x92, 0x22, 0xba, 0xfb, 0x78, 0x6d, 0x1d, 0xf6, 0x1e, 0xaf, 0x82,
0x4a, 0x97, 0x0f, 0xcf, 0x48, 0x2d, 0x5e, 0xa5, 0xe0, 0x57, 0x24, 0x91, 0x70, 0xe0, 0x29, 0x6e,
0xf7, 0xb2, 0x1e, 0xb1, 0xbf, 0x46, 0x97, 0x7f, 0xf7, 0xd9, 0x0d, 0x58, 0x9f, 0x63, 0xfd, 0xad,
0xa4, 0xfa, 0xdc, 0x80, 0x29, 0x7d, 0x33, 0x74, 0x89, 0xa9, 0xfe, 0xe6, 0x9f, 0x16, 0x73, 0x6c,
0xd4, 0x73, 0x96, 0xa6, 0x18, 0x9c, 0xb8, 0x8a, 0x78, 0x4b, 0x90, 0xb7, 0x78, 0x81, 0x24, 0x33,
0xbb, 0xfd, 0xc9, 0x42, 0xd6, 0x19, 0xa6, 0x47, 0x2c, 0x43, 0xf1, 0xe9, 0x9a, 0xe7, 0x36, 0x88,
0x47, 0x58, 0x8c, 0xa9, 0xb6, 0xf1, 0x96, 0xc5, 0xdc, 0x0f, 0x3f, 0x9f, 0xe8, 0xa6, 0xd7, 0xcb,
0x69, 0xd6, 0xda, 0x7a, 0x9b, 0xe9, 0x1c, 0x4e, 0xea, 0x86, 0x16, 0x76, 0xd1, 0xc1, 0xaa, 0x1a,
0x6c, 0x3d, 0x72, 0x0c, 0x6d, 0xf7, 0x0c, 0x18, 0x8c, 0xa6, 0x28, 0x63, 0x4d, 0xbf, 0x35, 0x34,
0x3e, 0x73, 0xd0, 0x3b, 0x31, 0x5a, 0xa8, 0x6a, 0x25, 0x1c, 0xfe, 0x04, 0x6b, 0xd7, 0xf6, 0xe3,
0xcf, 0x9c, 0xaf, 0x4d, 0x6d, 0xee, 0xbc, 0xff, 0x00, 0x3e, 0xc9, 0xeb, 0xd0, 0xd8, 0xdc, 0x82,
0xc1, 0x6a, 0x6a, 0x78, 0xac, 0xe9, 0xdc, 0xb5, 0x86, 0xa7, 0xff, 0x5e, 0x2b, 0x32, 0x3a, 0x9c,
0x03, 0x82, 0x83, 0xfb, 0xbe, 0x1e, 0xfc, 0xc4, 0x1e, 0xe3, 0xa4, 0x91, 0x86, 0xa4, 0xef, 0x8b,
0xf0, 0xa2, 0x7a, 0x2b, 0x3c, 0xce, 0x58, 0x7d, 0xf9, 0x9a, 0xf9, 0x7b, 0x47, 0x59, 0x45, 0xb7,
0x9b, 0x48, 0x55, 0xd1, 0xff, 0x75, 0x3a, 0x6f, 0x9e, 0xfd, 0x68, 0x81, 0x4a, 0x37, 0x82, 0x1f,
0x76, 0xfb, 0xfd, 0x45, 0xda, 0xd6, 0xf4, 0xbd, 0x25, 0xc6, 0x4b, 0x7f, 0xdc, 0x1a, 0x34, 0xe8,
0x54, 0xdd, 0x15, 0x73, 0xf3, 0x8c, 0x12, 0xaa, 0x5a, 0x88, 0xb7, 0x7c, 0xec, 0xe0, 0xde, 0x09,
0x3e, 0xc2, 0xc9, 0xce, 0x01, 0x8a, 0x38, 0x6a, 0xa2, 0x35, 0xee, 0x12, 0x75, 0xbb, 0x74, 0xa3,
0xee, 0x1e, 0x5b, 0xb7, 0x2e, 0x93, 0xa9, 0x4f, 0x90, 0xa7, 0x2a, 0xce, 0xc8, 0x5e, 0xf3, 0x73,
0x13, 0x56, 0x77, 0x3a, 0xf9, 0x07, 0x0b, 0xfe, 0xdb, 0x0b, 0xc8, 0x8b, 0xe7, 0x4a, 0xc1, 0x3c,
0x77, 0xb1, 0xfa, 0xe0, 0xab, 0x81, 0x8a, 0xce, 0xb9, 0xf1, 0xab, 0x5b, 0x73, 0xf4, 0xe5, 0x4c,
0x53, 0xeb, 0xd3, 0x06, 0xc5, 0x34, 0xd5, 0xb2, 0x2e, 0x7e, 0xc6, 0x96, 0x1e, 0x37, 0x51, 0x84,
0xfe, 0xe5, 0x3c, 0xbb, 0x68, 0x7a, 0x29, 0x74, 0xbe, 0x4b, 0x50, 0x68, 0xf6, 0x48, 0xbe, 0xb2,
0x89, 0xb6, 0x7f, 0x73, 0xea, 0xee, 0x03, 0x8f, 0xe8, 0x39, 0x32, 0xd2, 0x48, 0x1e, 0x10, 0xae,
0x64, 0x0c, 0xf9, 0x5f, 0xe4, 0x2d, 0x9d, 0xea, 0xc4, 0x95, 0xc7, 0xbb, 0x8b, 0x23, 0x2e, 0xda,
0x71, 0xe4, 0xc2, 0xe7, 0x2d, 0xff, 0x1b, 0xc0, 0xf8, 0x47, 0x1e, 0xb0, 0x6f, 0x75, 0x78, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE axis3d_back_xpm[1] = {{ png, sizeof( png ), "axis3d_back_xpm" }};
+85 -84
View File
@@ -8,90 +8,91 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x05, 0x22, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x7b, 0x4c, 0x53,
0x57, 0x1c, 0xc7, 0x0f, 0x2f, 0x85, 0xa1, 0x43, 0x51, 0xc4, 0x69, 0x9c, 0xd3, 0xa1, 0x43, 0xf7,
0xd2, 0x2c, 0x33, 0x73, 0x33, 0x4e, 0xb7, 0x3f, 0x30, 0x30, 0xa8, 0x1d, 0x14, 0xfa, 0x6e, 0xa1,
0x50, 0x4a, 0x0b, 0x8a, 0x80, 0x82, 0x65, 0xa8, 0x20, 0x38, 0x50, 0xd1, 0xa9, 0x81, 0x15, 0x54,
0x64, 0xb0, 0xcc, 0x17, 0x1a, 0x11, 0x4d, 0x71, 0xc8, 0x1c, 0xc3, 0x17, 0x28, 0x4e, 0x97, 0x88,
0xe0, 0x0b, 0xc7, 0x94, 0x39, 0x79, 0x6b, 0x7d, 0xd0, 0xc2, 0xfd, 0xee, 0xdc, 0x3a, 0x9d, 0xa5,
0x80, 0xb8, 0xb8, 0x6f, 0x72, 0x92, 0x7b, 0x4f, 0x4e, 0xce, 0x27, 0xbf, 0xc7, 0xf9, 0x9e, 0x43,
0xc8, 0x20, 0x65, 0xcf, 0x11, 0x7a, 0xd9, 0x71, 0xc4, 0x3b, 0x89, 0xb7, 0x20, 0x81, 0xf8, 0xc9,
0xe6, 0x12, 0x1e, 0x6f, 0x08, 0x79, 0xa9, 0xfa, 0x40, 0xe9, 0xe0, 0xca, 0x57, 0x6e, 0x1a, 0x2f,
0x8d, 0x32, 0xb8, 0x85, 0xc4, 0x62, 0x4a, 0x6c, 0x3a, 0xe3, 0x2a, 0x8b, 0x66, 0x86, 0x06, 0x28,
0x98, 0xa1, 0x81, 0x61, 0x3d, 0xce, 0x82, 0x70, 0xc3, 0x70, 0xbe, 0xea, 0xaa, 0x8d, 0xaf, 0xb8,
0x88, 0xf8, 0x08, 0xb5, 0xc4, 0x4f, 0x38, 0x9f, 0xcc, 0x93, 0x3b, 0xbe, 0x18, 0xc4, 0x57, 0x32,
0x89, 0x42, 0x6a, 0x35, 0xd9, 0xf9, 0x06, 0xfd, 0xd9, 0xf3, 0x98, 0x9d, 0x9c, 0x8d, 0xf8, 0x33,
0x2d, 0x88, 0x3a, 0xd9, 0x84, 0x90, 0x63, 0xd7, 0xc1, 0x2d, 0x3e, 0x87, 0x8f, 0xb7, 0xeb, 0xe1,
0xb9, 0xae, 0x00, 0xe3, 0xb5, 0x1b, 0xe1, 0x1a, 0x91, 0xc8, 0x38, 0x8a, 0x34, 0x8c, 0x2d, 0x57,
0xce, 0xd8, 0x70, 0xe5, 0x3d, 0xf6, 0x01, 0x8a, 0x0e, 0x1a, 0xb9, 0xdd, 0x80, 0x0c, 0x47, 0xae,
0x4c, 0x34, 0x4a, 0x10, 0xde, 0x7a, 0xf8, 0xcc, 0xaf, 0x0c, 0xa8, 0x2a, 0x2f, 0xd6, 0x61, 0xf6,
0xaa, 0x2d, 0xd0, 0xd6, 0xb4, 0x61, 0x11, 0x05, 0x05, 0x53, 0x50, 0x40, 0xe9, 0x45, 0x2c, 0x28,
0xae, 0xc1, 0x27, 0x7b, 0x4e, 0xe0, 0xbd, 0xc2, 0xa3, 0x98, 0xbc, 0xed, 0x10, 0xdc, 0xb2, 0x8a,
0xe0, 0x98, 0x59, 0x00, 0x22, 0x5d, 0x0c, 0xe2, 0x27, 0x01, 0x9b, 0x91, 0xbe, 0x09, 0x3c, 0x9e,
0x93, 0x9b, 0x30, 0x22, 0x6f, 0x56, 0x4c, 0x52, 0xc7, 0xad, 0xd6, 0x36, 0x3c, 0x51, 0x55, 0xfd,
0x55, 0xcc, 0xd4, 0x66, 0x9a, 0x21, 0xa1, 0x15, 0x37, 0x20, 0x28, 0xab, 0x87, 0xdf, 0xa1, 0x0b,
0xf8, 0x6c, 0x5f, 0x15, 0x3e, 0xdc, 0x59, 0x81, 0x69, 0xf9, 0x47, 0x30, 0x21, 0xa7, 0x18, 0x23,
0x36, 0xef, 0x86, 0x6d, 0x78, 0x02, 0x48, 0xe8, 0x32, 0xd8, 0x2c, 0x94, 0x33, 0xfd, 0xa4, 0x4a,
0xf0, 0xb6, 0xab, 0x20, 0xbc, 0x21, 0xb1, 0x60, 0xcf, 0xc3, 0x1e, 0x86, 0xc1, 0xb3, 0xba, 0xd0,
0xf0, 0x3b, 0xa6, 0xc7, 0xa5, 0x41, 0x5a, 0x7e, 0x05, 0x81, 0x47, 0x2e, 0xc1, 0x97, 0x42, 0x3e,
0xdf, 0x5f, 0x8d, 0x8f, 0x76, 0x55, 0xe2, 0xdd, 0x82, 0x32, 0x4c, 0xda, 0xfa, 0x38, 0x1a, 0x87,
0xa8, 0x64, 0x1a, 0x4d, 0x34, 0x48, 0xfa, 0x76, 0x0a, 0x92, 0x59, 0x81, 0x6c, 0x86, 0xf9, 0x87,
0x68, 0x5e, 0x93, 0x68, 0xda, 0x8e, 0xd7, 0xd6, 0xa3, 0x2f, 0xd5, 0xdd, 0x6c, 0x82, 0x47, 0xf4,
0x2a, 0x0a, 0x38, 0x0f, 0xaf, 0x03, 0x67, 0xf1, 0x69, 0xd1, 0x29, 0xcc, 0xda, 0xf9, 0x0b, 0xde,
0xa1, 0x10, 0x36, 0x65, 0xee, 0xd9, 0xfb, 0xe0, 0x18, 0xbf, 0x0e, 0x44, 0xa0, 0x06, 0xf9, 0x7a,
0x1b, 0x48, 0x46, 0x9e, 0x35, 0x88, 0x46, 0x51, 0x6a, 0xc7, 0x91, 0x20, 0x6d, 0x77, 0x31, 0x73,
0xba, 0xee, 0x2a, 0x1e, 0x76, 0x19, 0xad, 0x40, 0x37, 0xfe, 0x6a, 0xc6, 0xeb, 0xea, 0x44, 0x73,
0x3d, 0x58, 0xc0, 0x8c, 0xc2, 0x72, 0x78, 0xee, 0x28, 0xc5, 0xc4, 0xdc, 0x83, 0x8f, 0xeb, 0x92,
0xb8, 0x11, 0x24, 0x48, 0x05, 0x92, 0x9a, 0x63, 0x86, 0x98, 0x23, 0xe2, 0xf4, 0x02, 0x8d, 0x95,
0x68, 0x4e, 0x46, 0xe7, 0x16, 0xc2, 0x37, 0x25, 0x93, 0xf1, 0x50, 0xc6, 0x98, 0x46, 0xf0, 0x95,
0xcc, 0x1b, 0x8a, 0xe8, 0x9e, 0xc0, 0xf4, 0xcd, 0xa6, 0xec, 0xc3, 0x47, 0x99, 0x33, 0x97, 0xaf,
0xa3, 0xf1, 0x4e, 0x0b, 0xc6, 0x29, 0x97, 0x62, 0x7a, 0xfe, 0x8f, 0x98, 0x92, 0xa7, 0xa7, 0x80,
0x12, 0x8c, 0xfd, 0x76, 0xbf, 0xb9, 0x26, 0x43, 0x56, 0x66, 0x81, 0xf0, 0xc2, 0x40, 0x68, 0x57,
0x9a, 0x21, 0xec, 0xa0, 0x51, 0xd9, 0x72, 0x83, 0x7b, 0x2c, 0x40, 0xe3, 0x64, 0x51, 0xfa, 0xde,
0x29, 0xbb, 0xd3, 0x71, 0x17, 0x05, 0x3f, 0x55, 0x42, 0x92, 0xa9, 0x63, 0x66, 0x44, 0x69, 0x8d,
0x63, 0xc4, 0xea, 0x1e, 0x5b, 0x8e, 0x14, 0xce, 0x91, 0x2b, 0x30, 0x6c, 0x79, 0x26, 0x86, 0xa5,
0xe6, 0xc2, 0x69, 0x7d, 0x21, 0x6c, 0x92, 0xff, 0x81, 0x24, 0x6d, 0xfa, 0x17, 0xc2, 0x8e, 0xb4,
0x5c, 0xd8, 0x7e, 0x29, 0xef, 0xee, 0x15, 0x91, 0x7a, 0x57, 0x69, 0xcd, 0x05, 0x0c, 0xa4, 0x07,
0x5d, 0x5d, 0x18, 0x2e, 0x8a, 0x80, 0x43, 0xc2, 0x7a, 0xd8, 0x68, 0xbe, 0xa2, 0x05, 0x5f, 0x04,
0xe2, 0x1f, 0x0a, 0x22, 0xd2, 0x80, 0xd0, 0x6e, 0xb4, 0x80, 0xb0, 0x23, 0x55, 0x07, 0x3b, 0xff,
0x10, 0xa3, 0x05, 0x68, 0x8c, 0x48, 0x95, 0x5b, 0x74, 0xa2, 0x7a, 0x40, 0x10, 0xdb, 0x85, 0x2e,
0x22, 0xb5, 0xf5, 0x86, 0x3c, 0xe5, 0xd3, 0xe2, 0x5b, 0x8c, 0x94, 0x6c, 0x0a, 0x52, 0x3c, 0xb2,
0x00, 0x8d, 0x0c, 0x52, 0xae, 0xfd, 0xae, 0xbc, 0x12, 0xcf, 0x93, 0x8b, 0x30, 0xc2, 0x7a, 0xc3,
0xa0, 0x70, 0x90, 0x35, 0x5b, 0xad, 0xe7, 0x69, 0x4a, 0xa9, 0x33, 0xdc, 0xb7, 0x00, 0x0d, 0x59,
0x28, 0x5b, 0x9e, 0x75, 0xb8, 0x6c, 0x40, 0x88, 0x4e, 0x5f, 0x8e, 0x89, 0x8a, 0x25, 0x70, 0x11,
0xab, 0xa9, 0xd5, 0x2c, 0x87, 0xdd, 0xe2, 0x14, 0x90, 0x27, 0x9d, 0x96, 0x96, 0x63, 0x0d, 0x5a,
0xb9, 0x99, 0x05, 0xdd, 0xb5, 0x3c, 0x45, 0x5f, 0x88, 0x34, 0x19, 0x45, 0x25, 0xdd, 0xfd, 0xa5,
0xec, 0x76, 0x7b, 0x07, 0x54, 0x59, 0x79, 0x68, 0x37, 0xdc, 0x87, 0xd1, 0xd4, 0x8d, 0xb3, 0x57,
0xae, 0x23, 0xf3, 0x80, 0x1e, 0xde, 0xa9, 0xdf, 0xc0, 0x86, 0xda, 0xcc, 0x70, 0x1a, 0xe9, 0xc8,
0xc8, 0x24, 0x90, 0x98, 0x35, 0x66, 0x00, 0xdb, 0xda, 0x6c, 0x73, 0xd8, 0xf3, 0x42, 0xdb, 0x2c,
0x41, 0x3e, 0x22, 0x19, 0xeb, 0x06, 0xbd, 0x21, 0x8f, 0x8c, 0x46, 0x70, 0x56, 0x6f, 0xc0, 0xda,
0x7d, 0x87, 0xfa, 0x8d, 0x74, 0x92, 0x22, 0xba, 0xfb, 0x78, 0x6d, 0x1d, 0xf6, 0x1e, 0xaf, 0x82,
0x4a, 0x97, 0x0f, 0xcf, 0x48, 0x2d, 0x5e, 0xa5, 0xe0, 0x57, 0x24, 0x91, 0x70, 0xe0, 0x29, 0x6e,
0xf7, 0xb2, 0x1e, 0xb1, 0xbf, 0x46, 0x97, 0x7f, 0xf7, 0xd9, 0x0d, 0x58, 0x9f, 0x63, 0xfd, 0xad,
0xa4, 0xfa, 0xdc, 0x80, 0x29, 0x7d, 0x33, 0x74, 0x89, 0xa9, 0xfe, 0xe6, 0x9f, 0x16, 0x73, 0x6c,
0xd4, 0x73, 0x96, 0xa6, 0x18, 0x9c, 0xb8, 0x8a, 0x78, 0x4b, 0x90, 0xb7, 0x78, 0x81, 0x24, 0x33,
0xbb, 0xfd, 0xc9, 0x42, 0xd6, 0x19, 0xa6, 0x47, 0x2c, 0x43, 0xf1, 0xe9, 0x9a, 0xe7, 0x36, 0x88,
0x47, 0x58, 0x8c, 0xa9, 0xb6, 0xf1, 0x96, 0xc5, 0xdc, 0x0f, 0x3f, 0x9f, 0xe8, 0xa6, 0xd7, 0xcb,
0x69, 0xd6, 0xda, 0x7a, 0x9b, 0xe9, 0x1c, 0x4e, 0xea, 0x86, 0x16, 0x76, 0xd1, 0xc1, 0xaa, 0x1a,
0x6c, 0x3d, 0x72, 0x0c, 0x6d, 0xf7, 0x0c, 0x18, 0x8c, 0xa6, 0x28, 0x63, 0x4d, 0xbf, 0x35, 0x34,
0x3e, 0x73, 0xd0, 0x3b, 0x31, 0x5a, 0xa8, 0x6a, 0x25, 0x1c, 0xfe, 0x04, 0x6b, 0xd7, 0xf6, 0xe3,
0xcf, 0x9c, 0xaf, 0x4d, 0x6d, 0xee, 0xbc, 0xff, 0x00, 0x3e, 0xc9, 0xeb, 0xd0, 0xd8, 0xdc, 0x82,
0xc1, 0x6a, 0x6a, 0x78, 0xac, 0xe9, 0xdc, 0xb5, 0x86, 0xa7, 0xff, 0x5e, 0x2b, 0x32, 0x3a, 0x9c,
0x03, 0x82, 0x83, 0xfb, 0xbe, 0x1e, 0xfc, 0xc4, 0x1e, 0xe3, 0xa4, 0x91, 0x86, 0xa4, 0xef, 0x8b,
0xf0, 0xa2, 0x7a, 0x2b, 0x3c, 0xce, 0x58, 0x7d, 0xf9, 0x9a, 0xf9, 0x7b, 0x47, 0x59, 0x45, 0xb7,
0x9b, 0x48, 0x55, 0xd1, 0xff, 0x75, 0x3a, 0x6f, 0x9e, 0xfd, 0x68, 0x81, 0x4a, 0x37, 0x82, 0x1f,
0x76, 0xfb, 0xfd, 0x45, 0xda, 0xd6, 0xf4, 0xbd, 0x25, 0xc6, 0x4b, 0x7f, 0xdc, 0x1a, 0x34, 0xe8,
0x54, 0xdd, 0x15, 0x73, 0xf3, 0x8c, 0x12, 0xaa, 0x5a, 0x88, 0xb7, 0x7c, 0xec, 0xe0, 0xde, 0x09,
0x3e, 0xc2, 0xc9, 0xce, 0x01, 0x8a, 0x38, 0x6a, 0xa2, 0x35, 0xee, 0x12, 0x75, 0xbb, 0x74, 0xa3,
0xee, 0x1e, 0x5b, 0xb7, 0x2e, 0x93, 0xa9, 0x4f, 0x90, 0xa7, 0x2a, 0xce, 0xc8, 0x5e, 0xf3, 0x73,
0x13, 0x56, 0x77, 0x3a, 0xf9, 0x07, 0x0b, 0xfe, 0xdb, 0x0b, 0xc8, 0x8b, 0xe7, 0x4a, 0xc1, 0x3c,
0x77, 0xb1, 0xfa, 0xe0, 0xab, 0x81, 0x8a, 0xce, 0xb9, 0xf1, 0xab, 0x5b, 0x73, 0xf4, 0xe5, 0x4c,
0x53, 0xeb, 0xd3, 0x06, 0xc5, 0x34, 0xd5, 0xb2, 0x2e, 0x7e, 0xc6, 0x96, 0x1e, 0x37, 0x51, 0x84,
0xfe, 0xe5, 0x3c, 0xbb, 0x68, 0x7a, 0x29, 0x74, 0xbe, 0x4b, 0x50, 0x68, 0xf6, 0x48, 0xbe, 0xb2,
0x89, 0xb6, 0x7f, 0x73, 0xea, 0xee, 0x03, 0x8f, 0xe8, 0x39, 0x32, 0xd2, 0x48, 0x1e, 0x10, 0xae,
0x64, 0x0c, 0xf9, 0x5f, 0xe4, 0x2d, 0x9d, 0xea, 0xc4, 0x95, 0xc7, 0xbb, 0x8b, 0x23, 0x2e, 0xda,
0x71, 0xe4, 0xc2, 0xe7, 0x2d, 0xff, 0x1b, 0xc0, 0xf8, 0x47, 0x1e, 0xb0, 0x6f, 0x75, 0x78, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x05, 0x33, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0xd6, 0x79, 0x4c, 0x93,
0x67, 0x1c, 0x07, 0xf0, 0x87, 0x8a, 0x47, 0xbd, 0xa6, 0x80, 0x32, 0x20, 0x9b, 0xd3, 0x2c, 0xf3,
0x0f, 0x37, 0xdd, 0x8c, 0x59, 0xe2, 0xa6, 0x8b, 0xc6, 0x73, 0x32, 0xe4, 0xb2, 0xf4, 0x82, 0xb6,
0x54, 0xe9, 0x05, 0x0c, 0x14, 0x07, 0x2a, 0xa0, 0x4e, 0x86, 0x58, 0x70, 0x43, 0x64, 0x72, 0x08,
0x11, 0x10, 0x25, 0xa0, 0x53, 0x4e, 0x07, 0x28, 0x08, 0x55, 0x04, 0x15, 0x1c, 0x1e, 0xc1, 0x33,
0xe2, 0x7d, 0x15, 0x2b, 0x16, 0x15, 0x95, 0xb6, 0xef, 0x77, 0x6f, 0xbb, 0xd0, 0x50, 0x0e, 0xe9,
0x96, 0xf9, 0x24, 0x4f, 0xde, 0xb4, 0xe9, 0xf3, 0x7c, 0xde, 0xe7, 0xf7, 0x7b, 0xfa, 0x7b, 0x1e,
0x42, 0xac, 0x6d, 0xcb, 0x04, 0x9f, 0x11, 0x57, 0x1e, 0x87, 0xb8, 0xf9, 0xce, 0x24, 0x2c, 0xd6,
0x68, 0xf2, 0x3e, 0xda, 0x68, 0xd6, 0x2a, 0xb9, 0x3d, 0x4f, 0xd2, 0x31, 0x37, 0x22, 0xa6, 0x6b,
0x41, 0xe4, 0xd6, 0x76, 0x67, 0x41, 0x90, 0x76, 0x3c, 0x47, 0xa2, 0x71, 0x11, 0x06, 0x5d, 0x9c,
0x24, 0x0e, 0x3d, 0xc8, 0xf4, 0x12, 0x87, 0xd1, 0x2f, 0xb1, 0x84, 0xb8, 0xf9, 0x4d, 0x26, 0x9b,
0x37, 0x33, 0xfe, 0xbd, 0xe0, 0x21, 0x1a, 0xe7, 0xc0, 0x95, 0x96, 0x2f, 0x8a, 0x8a, 0xd3, 0xde,
0x78, 0xf8, 0x18, 0x2d, 0x77, 0xef, 0xa3, 0xbb, 0xe9, 0xf4, 0x7a, 0x5c, 0x7f, 0xf0, 0x08, 0x25,
0x67, 0xce, 0x21, 0xfe, 0x50, 0xa9, 0x9e, 0xbf, 0x7d, 0x57, 0xfb, 0x8c, 0xe0, 0x0d, 0x6d, 0xf4,
0x0b, 0x68, 0xed, 0x79, 0xd2, 0x7b, 0x4e, 0x7e, 0x81, 0x35, 0xf6, 0x3c, 0x79, 0xd4, 0xe0, 0xc8,
0x0f, 0xdc, 0xd9, 0xf4, 0xa0, 0x87, 0x3b, 0x8a, 0x2b, 0xde, 0x52, 0x14, 0x85, 0x9a, 0x8b, 0x97,
0x21, 0x4a, 0x4c, 0x87, 0x35, 0xad, 0xfd, 0xe5, 0x2b, 0x2c, 0x88, 0x8c, 0xd3, 0x8f, 0xf0, 0xf2,
0xd7, 0xbd, 0x8b, 0xb0, 0x19, 0xcf, 0x91, 0x46, 0x4c, 0x12, 0x87, 0xb4, 0x37, 0xdf, 0xbc, 0x6d,
0x1e, 0x7c, 0xeb, 0x89, 0x1a, 0x85, 0x0d, 0x4d, 0x56, 0x41, 0xe1, 0xd9, 0xf9, 0x7a, 0x3a, 0xac,
0x86, 0x31, 0xac, 0x95, 0x2f, 0xfb, 0x27, 0x96, 0x73, 0x1d, 0xed, 0x79, 0xb2, 0x86, 0x15, 0x71,
0x49, 0x1d, 0x2f, 0x5f, 0xbf, 0xb1, 0x18, 0x6c, 0x84, 0xd2, 0xcb, 0xab, 0x07, 0x45, 0x92, 0x4a,
0x2b, 0x29, 0x47, 0x5f, 0x85, 0xa1, 0xf5, 0xb1, 0x1a, 0xe3, 0xd8, 0x92, 0x67, 0x7d, 0x0c, 0x5b,
0x0f, 0xe1, 0x62, 0x7b, 0xae, 0x44, 0xbd, 0xbf, 0xf6, 0x94, 0xbe, 0xbf, 0x09, 0xfe, 0xba, 0x79,
0x0b, 0x9e, 0xb1, 0x89, 0xef, 0x44, 0x72, 0x6b, 0xea, 0xa8, 0x09, 0x7c, 0xb9, 0xa1, 0x3b, 0x97,
0x1f, 0xf8, 0x04, 0x68, 0x2c, 0x77, 0x15, 0x5b, 0x7a, 0x88, 0xe9, 0x23, 0xc1, 0xf7, 0x9b, 0x12,
0x90, 0x53, 0x7d, 0x02, 0x9a, 0x8e, 0x17, 0x7d, 0x26, 0x79, 0xab, 0xd3, 0xe1, 0xd1, 0xb3, 0xe7,
0x03, 0x22, 0xc6, 0x4d, 0x61, 0xc7, 0x93, 0x1a, 0x1a, 0xaf, 0xb7, 0x9a, 0x3e, 0x77, 0xe9, 0xf4,
0xa0, 0x73, 0xac, 0xb6, 0x80, 0x46, 0xb2, 0x65, 0x0d, 0x0b, 0x53, 0x8a, 0xb0, 0x38, 0xa5, 0x88,
0x9a, 0x16, 0xf1, 0xab, 0x7e, 0x2c, 0x3f, 0x90, 0x1a, 0xc9, 0x96, 0x1a, 0x26, 0x4b, 0x7e, 0xea,
0x62, 0x29, 0x93, 0x91, 0x79, 0xb4, 0x16, 0x75, 0x97, 0xaf, 0x61, 0xe9, 0x26, 0x65, 0xbf, 0xc8,
0xc9, 0x96, 0xab, 0xb0, 0xe3, 0x4a, 0x0c, 0xaa, 0x4b, 0x57, 0xa8, 0xee, 0xef, 0x3a, 0x3a, 0x5f,
0xc3, 0x9e, 0x2b, 0xbd, 0x6f, 0x09, 0x71, 0xe4, 0xe5, 0x5e, 0x05, 0x75, 0x08, 0x3b, 0xa3, 0x46,
0x78, 0xe3, 0x53, 0xac, 0x39, 0xfd, 0x04, 0x32, 0xd5, 0x1d, 0xb8, 0x1f, 0xac, 0xc7, 0xac, 0x1d,
0xf9, 0x94, 0xcb, 0x9a, 0xad, 0x3a, 0x26, 0x47, 0x4e, 0x31, 0x96, 0x0b, 0xe0, 0x20, 0x08, 0xd6,
0x2f, 0x8a, 0x8e, 0xa7, 0xb6, 0xfd, 0x51, 0x82, 0xbb, 0xea, 0x36, 0x5c, 0xb8, 0x7d, 0x07, 0x74,
0x5e, 0x0d, 0x47, 0x1a, 0x9b, 0xa9, 0x9e, 0x78, 0x9b, 0xb6, 0x03, 0x13, 0xf9, 0xf2, 0x56, 0x0b,
0x88, 0xc9, 0x96, 0xe6, 0x2f, 0xda, 0x53, 0x01, 0xc9, 0x89, 0x3b, 0x90, 0x9d, 0xbc, 0x0b, 0x09,
0x8d, 0x88, 0x8e, 0xdf, 0x04, 0xbb, 0xf2, 0x0a, 0xdc, 0xca, 0x2e, 0x60, 0xc1, 0xe1, 0xb3, 0xf8,
0x7a, 0x5f, 0x0d, 0x26, 0x29, 0xb3, 0xe0, 0x1c, 0x9f, 0x8d, 0xd1, 0xe1, 0x09, 0x94, 0xad, 0x38,
0x4c, 0x6f, 0xe3, 0xbd, 0x92, 0x62, 0x78, 0x0a, 0x91, 0x5c, 0x5a, 0x69, 0xe8, 0xbd, 0xca, 0x7b,
0x6d, 0x1a, 0x38, 0xf2, 0x15, 0x57, 0x2c, 0xa0, 0xe1, 0x2b, 0x02, 0x76, 0xcf, 0xde, 0x75, 0x18,
0x9c, 0xa3, 0x57, 0xc1, 0x3b, 0x76, 0xcd, 0xf4, 0xf4, 0x2e, 0x6f, 0xa1, 0x91, 0xf3, 0x58, 0x58,
0xd8, 0x88, 0x6f, 0x0f, 0x9c, 0xc2, 0xe7, 0x19, 0x65, 0x60, 0x0a, 0x43, 0xe1, 0x92, 0x56, 0x84,
0x71, 0x3b, 0x0b, 0x30, 0x74, 0x7b, 0x0e, 0x88, 0x72, 0x0f, 0x6c, 0x04, 0x21, 0x86, 0xf2, 0xa6,
0x0b, 0x7d, 0xc2, 0x69, 0xfc, 0x83, 0x3b, 0x09, 0x02, 0x9b, 0x2d, 0x77, 0x9c, 0xa7, 0x38, 0xfe,
0x8b, 0x84, 0x5c, 0x2c, 0x2b, 0x69, 0x86, 0x6b, 0xe9, 0x79, 0xd3, 0x73, 0x71, 0x51, 0x13, 0xe6,
0x1f, 0x3a, 0x83, 0x6f, 0xe8, 0x90, 0xce, 0xa4, 0x57, 0x33, 0x35, 0xf3, 0x08, 0x26, 0x6c, 0x49,
0x85, 0xc3, 0xef, 0x07, 0x31, 0xf2, 0xb7, 0x7d, 0x26, 0xa4, 0x1b, 0x2a, 0x3b, 0xdb, 0xdc, 0x07,
0xba, 0x74, 0xfb, 0x1e, 0xe8, 0x52, 0xd5, 0x60, 0x01, 0x31, 0x96, 0x0b, 0xd7, 0x4f, 0x8e, 0x49,
0xc7, 0x9c, 0x03, 0xf5, 0x98, 0x4b, 0xe7, 0x65, 0x0e, 0xbd, 0x82, 0xd9, 0x05, 0x27, 0x31, 0x2b,
0xaf, 0x16, 0xd3, 0x73, 0xab, 0x30, 0x35, 0xab, 0x02, 0x8e, 0x5b, 0x33, 0x30, 0x4c, 0xb4, 0x1a,
0x23, 0xd6, 0x25, 0x80, 0x11, 0x93, 0x06, 0xf2, 0x4b, 0x5a, 0x37, 0xa4, 0x2f, 0x3e, 0x7d, 0xae,
0x0f, 0xd4, 0x74, 0xa3, 0x15, 0x2e, 0x82, 0xa0, 0xda, 0x5e, 0xe5, 0x86, 0x1f, 0xe8, 0xb8, 0x21,
0x51, 0x6f, 0x9c, 0x74, 0x46, 0x6e, 0x35, 0xa6, 0xef, 0xad, 0xc2, 0xb4, 0x9c, 0xa3, 0x26, 0x60,
0x4a, 0x66, 0x19, 0x9c, 0x12, 0xf3, 0x30, 0x6a, 0x4d, 0x2c, 0x46, 0x44, 0x25, 0x82, 0x11, 0xbd,
0x03, 0x64, 0x6d, 0x1c, 0x08, 0x5b, 0x06, 0x12, 0x95, 0x04, 0xe2, 0x25, 0xa6, 0x56, 0xed, 0xcc,
0x80, 0xf6, 0x55, 0x27, 0x9e, 0x3c, 0xd7, 0x9a, 0x21, 0xe3, 0x2e, 0x75, 0x16, 0x06, 0x97, 0x5b,
0x42, 0xae, 0x7c, 0xe1, 0xd8, 0xd5, 0xb1, 0xaf, 0x3f, 0xc9, 0x28, 0x45, 0x77, 0xff, 0x38, 0xbd,
0x18, 0xce, 0xa9, 0x85, 0x60, 0x06, 0x6e, 0xc4, 0xd0, 0x55, 0xe1, 0x60, 0xd2, 0xe1, 0xb2, 0x89,
0xcf, 0x32, 0x87, 0xcc, 0x1c, 0x3a, 0xbe, 0x42, 0xbf, 0x2e, 0x3b, 0xdf, 0xb4, 0xc5, 0xbf, 0xfc,
0x71, 0x03, 0xf2, 0x54, 0xf5, 0x88, 0x2d, 0x28, 0x86, 0x7f, 0xd2, 0x6e, 0x38, 0xf9, 0x29, 0x0a,
0x2d, 0x21, 0x37, 0x5f, 0xef, 0x61, 0x8a, 0xa8, 0x0e, 0xbb, 0xe4, 0x03, 0x30, 0xf6, 0xf1, 0xc9,
0x05, 0x18, 0x9b, 0x90, 0x83, 0xe1, 0xe1, 0x4a, 0x0c, 0xdb, 0xb2, 0x0b, 0x43, 0x12, 0xb2, 0xfb,
0x00, 0x3d, 0x72, 0xa4, 0xcb, 0x57, 0x35, 0x58, 0x84, 0xcd, 0x58, 0x23, 0x67, 0x04, 0xaf, 0xef,
0x1c, 0xe3, 0x23, 0x0e, 0xe8, 0x75, 0xa8, 0xf9, 0x2e, 0xb5, 0x11, 0x87, 0xb5, 0x1b, 0x27, 0xb4,
0xa5, 0x01, 0xe3, 0x93, 0x9e, 0xe0, 0x9f, 0x10, 0x0d, 0x00, 0xf4, 0x84, 0xf6, 0xd7, 0xd6, 0x5b,
0x40, 0x79, 0x74, 0x19, 0xb3, 0xe3, 0x48, 0x4e, 0x1b, 0x0b, 0x74, 0xaf, 0x15, 0x71, 0xe7, 0x10,
0x61, 0xc8, 0x53, 0xd3, 0xe0, 0xb0, 0x58, 0x90, 0x80, 0xf0, 0x41, 0x01, 0x33, 0xe4, 0x17, 0xa2,
0xdb, 0x5b, 0x5d, 0x67, 0x46, 0xd4, 0x74, 0x9e, 0x1c, 0x78, 0x32, 0x0d, 0x71, 0xe7, 0x7c, 0xd4,
0x4f, 0xd5, 0xe6, 0x7c, 0x45, 0xf8, 0x8a, 0x36, 0xf2, 0x73, 0x0a, 0x88, 0x22, 0x9a, 0xde, 0x51,
0xe9, 0xd6, 0x43, 0x82, 0x90, 0xae, 0xac, 0x2a, 0x95, 0x19, 0x5a, 0xb2, 0x51, 0xf9, 0x7c, 0xd4,
0x0a, 0x7f, 0xff, 0x01, 0x8e, 0x07, 0xdf, 0x4f, 0x89, 0xa7, 0xa8, 0x93, 0xc8, 0x22, 0xad, 0x06,
0x7a, 0x42, 0x99, 0x95, 0xb5, 0x26, 0x24, 0xeb, 0x98, 0x4a, 0x3f, 0x81, 0x2f, 0x53, 0x0d, 0x7c,
0xd4, 0xcd, 0x9b, 0x67, 0x4b, 0xdc, 0x45, 0xa9, 0xf4, 0xd1, 0xfd, 0x98, 0xb0, 0xa5, 0x1a, 0x12,
0xb4, 0xb1, 0x8b, 0x6c, 0x4e, 0xb6, 0x1a, 0xda, 0x5d, 0x71, 0x1c, 0x0f, 0x34, 0xcf, 0x8c, 0x35,
0xef, 0x29, 0x59, 0x26, 0xfa, 0xd0, 0xba, 0x7b, 0x82, 0x2b, 0x6f, 0x0a, 0x71, 0x17, 0xae, 0x25,
0x5e, 0xfe, 0xe7, 0x88, 0x97, 0xa8, 0x9d, 0xac, 0x5c, 0xfb, 0x82, 0x44, 0x28, 0x41, 0xb6, 0x65,
0x0e, 0x08, 0xa5, 0xfe, 0x59, 0x85, 0xef, 0xd6, 0xc5, 0x68, 0x99, 0xde, 0xfe, 0xdc, 0xff, 0x76,
0xfd, 0x59, 0xc2, 0xb2, 0xa3, 0x61, 0x16, 0xf1, 0xf0, 0x2f, 0x21, 0xee, 0x02, 0x2d, 0xe1, 0x05,
0x69, 0x48, 0x68, 0x0c, 0x45, 0x62, 0xd2, 0x7a, 0x40, 0xa1, 0x6f, 0x17, 0x46, 0xc6, 0x19, 0xe8,
0x03, 0xaf, 0xfc, 0xff, 0xb9, 0x73, 0x19, 0xc3, 0xeb, 0xca, 0x9b, 0x4f, 0x3c, 0x84, 0x29, 0x74,
0x7f, 0x48, 0x7c, 0x24, 0x6d, 0x24, 0x30, 0xfa, 0x8d, 0x0d, 0x57, 0xde, 0x35, 0xdc, 0x98, 0x5f,
0x4f, 0xbf, 0x89, 0xef, 0xe5, 0xae, 0x67, 0xba, 0x50, 0xba, 0x09, 0x22, 0x18, 0x9e, 0xe2, 0x96,
0x21, 0xee, 0x02, 0xde, 0x60, 0x3f, 0xff, 0x1b, 0x73, 0x06, 0xe5, 0x5c, 0xf9, 0x44, 0x86, 0x22,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE axis3d_front_xpm[1] = {{ png, sizeof( png ), "axis3d_front_xpm" }};
+40
View File
@@ -0,0 +1,40 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps.h>
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0x6c, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0x41, 0x4e, 0xc2,
0x40, 0x14, 0x86, 0x89, 0x17, 0xe0, 0x0c, 0x24, 0xba, 0x10, 0xd8, 0x72, 0x0d, 0xb8, 0x82, 0x96,
0xa4, 0xab, 0x76, 0x26, 0x8d, 0x3b, 0x63, 0x08, 0x89, 0xc6, 0xd4, 0xb4, 0x55, 0xd0, 0xa5, 0xb2,
0x82, 0x5b, 0xc8, 0xce, 0x13, 0xb0, 0x29, 0xac, 0x75, 0xd1, 0x4d, 0x17, 0x6c, 0x80, 0x92, 0x90,
0x0c, 0xef, 0x9f, 0xb4, 0x2b, 0x3b, 0xd4, 0x58, 0x4a, 0x8c, 0x4a, 0xf2, 0x85, 0x97, 0x79, 0x2f,
0xff, 0x97, 0x29, 0xc3, 0xa4, 0xa5, 0xd2, 0x9f, 0xf9, 0x3c, 0x19, 0x46, 0xa5, 0xcf, 0x98, 0xd7,
0x63, 0x6c, 0xd2, 0xe7, 0x7c, 0x0e, 0x64, 0x4d, 0x6b, 0xe8, 0x25, 0x73, 0x86, 0x63, 0x54, 0x98,
0xc3, 0x3c, 0xe6, 0xb2, 0x09, 0x77, 0xf9, 0x1c, 0xa0, 0xc6, 0x1a, 0x7a, 0x3b, 0x25, 0x14, 0xd6,
0xa2, 0xd0, 0x25, 0x21, 0x14, 0x2c, 0x7a, 0x9c, 0x37, 0x29, 0xac, 0x45, 0xa1, 0x4b, 0x42, 0xa4,
0xe2, 0xb1, 0x05, 0xf7, 0x78, 0x53, 0x25, 0x39, 0xa1, 0xa0, 0x55, 0x1c, 0x38, 0xa4, 0xc0, 0x86,
0xad, 0xeb, 0x65, 0x80, 0x9a, 0xfa, 0x23, 0xf4, 0x1e, 0x38, 0x8b, 0x2e, 0xee, 0x78, 0x24, 0x03,
0x1d, 0x36, 0xa4, 0x9d, 0x34, 0x74, 0x5b, 0x2f, 0x03, 0xd4, 0xb4, 0x3e, 0x8a, 0x85, 0x2b, 0xeb,
0xde, 0x3a, 0xfe, 0x24, 0xa2, 0x90, 0x17, 0x04, 0x51, 0xe0, 0x60, 0xc7, 0x8e, 0x07, 0x98, 0xb9,
0xbe, 0x94, 0x41, 0xca, 0x39, 0xf4, 0x62, 0xd9, 0x73, 0x9a, 0xe8, 0x03, 0x21, 0x8f, 0xa6, 0x59,
0x55, 0x05, 0xa0, 0x87, 0x19, 0xcf, 0x62, 0xc2, 0x74, 0xd5, 0x73, 0xe8, 0x41, 0x44, 0xdf, 0xef,
0x69, 0xa2, 0x0d, 0x42, 0xba, 0xdd, 0xee, 0x91, 0x2a, 0x00, 0xbd, 0xf8, 0xf1, 0x65, 0xce, 0xc5,
0x3b, 0xda, 0xa4, 0x89, 0xe4, 0x0f, 0x9e, 0x75, 0x2a, 0xbf, 0x3a, 0x97, 0x1c, 0x8c, 0x7f, 0x51,
0x3e, 0xd1, 0x69, 0xad, 0x66, 0x13, 0x6b, 0x42, 0x7c, 0x93, 0x75, 0xb5, 0x5e, 0xbf, 0x55, 0x88,
0xde, 0x40, 0x22, 0xca, 0x23, 0x49, 0x88, 0x32, 0xef, 0xb5, 0x3d, 0x48, 0x24, 0xb9, 0x44, 0x5a,
0xbb, 0x2d, 0xa6, 0xb3, 0x99, 0xf0, 0xa7, 0x53, 0x71, 0x4e, 0x75, 0x61, 0x22, 0x08, 0xc2, 0x30,
0x94, 0xf8, 0xbe, 0xff, 0x0b, 0x44, 0x78, 0x5c, 0x41, 0x10, 0x48, 0xce, 0x34, 0xad, 0x38, 0x11,
0x78, 0x1d, 0x8f, 0x25, 0x85, 0x1e, 0x86, 0x83, 0x8a, 0xae, 0x3a, 0x1d, 0x49, 0xe1, 0xa2, 0x7d,
0xfe, 0x8f, 0x0e, 0x73, 0x33, 0xe0, 0x9e, 0xca, 0x7b, 0xd7, 0x11, 0x37, 0x3f, 0xe2, 0xf5, 0x6d,
0x0b, 0x54, 0xe3, 0x75, 0x92, 0x1e, 0x22, 0x94, 0xee, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE lock_unlock_xpm[1] = {{ png, sizeof( png ), "lock_unlock_xpm" }};
//EOF
+29 -27
View File
@@ -8,33 +8,35 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0x95, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x6e, 0x80,
0x91, 0x18, 0x45, 0xcd, 0xcd, 0xcd, 0x8a, 0x7f, 0xff, 0xfe, 0xcd, 0x01, 0x32, 0x5d, 0x80, 0x58,
0x1e, 0x2a, 0xfc, 0x10, 0x88, 0xf7, 0x30, 0x33, 0x33, 0x4f, 0xa9, 0xad, 0xad, 0xbd, 0x4f, 0xb1,
0x45, 0x8d, 0x8d, 0x8d, 0xfe, 0xff, 0xff, 0xff, 0x5f, 0x0e, 0x64, 0x72, 0xe2, 0x50, 0xf2, 0x0d,
0x88, 0x23, 0x1b, 0x1a, 0x1a, 0x36, 0xe1, 0x33, 0x87, 0x89, 0x80, 0x4f, 0x54, 0x81, 0x96, 0xac,
0x80, 0x5a, 0xb2, 0x84, 0x89, 0x89, 0xc9, 0x8c, 0x83, 0x83, 0x43, 0x00, 0x84, 0x41, 0x6c, 0xa0,
0xd8, 0x52, 0x20, 0xe6, 0x02, 0xe2, 0x95, 0x40, 0x8b, 0x54, 0xf0, 0x99, 0xc5, 0x82, 0x4f, 0x12,
0x18, 0x5c, 0xe5, 0x40, 0x8a, 0x03, 0x88, 0xe7, 0x01, 0x0d, 0x4a, 0x46, 0x93, 0x3e, 0x0d, 0xc4,
0x31, 0x40, 0xf1, 0x9f, 0x40, 0x3a, 0x09, 0x88, 0x41, 0x6a, 0x53, 0xc9, 0xf2, 0x11, 0x10, 0xb8,
0x43, 0xe9, 0x5e, 0x3c, 0x6a, 0x7a, 0xd1, 0xd4, 0x92, 0x65, 0x91, 0x24, 0x94, 0xbe, 0x81, 0x47,
0x0d, 0x4c, 0x4e, 0x8a, 0x12, 0x8b, 0x98, 0x41, 0x04, 0x30, 0x78, 0xfe, 0xe1, 0x52, 0x80, 0x24,
0xc7, 0x4c, 0x89, 0x45, 0x54, 0x03, 0xc3, 0xcf, 0x22, 0x8c, 0x0c, 0x1b, 0x11, 0x11, 0xd1, 0x01,
0xa4, 0x0a, 0x81, 0xf9, 0x87, 0x0d, 0x98, 0xbc, 0x19, 0xfe, 0xfd, 0xfb, 0x47, 0x12, 0x06, 0xea,
0xf9, 0x05, 0xa4, 0x7b, 0x4f, 0x9e, 0x3c, 0x59, 0x85, 0xd7, 0x47, 0x40, 0x0b, 0x0a, 0x81, 0x8a,
0xd9, 0xfe, 0xfc, 0xf9, 0x03, 0xd2, 0x44, 0x10, 0x83, 0xd4, 0x21, 0x63, 0x90, 0x5e, 0x20, 0x2e,
0x22, 0x98, 0x61, 0x41, 0x0a, 0x09, 0xb8, 0x98, 0xa0, 0xaf, 0x80, 0x80, 0x9d, 0x18, 0x8b, 0x70,
0x1a, 0x6a, 0x60, 0x60, 0xc0, 0x90, 0x96, 0x96, 0x06, 0xf2, 0x35, 0xc3, 0xb4, 0x69, 0xd3, 0x18,
0x4e, 0x9f, 0x3e, 0x8d, 0x22, 0x0f, 0x12, 0x27, 0x3a, 0x31, 0xa0, 0x05, 0x03, 0x0a, 0x4e, 0x4d,
0x4d, 0x65, 0x10, 0x12, 0x12, 0x62, 0x10, 0x16, 0x16, 0x66, 0xc8, 0xc8, 0xc8, 0x80, 0x07, 0x1d,
0x88, 0xc6, 0x67, 0x09, 0x41, 0x1f, 0x61, 0x09, 0x12, 0x0c, 0x47, 0x91, 0x9d, 0xbc, 0xf1, 0x45,
0xf6, 0xe4, 0xc9, 0x93, 0x19, 0x7e, 0xff, 0xfe, 0x0d, 0xc6, 0x13, 0x27, 0x4e, 0x24, 0x29, 0x79,
0xb3, 0x60, 0x73, 0x25, 0x2e, 0x1f, 0x01, 0x93, 0x2c, 0xc3, 0xf5, 0xeb, 0xd7, 0x21, 0x45, 0xf7,
0xe9, 0xd3, 0x94, 0x59, 0x84, 0x2f, 0xe8, 0x08, 0xc5, 0x03, 0x45, 0x16, 0xa1, 0x47, 0xf4, 0x91,
0x23, 0x47, 0xa8, 0x63, 0x11, 0x7a, 0xd0, 0xa1, 0x83, 0x8d, 0x1b, 0x37, 0x52, 0xa7, 0xac, 0x03,
0x15, 0x21, 0x30, 0x5f, 0x51, 0x00, 0x7e, 0x12, 0x63, 0x51, 0x2f, 0x30, 0xa8, 0x7e, 0x51, 0x60,
0xc9, 0x2f, 0xa0, 0xfe, 0x9e, 0x01, 0x6b, 0xd7, 0x01, 0x00, 0x25, 0x5a, 0xbf, 0x01, 0x77, 0x49,
0xeb, 0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x01, 0xb6, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x96, 0x3f, 0x6f, 0xd3,
0x60, 0x10, 0x87, 0x9f, 0x73, 0x2b, 0x43, 0x99, 0xaa, 0x64, 0x2a, 0x4b, 0x85, 0x44, 0xf7, 0x4c,
0xfd, 0x04, 0x48, 0x1d, 0x59, 0x83, 0xc4, 0x44, 0xe2, 0x34, 0x03, 0x4b, 0x59, 0x2a, 0x55, 0x2a,
0x0a, 0xb0, 0x30, 0x90, 0x21, 0x0a, 0xca, 0x40, 0x2a, 0x26, 0x10, 0x30, 0x86, 0x99, 0x31, 0x8b,
0xe5, 0x0f, 0x10, 0xb6, 0xaa, 0x5f, 0x02, 0xa9, 0xb1, 0xef, 0xbd, 0x0e, 0xfd, 0x03, 0x71, 0x6b,
0x3b, 0x8d, 0x23, 0x21, 0xf5, 0xa4, 0x9b, 0xee, 0xfc, 0x3e, 0xf7, 0xbb, 0xbb, 0xf7, 0x95, 0xe1,
0xae, 0x99, 0xcc, 0x93, 0xf4, 0xae, 0xd9, 0x7c, 0x64, 0x26, 0x2f, 0x45, 0x78, 0x62, 0xb0, 0x79,
0xf1, 0xe1, 0x89, 0x19, 0xbf, 0x44, 0xec, 0xe3, 0xe1, 0xd1, 0xd1, 0x71, 0x69, 0xd0, 0x9b, 0x66,
0xf3, 0xa9, 0x20, 0xdf, 0x80, 0xb5, 0x8c, 0x94, 0x3f, 0x22, 0x3c, 0x3b, 0x1c, 0x0e, 0x7f, 0xe6,
0x9d, 0xe3, 0xe5, 0x2a, 0xd9, 0xdd, 0xdd, 0x12, 0xe4, 0xfb, 0x39, 0x44, 0xbe, 0x20, 0x6c, 0xfb,
0x9e, 0xac, 0xfb, 0x9e, 0xac, 0x23, 0x6c, 0x0b, 0x7c, 0x05, 0x1e, 0x98, 0xf1, 0xa3, 0xd3, 0x68,
0x3c, 0xce, 0x3b, 0x6b, 0x35, 0x57, 0x8e, 0xba, 0x7d, 0xe0, 0x3e, 0xc2, 0xe7, 0xd7, 0xc3, 0x4f,
0x8d, 0x54, 0x34, 0x02, 0x9e, 0xbf, 0x0d, 0x82, 0x53, 0x8c, 0x17, 0x9e, 0xc8, 0x3e, 0x10, 0x2c,
0xa4, 0xc8, 0x60, 0x07, 0xc0, 0x25, 0x5e, 0x37, 0x2b, 0xe7, 0x6f, 0xcc, 0xdb, 0x59, 0xb8, 0x75,
0xc0, 0x06, 0x00, 0x9b, 0x1b, 0xbf, 0x33, 0x33, 0xae, 0x62, 0xf6, 0xb0, 0x0c, 0x68, 0x05, 0xa0,
0xd3, 0xe9, 0xb8, 0xac, 0x84, 0x7f, 0x62, 0x2b, 0x65, 0x40, 0x4b, 0xb3, 0xbb, 0x07, 0xba, 0x76,
0x61, 0xeb, 0xf5, 0xfa, 0x7b, 0x60, 0xcf, 0xcc, 0x7c, 0x55, 0xc5, 0x39, 0x77, 0x2b, 0x57, 0xd5,
0xa9, 0x73, 0xae, 0x1b, 0x86, 0xe1, 0x41, 0xae, 0x22, 0x33, 0xdb, 0x53, 0x55, 0x3f, 0x49, 0x12,
0x54, 0xb5, 0xd0, 0x93, 0x24, 0x99, 0x71, 0x55, 0xf5, 0x55, 0xf5, 0x55, 0xe1, 0x85, 0x55, 0x55,
0xbf, 0xa0, 0xe2, 0x42, 0x55, 0xc0, 0xbd, 0x79, 0x40, 0x99, 0x87, 0xd6, 0x6a, 0x35, 0x5a, 0xad,
0x16, 0x66, 0xc6, 0x60, 0x30, 0x20, 0x8a, 0xa2, 0x99, 0xb8, 0x99, 0xcd, 0xbf, 0x0c, 0xa9, 0x36,
0xcc, 0x78, 0x10, 0x04, 0x54, 0x2a, 0x15, 0xaa, 0xd5, 0x2a, 0xed, 0x76, 0xfb, 0xaa, 0x75, 0xaa,
0x9a, 0x0b, 0x29, 0x54, 0x74, 0x43, 0x4b, 0xae, 0x15, 0xb5, 0xf0, 0x7a, 0xe7, 0x0d, 0xbb, 0xdf,
0xef, 0x13, 0xc7, 0x31, 0x71, 0x1c, 0xd3, 0xeb, 0xf5, 0x6e, 0xb5, 0xde, 0xab, 0x37, 0x55, 0x99,
0xa5, 0x28, 0x0c, 0x43, 0x26, 0x93, 0xc9, 0xf9, 0xd3, 0x1d, 0x45, 0xe5, 0x40, 0x79, 0xad, 0x2b,
0x9a, 0x43, 0x29, 0x50, 0x7a, 0xd0, 0xe3, 0xf1, 0x78, 0x39, 0xa0, 0x74, 0xeb, 0xd2, 0x36, 0x1a,
0x8d, 0x96, 0xf3, 0xd6, 0xa9, 0xea, 0xf4, 0x52, 0x55, 0x09, 0x3b, 0x9d, 0x07, 0xd4, 0x35, 0xb3,
0x69, 0x09, 0xc8, 0xd4, 0xcc, 0x3e, 0xfc, 0xb7, 0xff, 0xba, 0x33, 0x76, 0xe5, 0xc3, 0xdb, 0x78,
0x51, 0xf1, 0x43, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE locked_xpm[1] = {{ png, sizeof( png ), "locked_xpm" }};
+47
View File
@@ -0,0 +1,47 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps.h>
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0xe4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x96, 0xcb, 0x4e, 0xc2,
0x50, 0x10, 0x86, 0xe5, 0x1a, 0xee, 0x7b, 0x71, 0xa1, 0xc4, 0xc4, 0xb7, 0x20, 0xc0, 0x93, 0xd0,
0x9d, 0x5b, 0x36, 0x2c, 0x54, 0x8c, 0x81, 0xd7, 0x21, 0x21, 0xc2, 0x1b, 0x40, 0xa1, 0xc0, 0x82,
0xd7, 0xf0, 0x05, 0xb8, 0x18, 0x83, 0xe4, 0x38, 0x5f, 0xd3, 0x63, 0x1a, 0x52, 0x69, 0x05, 0xad,
0x36, 0x99, 0x30, 0xcc, 0x99, 0xff, 0x9f, 0x73, 0xe6, 0xd2, 0xd3, 0xb3, 0xb3, 0xff, 0xf8, 0xc4,
0x62, 0x31, 0x43, 0x64, 0xeb, 0x88, 0xf1, 0x6b, 0x81, 0x0a, 0x85, 0xc2, 0x73, 0xa7, 0xd3, 0x51,
0x08, 0xfa, 0x4f, 0x70, 0x5e, 0x8b, 0x44, 0xf6, 0x8d, 0xb9, 0x5c, 0xee, 0xa5, 0xdb, 0xed, 0x2a,
0x04, 0xdd, 0x03, 0x17, 0x71, 0xb0, 0xfe, 0x4f, 0x22, 0x91, 0xb8, 0x8d, 0x46, 0xa3, 0x3b, 0x21,
0xb2, 0xe4, 0x6f, 0xc9, 0x1d, 0x3c, 0x99, 0x4c, 0xbe, 0xcd, 0xe7, 0x73, 0x85, 0xa0, 0xef, 0x91,
0x96, 0xc0, 0x80, 0x85, 0xc3, 0x2f, 0xce, 0x8d, 0xe4, 0xfe, 0xbd, 0xdf, 0xef, 0xab, 0x46, 0xa3,
0xb1, 0x4d, 0xa5, 0x52, 0xeb, 0x78, 0x3c, 0xfe, 0x94, 0xcf, 0xe7, 0xcd, 0x74, 0x3a, 0xfd, 0x6a,
0x18, 0xc6, 0x66, 0x3a, 0x9d, 0x2a, 0x04, 0x1d, 0x1b, 0x6b, 0xf8, 0xe0, 0x0b, 0x06, 0x2c, 0x1c,
0x70, 0x1d, 0x0a, 0x14, 0x61, 0x57, 0x00, 0x16, 0x8b, 0x85, 0xea, 0xf5, 0x7a, 0xaa, 0x5a, 0xad,
0xae, 0x9a, 0xcd, 0xe6, 0x6e, 0x38, 0x1c, 0xaa, 0xf1, 0x78, 0xac, 0x4c, 0xd3, 0xb4, 0x05, 0x1d,
0x1b, 0x6b, 0xf8, 0xe0, 0x0b, 0x06, 0xac, 0x93, 0x8d, 0x88, 0xdf, 0xa9, 0x2e, 0x65, 0x77, 0x36,
0x70, 0x36, 0x9b, 0xa9, 0xc9, 0x64, 0xf2, 0x49, 0x8c, 0xee, 0x16, 0x1d, 0x18, 0x1d, 0x5f, 0x4e,
0x03, 0x36, 0x70, 0x9d, 0x48, 0x45, 0xb9, 0x5c, 0x5e, 0xeb, 0x20, 0xfc, 0x5a, 0x96, 0x65, 0xa7,
0x0c, 0x42, 0x04, 0x1d, 0x9b, 0xdb, 0x07, 0x0c, 0xd8, 0xc0, 0x2d, 0x47, 0xde, 0x49, 0x89, 0x26,
0x80, 0x94, 0xdd, 0x56, 0x2a, 0x95, 0xa5, 0xa4, 0x65, 0x8d, 0x48, 0xba, 0x96, 0xd8, 0x58, 0xd3,
0xc1, 0xc0, 0x80, 0x0d, 0xdc, 0xda, 0x99, 0x4c, 0x66, 0xa3, 0x6b, 0xc2, 0xae, 0x21, 0x14, 0xf2,
0x8d, 0x74, 0xda, 0x9d, 0xac, 0x9f, 0x8b, 0x14, 0x45, 0x7f, 0xc0, 0x36, 0x18, 0x0c, 0x6c, 0x1f,
0x5d, 0x33, 0x1a, 0xe4, 0x50, 0xea, 0xea, 0x0c, 0x20, 0xb3, 0x41, 0xdb, 0xd2, 0x51, 0xba, 0x26,
0xec, 0x98, 0x93, 0x88, 0xfd, 0x7e, 0x1f, 0x24, 0xb6, 0x56, 0xad, 0x56, 0x5b, 0xea, 0x53, 0x81,
0x01, 0x0b, 0x07, 0x5c, 0xce, 0x50, 0xd7, 0xdd, 0xaf, 0x96, 0x6d, 0xbb, 0xdd, 0xb6, 0x07, 0x91,
0x19, 0x01, 0xe8, 0x2e, 0x32, 0xa9, 0xe2, 0x14, 0x1e, 0x1b, 0x2c, 0xb2, 0xe6, 0x6e, 0x1a, 0xb0,
0x70, 0xc0, 0x05, 0x27, 0xdc, 0xe1, 0x07, 0xf2, 0x4b, 0x1d, 0x85, 0xa7, 0x26, 0x1e, 0xa9, 0x7b,
0xfc, 0x56, 0xea, 0xf6, 0x9b, 0x81, 0x82, 0x7e, 0xd1, 0x0c, 0x2d, 0xe7, 0x64, 0x17, 0x04, 0x39,
0xa6, 0x19, 0x7c, 0xdb, 0x1b, 0x42, 0x76, 0xaf, 0xdb, 0x5b, 0xf4, 0x15, 0x36, 0x8f, 0xf6, 0x1e,
0x05, 0x9e, 0xa3, 0xb0, 0x06, 0xf6, 0x2a, 0x8c, 0x57, 0x50, 0x68, 0x2f, 0xd5, 0x63, 0xae, 0x89,
0xd1, 0x31, 0xd7, 0x44, 0x68, 0x17, 0x5f, 0xe0, 0xab, 0x3c, 0x9b, 0xcd, 0x9e, 0x76, 0x95, 0x87,
0xfd, 0x71, 0xf2, 0xb7, 0x9f, 0x5b, 0xa7, 0x3c, 0x1f, 0x74, 0xcf, 0xc8, 0x85, 0x45, 0xfc, 0x99,
0x61, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE options_generic_xpm[1] = {{ png, sizeof( png ), "options_generic_xpm" }};
//EOF
+57 -54
View File
@@ -8,60 +8,63 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x03, 0x39, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x4b, 0x48, 0x54,
0x61, 0x14, 0xc7, 0xcf, 0xe4, 0x68, 0xd9, 0xcb, 0x32, 0x98, 0x87, 0x3a, 0x8d, 0x35, 0x4d, 0xf9,
0x48, 0xc8, 0xd2, 0x9c, 0xc7, 0xbd, 0xe3, 0xe0, 0x73, 0x9c, 0x06, 0x17, 0xd5, 0x64, 0x48, 0x8a,
0x91, 0x2d, 0x6a, 0x51, 0xa2, 0x05, 0x56, 0x10, 0x91, 0x2d, 0x22, 0x5a, 0x48, 0xab, 0x6a, 0x5b,
0xd0, 0x2a, 0x82, 0xa0, 0x76, 0x05, 0xd6, 0x2e, 0xdb, 0x44, 0x44, 0xa8, 0xd9, 0x5b, 0x7b, 0xf8,
0xca, 0xd0, 0xcc, 0xcc, 0xec, 0x7f, 0xc6, 0xef, 0xc2, 0x75, 0xbc, 0x33, 0x8e, 0x56, 0x74, 0xe0,
0xcf, 0xc7, 0xb9, 0xf7, 0xfb, 0xce, 0xef, 0x7e, 0x8f, 0x73, 0xbe, 0x4b, 0xf4, 0x1f, 0x2c, 0xf0,
0xb7, 0x02, 0xfd, 0x24, 0x3a, 0x30, 0x49, 0xd4, 0x3b, 0x4e, 0xd4, 0xdd, 0x41, 0x54, 0xaf, 0x7e,
0xb7, 0x0a, 0x7a, 0x23, 0xda, 0x19, 0xe6, 0x97, 0xe5, 0x6b, 0x15, 0x1e, 0xcf, 0xdd, 0x80, 0xc7,
0x63, 0xf7, 0x49, 0x52, 0x4b, 0x85, 0x2c, 0x3f, 0xaa, 0x90, 0xa4, 0x53, 0x91, 0x20, 0x53, 0x44,
0x3a, 0x80, 0x3e, 0xa1, 0x9d, 0x62, 0x0d, 0x13, 0x0d, 0x16, 0x13, 0xc9, 0xca, 0xfb, 0x3a, 0xa8,
0x17, 0xaa, 0x0e, 0x1f, 0x88, 0xc0, 0x23, 0xd0, 0x14, 0x82, 0x7f, 0x44, 0x3b, 0x09, 0xf5, 0x41,
0x57, 0xa3, 0x81, 0x46, 0x75, 0xba, 0x2f, 0x2a, 0xd0, 0x80, 0x55, 0x35, 0xab, 0x3b, 0x02, 0x74,
0x33, 0x22, 0x48, 0x96, 0x9f, 0x04, 0x9c, 0xce, 0x54, 0x7e, 0x16, 0x74, 0x3a, 0x13, 0x23, 0x70,
0x74, 0x45, 0x0e, 0x47, 0x7d, 0xab, 0xcd, 0xf6, 0x6d, 0x84, 0x68, 0x74, 0x88, 0xa8, 0xef, 0x2c,
0xd1, 0x95, 0x0c, 0xa2, 0x5d, 0xfc, 0x72, 0x3d, 0xd4, 0x23, 0x40, 0xdc, 0xae, 0xd5, 0x02, 0x95,
0xcb, 0xf2, 0xd6, 0x39, 0xb6, 0x46, 0x57, 0xe2, 0x74, 0xd6, 0x96, 0xbb, 0xdd, 0xfd, 0x56, 0x83,
0xa1, 0x11, 0x9d, 0x03, 0xeb, 0x88, 0x76, 0x67, 0x12, 0x95, 0x1e, 0x22, 0x5a, 0xcd, 0x1d, 0x4e,
0x08, 0x88, 0xa2, 0x23, 0x5a, 0x20, 0xaf, 0xd7, 0xbb, 0x3c, 0x1a, 0xa5, 0xd4, 0xe5, 0xaa, 0x61,
0x48, 0xaa, 0xd1, 0xd8, 0x00, 0xd7, 0x00, 0xc5, 0x31, 0x5c, 0x28, 0x64, 0x95, 0xd0, 0x1a, 0xe8,
0xbd, 0x38, 0x0c, 0x95, 0x5a, 0xa0, 0x60, 0x76, 0x76, 0x42, 0x8c, 0x10, 0xa3, 0x80, 0x68, 0x5a,
0xbc, 0x00, 0x51, 0x84, 0x3d, 0xfa, 0xa5, 0xfe, 0x32, 0xb5, 0x15, 0x17, 0x14, 0xec, 0x63, 0x88,
0xc5, 0x6c, 0x6e, 0x84, 0x6b, 0x8e, 0x06, 0x61, 0xe3, 0xaf, 0x7d, 0x37, 0xdf, 0x7c, 0x09, 0x83,
0xa4, 0xcc, 0x05, 0x61, 0x5b, 0x0c, 0xbd, 0x9d, 0x0f, 0x04, 0x1b, 0x5f, 0x1d, 0x82, 0x98, 0x4c,
0x4d, 0x70, 0xd3, 0x62, 0x81, 0xb0, 0x2d, 0x11, 0x09, 0x3b, 0x5f, 0xc8, 0x31, 0xb8, 0x96, 0x6d,
0x58, 0x7a, 0x24, 0x75, 0x13, 0x72, 0xed, 0xa9, 0xaf, 0xb0, 0x30, 0x1f, 0x4b, 0x7d, 0x0f, 0xea,
0xc6, 0xb3, 0x76, 0x9f, 0xc7, 0xb3, 0x53, 0x3d, 0x36, 0x31, 0x56, 0x50, 0x99, 0xcb, 0xb5, 0x57,
0x05, 0xe1, 0x54, 0x88, 0x43, 0xf5, 0xb8, 0x80, 0xc0, 0x63, 0x08, 0x5c, 0x84, 0x34, 0xd8, 0xc1,
0x87, 0x87, 0x73, 0xce, 0x27, 0xcb, 0x75, 0xbc, 0xbf, 0xd0, 0x41, 0x65, 0xfc, 0x52, 0xe8, 0x75,
0xac, 0x90, 0x34, 0x93, 0xe9, 0x38, 0xdc, 0x74, 0x86, 0x04, 0x83, 0xc1, 0x38, 0x04, 0xfa, 0x0e,
0x5d, 0xe7, 0x3e, 0x3c, 0x83, 0x50, 0xde, 0x39, 0x9d, 0xc9, 0xa1, 0xc3, 0x34, 0x5d, 0x51, 0x7a,
0x94, 0x18, 0xcb, 0xa0, 0x57, 0x51, 0x37, 0xde, 0xed, 0xae, 0x42, 0xad, 0x1b, 0x4c, 0x37, 0x9b,
0x39, 0xef, 0x90, 0x8b, 0xa4, 0x57, 0x12, 0x15, 0x81, 0x86, 0xa1, 0x1b, 0x1a, 0x20, 0x7e, 0xd7,
0x0f, 0x75, 0x28, 0x71, 0x38, 0x19, 0x5f, 0x2e, 0x00, 0x32, 0x5d, 0x78, 0x3d, 0x9e, 0xa3, 0x08,
0x36, 0x0e, 0x88, 0x5f, 0x01, 0xf9, 0xbd, 0x5e, 0x93, 0x28, 0xc2, 0x63, 0xe5, 0x92, 0x54, 0xa2,
0xf4, 0x5d, 0x01, 0x75, 0x6b, 0x41, 0xb0, 0x54, 0xa7, 0x31, 0xe0, 0xab, 0xd5, 0x6c, 0x3e, 0x09,
0x77, 0x43, 0x38, 0x44, 0x05, 0xdb, 0xe3, 0x97, 0xa4, 0x07, 0x08, 0xdc, 0x2b, 0x6a, 0x63, 0x17,
0x74, 0xcb, 0xef, 0x76, 0xe7, 0xa9, 0xfb, 0x69, 0x82, 0xca, 0x24, 0xa9, 0x19, 0x90, 0x1f, 0xde,
0xfc, 0xfc, 0xc7, 0xc5, 0x0e, 0xc7, 0x6d, 0x77, 0x6e, 0x6e, 0xca, 0x5c, 0xfb, 0x18, 0xbe, 0x47,
0xe1, 0xb6, 0x12, 0x7a, 0x31, 0x63, 0x26, 0xb2, 0xdc, 0x80, 0x01, 0x13, 0x76, 0x8b, 0xe5, 0x1c,
0xdc, 0x8d, 0x38, 0x08, 0x45, 0xf0, 0x1f, 0xa2, 0x35, 0xfc, 0x29, 0xa8, 0x4b, 0x35, 0x93, 0xc3,
0x38, 0x2d, 0x13, 0x9b, 0xd2, 0xd3, 0xcf, 0xc3, 0xcd, 0x14, 0x25, 0x8a, 0x78, 0x19, 0x30, 0xc3,
0xfb, 0x67, 0x88, 0x16, 0x2d, 0xf4, 0xf6, 0x4d, 0x82, 0x3a, 0x43, 0x33, 0x71, 0xb9, 0xf6, 0xe3,
0xfc, 0x4f, 0x64, 0xd8, 0x6c, 0x17, 0xe1, 0x66, 0x29, 0x10, 0xd5, 0x17, 0x37, 0x73, 0x7e, 0x2c,
0x14, 0xc4, 0x55, 0xbb, 0x03, 0xd3, 0xad, 0xe5, 0x99, 0x6c, 0xb6, 0xdb, 0x5b, 0xb5, 0x20, 0xca,
0xa5, 0x87, 0xa5, 0x69, 0xd3, 0x3a, 0x0f, 0x50, 0x8d, 0x58, 0x9d, 0x88, 0xc6, 0x17, 0x53, 0x27,
0xbe, 0x74, 0x4c, 0xce, 0xcb, 0x6b, 0xdb, 0x9e, 0x93, 0xd3, 0xc8, 0xc9, 0x89, 0x65, 0x0a, 0x6a,
0x09, 0xa0, 0x67, 0x9c, 0xa8, 0x61, 0x31, 0x8c, 0xe2, 0x3e, 0xe3, 0x7c, 0xbc, 0xcc, 0x59, 0xa1,
0x55, 0xff, 0x78, 0xe9, 0x86, 0xe2, 0xf5, 0xfa, 0x7e, 0x68, 0x00, 0xfa, 0x1c, 0x4d, 0x09, 0x7a,
0xfd, 0x07, 0xf4, 0x7f, 0xae, 0xa1, 0x9e, 0xb0, 0x4b, 0xb4, 0x4b, 0xcc, 0x74, 0xd6, 0x81, 0x48,
0x16, 0x4a, 0x8a, 0x51, 0xfc, 0x0f, 0x61, 0x15, 0xca, 0x52, 0x01, 0xda, 0xa1, 0x16, 0x68, 0xcb,
0xbf, 0xf8, 0x2f, 0xac, 0x82, 0x2e, 0xd1, 0xf4, 0xaf, 0xd5, 0xac, 0x4b, 0xf2, 0x37, 0x49, 0x1a,
0x27, 0x8b, 0xe9, 0xf5, 0x90, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
0xce, 0x00, 0x00, 0x03, 0x73, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x5b, 0x6c, 0x4c,
0x51, 0x14, 0x86, 0xd7, 0xe8, 0xb4, 0x75, 0xab, 0x6b, 0x32, 0x97, 0xea, 0xb4, 0x43, 0xb5, 0xaa,
0x45, 0x48, 0xca, 0x5c, 0xce, 0xa5, 0x87, 0x32, 0x9d, 0x19, 0x4c, 0xe2, 0x61, 0x52, 0x71, 0x17,
0x95, 0x20, 0x22, 0xe2, 0x92, 0x94, 0x87, 0x46, 0xf0, 0xe0, 0x41, 0xa2, 0xf1, 0xc4, 0x83, 0x37,
0x22, 0xe2, 0xf2, 0xe0, 0xf2, 0xd4, 0x44, 0x88, 0x08, 0x89, 0xc6, 0x83, 0x84, 0xaa, 0x56, 0x5b,
0xea, 0xae, 0x9d, 0x22, 0x8a, 0x28, 0xea, 0x5f, 0x63, 0x9f, 0xe6, 0x18, 0xa7, 0x63, 0x5a, 0xc4,
0x4e, 0xfe, 0x9c, 0xb3, 0x66, 0xef, 0xbd, 0xbe, 0xbd, 0xd6, 0xde, 0xeb, 0xec, 0x21, 0xfa, 0x0f,
0x6d, 0xd1, 0xdf, 0x72, 0xf4, 0x85, 0x68, 0xdd, 0x57, 0xa2, 0x67, 0x9f, 0x88, 0x5a, 0x1a, 0x88,
0xd6, 0xe3, 0x27, 0x8b, 0xde, 0x37, 0x06, 0x7a, 0x24, 0x9e, 0x7f, 0xd4, 0x7a, 0xe1, 0x14, 0xa0,
0x97, 0x78, 0xf6, 0xb2, 0xde, 0x12, 0xc5, 0xca, 0x88, 0xe6, 0xea, 0xfd, 0x6b, 0xa0, 0x67, 0xd0,
0x32, 0xe3, 0xa4, 0x88, 0xc7, 0x63, 0x0f, 0x2b, 0x4a, 0x5d, 0x48, 0x51, 0x2e, 0x41, 0xc5, 0x21,
0x59, 0x3e, 0x81, 0x67, 0x73, 0x50, 0x55, 0x57, 0x27, 0x03, 0x75, 0x5b, 0x2c, 0x6f, 0x0c, 0xa0,
0xce, 0x3c, 0xa2, 0x2a, 0xbd, 0xff, 0x92, 0x00, 0x9d, 0x35, 0x4e, 0x0a, 0x6a, 0x9a, 0x1b, 0x8e,
0x7b, 0xa1, 0xcf, 0xd0, 0x7b, 0xa8, 0x0b, 0x6a, 0x0d, 0xca, 0xf2, 0x96, 0x7e, 0x38, 0x96, 0x79,
0x5e, 0x6f, 0x55, 0x6d, 0x7e, 0xfe, 0x87, 0xf7, 0x44, 0xdd, 0x5d, 0x44, 0xaf, 0xf7, 0x12, 0x1d,
0x9d, 0x42, 0x14, 0xe5, 0xce, 0x49, 0xd0, 0x53, 0x01, 0xe2, 0x67, 0xae, 0x09, 0x88, 0x75, 0x52,
0xd3, 0xb4, 0xa1, 0xfc, 0x7b, 0x34, 0x1a, 0x4d, 0x33, 0x83, 0xcc, 0xf7, 0xf9, 0x56, 0x55, 0x48,
0x52, 0xc7, 0x44, 0x9b, 0x6d, 0xc7, 0x0c, 0x24, 0x64, 0x22, 0x86, 0x16, 0x11, 0x55, 0xac, 0x22,
0x1a, 0xcf, 0x03, 0x76, 0x09, 0x88, 0xae, 0x2d, 0x26, 0xa0, 0x0f, 0x81, 0x40, 0x60, 0x44, 0xb2,
0xbd, 0x59, 0xe0, 0xf7, 0xaf, 0x64, 0xc8, 0x04, 0xbb, 0x7d, 0x2b, 0x4c, 0x1b, 0x94, 0x26, 0x0e,
0x41, 0xdf, 0x41, 0x88, 0xd0, 0x0f, 0xe2, 0x13, 0x71, 0x18, 0x22, 0x26, 0xa0, 0xb6, 0x01, 0x40,
0xec, 0x02, 0x62, 0xda, 0xd2, 0x05, 0x88, 0xfa, 0xd9, 0xa3, 0xc6, 0xfe, 0x26, 0x96, 0x7b, 0x3c,
0x2b, 0x18, 0xe2, 0x72, 0x3a, 0xb7, 0xc1, 0x74, 0x26, 0x83, 0x70, 0xcb, 0x80, 0xda, 0x13, 0x7f,
0x5c, 0x2c, 0xcb, 0xb9, 0x80, 0xc4, 0x82, 0x8a, 0x72, 0x3d, 0x05, 0x48, 0x36, 0x43, 0xc2, 0xb2,
0x5c, 0x18, 0xd2, 0xb4, 0xcd, 0x61, 0x49, 0xaa, 0x0a, 0xf8, 0xfd, 0xb6, 0xc4, 0x39, 0x99, 0xd0,
0xe3, 0x81, 0xd4, 0x0b, 0x36, 0x7e, 0x59, 0x1c, 0xe2, 0x70, 0x6c, 0x87, 0x99, 0x53, 0x52, 0x52,
0x92, 0x81, 0x63, 0x7f, 0x1c, 0xea, 0xe8, 0x3b, 0x40, 0xaa, 0xca, 0x27, 0x54, 0x33, 0xce, 0x1b,
0x2a, 0x0a, 0x76, 0xa0, 0x90, 0x1d, 0x30, 0x5d, 0x1c, 0x09, 0x1c, 0xd7, 0x40, 0x3d, 0xa8, 0xb5,
0x4e, 0x38, 0x3f, 0xc5, 0xfb, 0xca, 0x30, 0xd4, 0xe1, 0x45, 0xe3, 0xdc, 0x61, 0xa9, 0x82, 0x90,
0x8e, 0xa5, 0x06, 0x48, 0x6e, 0x1c, 0x12, 0x0a, 0x65, 0x22, 0xbd, 0xf7, 0xd9, 0x31, 0x43, 0x78,
0x1c, 0xde, 0x2f, 0xc4, 0xa3, 0x92, 0xe5, 0x9b, 0xc6, 0xf9, 0xc3, 0xa1, 0xb6, 0x54, 0x21, 0x39,
0x0e, 0xc7, 0x4e, 0x98, 0x6e, 0x7d, 0xe3, 0xe1, 0x7c, 0x49, 0xf0, 0x47, 0x51, 0x7f, 0x83, 0xee,
0x20, 0x65, 0x37, 0x60, 0xb7, 0x88, 0x14, 0x5e, 0x31, 0xfa, 0xe0, 0x1a, 0x69, 0x4d, 0x06, 0x29,
0x97, 0xa4, 0x4a, 0x38, 0x8c, 0xb9, 0x9d, 0x4e, 0xae, 0x3b, 0xd4, 0x22, 0x59, 0xf5, 0x3e, 0xac,
0xfa, 0x98, 0x58, 0x7d, 0x37, 0xf4, 0x82, 0x05, 0xd0, 0x47, 0x11, 0xe1, 0x39, 0xa3, 0x9f, 0x91,
0x50, 0xcb, 0x60, 0x20, 0x22, 0x4d, 0x67, 0xc4, 0xea, 0xeb, 0x17, 0xca, 0xf2, 0x24, 0x44, 0x14,
0x00, 0x88, 0x0f, 0xc5, 0x37, 0xec, 0xd1, 0x06, 0xe3, 0xd8, 0x2c, 0xe8, 0xa1, 0x19, 0x04, 0xa9,
0xaa, 0x01, 0xe4, 0x5d, 0x9e, 0xd3, 0xb9, 0x1b, 0xe6, 0xe4, 0x44, 0x48, 0x3c, 0x75, 0x8a, 0x72,
0x5a, 0x80, 0x9a, 0xe3, 0x1f, 0x62, 0x59, 0xae, 0x13, 0xf6, 0xbd, 0x88, 0x24, 0x65, 0xfd, 0x16,
0x14, 0x90, 0xe5, 0x6a, 0x40, 0x3e, 0x6b, 0xb3, 0x67, 0xd7, 0x97, 0x7b, 0xbd, 0xe7, 0xa5, 0x59,
0xb3, 0xb2, 0xcd, 0x16, 0x13, 0x2a, 0x2b, 0xdb, 0x88, 0x28, 0x3e, 0x09, 0xe7, 0xed, 0xd0, 0x57,
0xa4, 0x2f, 0x86, 0xe7, 0xfa, 0xc4, 0xb1, 0xa3, 0xa0, 0xe6, 0x9f, 0x22, 0x51, 0x94, 0xad, 0x7c,
0x5c, 0x0b, 0x5c, 0xae, 0xfd, 0x30, 0x0b, 0x71, 0x10, 0xe6, 0xc1, 0xbe, 0x66, 0x56, 0x84, 0xfc,
0x3d, 0x43, 0xdf, 0x21, 0xc0, 0x6e, 0x87, 0x55, 0xb5, 0x01, 0xef, 0x57, 0xf1, 0xbe, 0xdc, 0x6c,
0x51, 0x0c, 0x6a, 0x32, 0x44, 0xb2, 0x09, 0x2b, 0xea, 0x99, 0xe2, 0x76, 0x1f, 0x80, 0x39, 0x55,
0x7c, 0xa2, 0x08, 0xd5, 0x5e, 0x8a, 0x08, 0x2f, 0xef, 0x21, 0x1a, 0x32, 0xd8, 0x8b, 0x71, 0x34,
0xf4, 0x20, 0x1e, 0x89, 0xdf, 0xbf, 0x16, 0x39, 0xef, 0x29, 0xca, 0xcf, 0x3f, 0x08, 0xb3, 0x58,
0x87, 0xf4, 0xed, 0x87, 0xaa, 0x56, 0xa3, 0x7f, 0xcd, 0x60, 0x41, 0xfc, 0xd5, 0x6e, 0xac, 0xc0,
0x7d, 0xc2, 0x91, 0x4c, 0x2b, 0x28, 0xa8, 0x35, 0x83, 0xc4, 0xef, 0x22, 0x9f, 0x6f, 0x18, 0xa7,
0xc6, 0xc4, 0x47, 0x18, 0x5a, 0x29, 0xb2, 0xd3, 0x6f, 0x1b, 0xcb, 0x11, 0xf1, 0xd9, 0x57, 0x4a,
0x4b, 0xaf, 0xce, 0x99, 0x3e, 0x7d, 0x1b, 0x17, 0x27, 0xd2, 0x14, 0x35, 0x13, 0x40, 0x77, 0x4d,
0x2e, 0x3f, 0xbb, 0xb8, 0xcf, 0xb8, 0x1e, 0x8f, 0x70, 0x55, 0x98, 0x7d, 0xc9, 0x39, 0x75, 0x5d,
0xe9, 0x56, 0x6b, 0x07, 0xd4, 0x09, 0xbd, 0x4a, 0xa6, 0x0c, 0xab, 0xf5, 0x39, 0xc6, 0x37, 0x98,
0xe8, 0x69, 0xc2, 0x25, 0xda, 0x24, 0x22, 0xfd, 0xe5, 0x40, 0x8c, 0x13, 0x1a, 0x9d, 0xa2, 0x26,
0x40, 0x79, 0x42, 0xc5, 0x06, 0xc0, 0x2d, 0x68, 0x1f, 0x34, 0xf3, 0x5f, 0xfc, 0x2f, 0xac, 0x84,
0x0e, 0x43, 0x8a, 0xf1, 0xfa, 0xd6, 0xdb, 0x77, 0xcb, 0x1b, 0x49, 0x88, 0x18, 0x0b, 0x33, 0xe5,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE polar_coord_xpm[1] = {{ png, sizeof( png ), "polar_coord_xpm" }};
+19 -28
View File
@@ -8,34 +8,25 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0xa5, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x6e, 0x80,
0x91, 0x52, 0x03, 0x9a, 0x9b, 0x9b, 0x15, 0xff, 0xfe, 0xfd, 0x9b, 0x03, 0x64, 0xba, 0x00, 0xb1,
0x3c, 0x54, 0xf8, 0x21, 0x10, 0xef, 0x61, 0x66, 0x66, 0x9e, 0x52, 0x5b, 0x5b, 0x7b, 0x9f, 0x62,
0x8b, 0x1a, 0x1b, 0x1b, 0xfd, 0xff, 0xff, 0xff, 0xbf, 0x1c, 0xc8, 0xe4, 0xc4, 0xa1, 0xe4, 0x1b,
0x10, 0x47, 0x36, 0x34, 0x34, 0x6c, 0x62, 0xa4, 0xc0, 0x27, 0xaa, 0x40, 0x9f, 0x5c, 0x02, 0x32,
0x39, 0x80, 0x78, 0x09, 0x13, 0x13, 0xd3, 0x24, 0x36, 0x36, 0xb6, 0x5b, 0x20, 0xb9, 0x5f, 0xbf,
0x7e, 0xa9, 0xfd, 0xfb, 0xf7, 0x2f, 0x1f, 0xc8, 0x8c, 0x06, 0xe2, 0x1f, 0x40, 0xac, 0xcb, 0x42,
0xae, 0x45, 0x40, 0x4b, 0xca, 0xa1, 0x96, 0xcc, 0x03, 0xba, 0x38, 0x19, 0x4d, 0xfa, 0x34, 0x10,
0xc7, 0x00, 0xc5, 0x7f, 0x02, 0xe9, 0x24, 0x20, 0x2e, 0x67, 0xa2, 0x20, 0xe4, 0xdc, 0xa1, 0x74,
0x2f, 0x1e, 0x35, 0x30, 0x39, 0x77, 0x4a, 0x2c, 0x92, 0x84, 0xd2, 0x37, 0xf0, 0xa8, 0x81, 0xc9,
0x49, 0x51, 0x62, 0x11, 0x33, 0x88, 0x00, 0x06, 0xcf, 0x3f, 0x5c, 0x0a, 0x90, 0xe4, 0x98, 0x99,
0xe8, 0x95, 0x8f, 0x86, 0x9f, 0x45, 0xe0, 0xe4, 0x1d, 0x11, 0x11, 0xd1, 0x01, 0xa4, 0x0a, 0x81,
0x99, 0x8f, 0x0d, 0x98, 0x6c, 0x19, 0x80, 0x79, 0x80, 0x20, 0x3e, 0x70, 0xe0, 0x00, 0x98, 0xb6,
0xb1, 0xb1, 0xf9, 0x0f, 0xd4, 0xf3, 0x0b, 0xc8, 0xee, 0x3d, 0x79, 0xf2, 0x64, 0x15, 0x16, 0x3b,
0x8e, 0xc0, 0x4b, 0x86, 0xf0, 0xf0, 0xf0, 0x9f, 0x40, 0x85, 0x6c, 0xc4, 0x58, 0x00, 0xc2, 0x38,
0x1c, 0xf3, 0xf3, 0xcc, 0x99, 0x33, 0x1c, 0x78, 0x7d, 0x04, 0xd4, 0xc8, 0x46, 0x86, 0xc1, 0x28,
0x18, 0x08, 0xd8, 0x09, 0x06, 0x1d, 0xb2, 0x41, 0xe8, 0x86, 0x1a, 0x18, 0x18, 0x30, 0xa4, 0xa5,
0xa5, 0x31, 0x00, 0x83, 0x95, 0x61, 0xda, 0xb4, 0x69, 0x0c, 0xa7, 0x4f, 0x9f, 0x46, 0x91, 0x07,
0x89, 0x13, 0x9d, 0x18, 0xfe, 0xfc, 0xf9, 0x03, 0xc7, 0x20, 0x8b, 0x90, 0x71, 0x6a, 0x6a, 0x2a,
0x83, 0x90, 0x90, 0x10, 0x83, 0xb0, 0xb0, 0x30, 0x43, 0x46, 0x46, 0x06, 0x58, 0x0c, 0xa6, 0x8e,
0x58, 0x4b, 0xb0, 0xfa, 0x08, 0x4b, 0x90, 0xa0, 0x00, 0x90, 0x25, 0x64, 0x27, 0x6f, 0x74, 0x5f,
0x20, 0xfb, 0x70, 0xf2, 0xe4, 0xc9, 0x0c, 0xbf, 0x7f, 0xff, 0x06, 0xe3, 0x89, 0x13, 0x27, 0x52,
0x96, 0xbc, 0x41, 0x06, 0xe2, 0xf2, 0x11, 0x30, 0xc9, 0x32, 0x5c, 0xbf, 0x7e, 0x1d, 0x52, 0x24,
0x9f, 0x3e, 0x4d, 0x99, 0x45, 0xf8, 0x82, 0x8e, 0x94, 0x78, 0x20, 0xd9, 0x22, 0xf4, 0x88, 0x3e,
0x72, 0xe4, 0x08, 0x75, 0x2c, 0x42, 0x0f, 0x3a, 0x74, 0xb0, 0x71, 0xe3, 0x46, 0xea, 0x94, 0x75,
0xa0, 0x22, 0x04, 0xe6, 0x2b, 0x0a, 0xc0, 0x4f, 0x62, 0x2c, 0xea, 0x05, 0x06, 0xd5, 0x2f, 0x0a,
0x2c, 0xf9, 0x05, 0xd4, 0xdf, 0x33, 0x28, 0xda, 0x75, 0x00, 0xe1, 0xa2, 0xc4, 0xfc, 0xec, 0xf5,
0xed, 0x82, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x01, 0x0f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x05, 0x68,
0x20, 0xb6, 0x26, 0x45, 0x31, 0xa1, 0x32, 0xb9, 0x37, 0xa1, 0x2a, 0xf9, 0x22, 0x10, 0x7f, 0x80,
0xe2, 0x8b, 0x20, 0x31, 0x90, 0x1c, 0x55, 0x2c, 0x49, 0xac, 0x4e, 0xf1, 0x4f, 0xa8, 0x4a, 0xf9,
0x06, 0x34, 0xf8, 0x3f, 0x0e, 0xfc, 0x35, 0xbe, 0x32, 0xc9, 0x8f, 0x22, 0x4b, 0x12, 0x6a, 0x12,
0x54, 0x81, 0x06, 0x7d, 0x07, 0x19, 0x18, 0x5f, 0x95, 0xbc, 0x38, 0xa1, 0x22, 0xd5, 0x34, 0xad,
0x3c, 0x8d, 0x1f, 0x84, 0x41, 0xec, 0x84, 0xca, 0x94, 0x25, 0x50, 0xcb, 0xbe, 0x27, 0x57, 0x24,
0xab, 0x90, 0x6f, 0x51, 0x75, 0xca, 0x1c, 0xa8, 0x41, 0x73, 0x71, 0xaa, 0x01, 0xca, 0x41, 0x1d,
0x32, 0x9b, 0x6c, 0x8b, 0x80, 0x9a, 0x1f, 0x83, 0x0c, 0x49, 0xac, 0x4c, 0xd4, 0xc2, 0x19, 0xb4,
0x40, 0x39, 0xa8, 0x63, 0x1e, 0x91, 0xef, 0xa3, 0xaa, 0xe4, 0x3f, 0x20, 0x43, 0x1a, 0x1a, 0x1a,
0x98, 0x70, 0xa9, 0x01, 0xc9, 0x41, 0x2d, 0xfa, 0x43, 0x89, 0x45, 0xe0, 0x08, 0xa7, 0x96, 0xba,
0x51, 0x8b, 0xf0, 0xab, 0x33, 0x36, 0x36, 0xee, 0x00, 0xe2, 0x9f, 0x40, 0xfc, 0x9f, 0x4c, 0x0c,
0xd2, 0xdb, 0x86, 0x23, 0x75, 0x1e, 0x06, 0x61, 0x98, 0x45, 0x94, 0x58, 0x02, 0xc3, 0x3f, 0x08,
0x06, 0x03, 0x15, 0x2c, 0x01, 0x63, 0x8a, 0x2c, 0xca, 0xcc, 0xcc, 0xfc, 0x7f, 0xe3, 0xc6, 0x0d,
0x30, 0xce, 0xc8, 0xc8, 0xa0, 0x9d, 0x45, 0x20, 0x0b, 0xde, 0xbc, 0x79, 0x03, 0xc6, 0xd7, 0xaf,
0x5f, 0x1f, 0x06, 0x16, 0x81, 0x82, 0xeb, 0xf9, 0xf3, 0xe7, 0x60, 0x4c, 0xd3, 0xa0, 0x03, 0xe1,
0x7d, 0xfb, 0xf6, 0x81, 0x31, 0x4d, 0x13, 0x03, 0x5d, 0x2d, 0x6a, 0x6a, 0x6a, 0x02, 0x63, 0x9a,
0x5b, 0x44, 0xcd, 0x7c, 0x44, 0xb7, 0x92, 0xa1, 0x8d, 0xd2, 0xb2, 0xce, 0xc8, 0xc8, 0xa8, 0x65,
0x50, 0x34, 0xcb, 0x00, 0xfd, 0x52, 0x19, 0xe9, 0xa4, 0x86, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE unlocked_xpm[1] = {{ png, sizeof( png ), "unlocked_xpm" }};
+49 -36
View File
@@ -8,42 +8,55 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x02, 0x1d, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x94, 0xcf, 0x6a, 0x1a,
0x51, 0x14, 0xc6, 0xa7, 0xa1, 0x5d, 0xa6, 0x69, 0x37, 0x85, 0xf6, 0x1d, 0x14, 0xff, 0x6b, 0x23,
0xea, 0x3c, 0x82, 0x1a, 0x48, 0xa2, 0x48, 0x41, 0x7d, 0x01, 0x91, 0x96, 0x96, 0xac, 0x5c, 0x88,
0x4f, 0x20, 0x4c, 0x5e, 0x41, 0xa1, 0x2d, 0x29, 0x5d, 0x86, 0x2c, 0xc4, 0x95, 0x33, 0xd9, 0xa4,
0xef, 0x50, 0x02, 0x69, 0xd3, 0x86, 0x2e, 0x1a, 0x12, 0xe2, 0xed, 0xf7, 0x0d, 0x67, 0x21, 0x83,
0x72, 0xe7, 0x0a, 0x42, 0x2f, 0x1c, 0x46, 0x67, 0xee, 0xbd, 0xbf, 0xf3, 0x9d, 0xef, 0xdc, 0x6b,
0x59, 0x06, 0xc3, 0x75, 0x5d, 0xbb, 0x58, 0x2c, 0xfe, 0x4a, 0x26, 0x93, 0x8a, 0x4f, 0xfc, 0xef,
0x85, 0xf9, 0x9f, 0xc9, 0x64, 0xfe, 0x98, 0x70, 0x2c, 0x2e, 0xf2, 0x3c, 0x4f, 0x99, 0x06, 0xd7,
0x19, 0x81, 0x98, 0xe9, 0x3a, 0x20, 0x2a, 0xfb, 0xbf, 0x14, 0x41, 0xc9, 0x4e, 0x2a, 0x95, 0x3a,
0xac, 0xd5, 0x6a, 0x5e, 0xb3, 0xd9, 0x54, 0x8c, 0x4e, 0xa7, 0xa3, 0x1c, 0xc7, 0x51, 0xd3, 0xe9,
0x54, 0x0b, 0x62, 0x25, 0x74, 0x80, 0x27, 0x89, 0x44, 0xe2, 0x08, 0xcf, 0xdf, 0x9c, 0x0c, 0xd8,
0xbc, 0x5a, 0xad, 0x2a, 0x46, 0xa9, 0x54, 0xf2, 0x37, 0x28, 0x14, 0x0a, 0xaa, 0xdf, 0xef, 0xab,
0xd9, 0x6c, 0xb6, 0x9e, 0xa2, 0x48, 0x24, 0xf2, 0x1c, 0x1b, 0x9d, 0x21, 0xe6, 0x88, 0x4f, 0x00,
0xe6, 0x16, 0x3d, 0xe2, 0xc6, 0xa3, 0xd1, 0x48, 0xb5, 0xdb, 0x6d, 0x1f, 0xd8, 0x68, 0x34, 0xd4,
0x64, 0x32, 0x31, 0xf3, 0x88, 0x4a, 0x04, 0xf2, 0x17, 0x2a, 0x6a, 0x3a, 0x8f, 0x86, 0xc3, 0xa1,
0xca, 0xe5, 0x72, 0x3e, 0x6c, 0x99, 0xb2, 0x95, 0x8a, 0xa4, 0x5c, 0xf3, 0x45, 0x88, 0x9c, 0xa3,
0xde, 0xaa, 0xf2, 0x10, 0x46, 0x65, 0x83, 0xc1, 0x20, 0x9c, 0x47, 0x34, 0x9e, 0x9e, 0x00, 0xf2,
0xd1, 0xb4, 0xeb, 0x5a, 0xad, 0x96, 0xef, 0x59, 0xb0, 0x41, 0x96, 0x2a, 0xa2, 0x0a, 0x66, 0x40,
0x4f, 0x4c, 0xcf, 0xd1, 0x78, 0x3c, 0xf6, 0xb3, 0x67, 0x37, 0x6a, 0x3d, 0x02, 0xe0, 0x18, 0x93,
0xaf, 0xf0, 0xf3, 0x91, 0xa9, 0x22, 0xfa, 0x43, 0x45, 0xdd, 0x6e, 0x57, 0xaf, 0x08, 0x90, 0xaf,
0x50, 0xe5, 0xae, 0xb8, 0xeb, 0x7a, 0xba, 0x33, 0x53, 0xa9, 0x54, 0xfc, 0x12, 0x6a, 0x3d, 0x02,
0xe4, 0x0b, 0x3e, 0x78, 0xeb, 0xde, 0x0c, 0xe5, 0x72, 0xd9, 0x3f, 0xd0, 0x61, 0x14, 0x39, 0x52,
0xba, 0xad, 0xe0, 0x37, 0xde, 0xc2, 0xba, 0x5b, 0x9b, 0xdd, 0x5a, 0xaf, 0xd7, 0xdd, 0xc0, 0x77,
0x7b, 0x99, 0xa2, 0x43, 0x4e, 0x88, 0xc7, 0xe3, 0xaf, 0x2d, 0xc3, 0x81, 0xb5, 0x79, 0x69, 0xa4,
0x7d, 0xed, 0xe4, 0x6c, 0x36, 0xfb, 0x14, 0x93, 0x99, 0xcd, 0xe7, 0x35, 0x40, 0x2c, 0xfb, 0x75,
0x3e, 0x9f, 0xdf, 0x0e, 0x7b, 0x89, 0x7e, 0x90, 0xcc, 0x1a, 0x06, 0x90, 0x37, 0xb2, 0xe6, 0x5d,
0xe8, 0xcc, 0x6c, 0xdb, 0x7e, 0x8c, 0x85, 0xa7, 0x58, 0x78, 0x1b, 0x06, 0x26, 0x90, 0x07, 0xc4,
0x0d, 0x4a, 0xfe, 0xca, 0xa8, 0x0c, 0xb1, 0x58, 0xec, 0x99, 0xc0, 0x98, 0xe5, 0x49, 0x3a, 0x9d,
0xde, 0x0d, 0x34, 0xc8, 0x16, 0x3d, 0x91, 0x72, 0xb1, 0x09, 0x6e, 0xe4, 0xf9, 0x2d, 0x1a, 0x8d,
0xbe, 0x30, 0x82, 0x51, 0x19, 0x16, 0xbe, 0x17, 0xcf, 0xb8, 0xc9, 0x0f, 0xc4, 0xb9, 0xc4, 0x4f,
0x79, 0x77, 0x8d, 0x78, 0x8b, 0x78, 0x89, 0xb8, 0x90, 0x77, 0xf7, 0x48, 0xe0, 0x12, 0xb1, 0x67,
0x04, 0xa4, 0xb9, 0xec, 0x24, 0xb6, 0x3e, 0x15, 0x88, 0x0a, 0x87, 0xef, 0x16, 0x8d, 0xa7, 0x12,
0xbc, 0xbf, 0x13, 0x98, 0x0f, 0xc4, 0x9c, 0x03, 0x6b, 0x13, 0x03, 0x9b, 0x7f, 0x5f, 0x00, 0x6d,
0x0e, 0xc6, 0x72, 0x71, 0xf3, 0x20, 0x6c, 0x23, 0xaa, 0xa8, 0x20, 0x08, 0xb3, 0x36, 0x35, 0x82,
0xb0, 0x7f, 0xa8, 0x11, 0x18, 0x39, 0x35, 0x06, 0xa4, 0x45, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x02, 0xf4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x55, 0x4d, 0x4f, 0x1a,
0x51, 0x14, 0x9d, 0xa4, 0xe9, 0xa6, 0xe9, 0xd7, 0xa6, 0xe9, 0x3f, 0x68, 0xbb, 0x37, 0x62, 0x50,
0xdc, 0x35, 0x42, 0x13, 0x92, 0x06, 0x09, 0xec, 0x74, 0x05, 0x7e, 0xa0, 0x69, 0x64, 0xd5, 0x45,
0x89, 0x5d, 0x10, 0x05, 0xe3, 0xc6, 0x88, 0xa6, 0xa8, 0x11, 0x49, 0xd3, 0x85, 0x7c, 0x18, 0x05,
0x45, 0x5c, 0x89, 0xa9, 0x44, 0x4d, 0x01, 0x15, 0x74, 0x61, 0xbb, 0x60, 0xd7, 0xd2, 0x76, 0x63,
0xd3, 0xc4, 0x6e, 0x4c, 0xe7, 0xf5, 0x9e, 0x97, 0x8c, 0x19, 0x11, 0xc6, 0x19, 0x43, 0x5f, 0x72,
0x43, 0x66, 0xe6, 0xbd, 0x77, 0xee, 0x3d, 0xe7, 0xdc, 0x8b, 0x20, 0x68, 0x58, 0xb9, 0x5c, 0x6e,
0xa8, 0xbd, 0xbd, 0x5d, 0x6c, 0x6a, 0x6a, 0x62, 0xf8, 0xa5, 0xe7, 0x2d, 0x35, 0xcf, 0x3a, 0x9d,
0x4e, 0xd4, 0x82, 0x23, 0xe0, 0x50, 0x3e, 0x9f, 0x67, 0x5a, 0x03, 0xe7, 0x34, 0x01, 0x21, 0xd3,
0x9b, 0x00, 0xa1, 0x32, 0x4d, 0x40, 0x1d, 0x1d, 0x1d, 0xe2, 0xf1, 0xf1, 0x31, 0x43, 0xec, 0xef,
0xef, 0x37, 0xb6, 0x22, 0xc6, 0xd8, 0x83, 0x58, 0x2c, 0xb6, 0x34, 0x31, 0x31, 0xf1, 0x7d, 0x64,
0x64, 0x44, 0x74, 0xb9, 0x5c, 0x0c, 0x31, 0x3e, 0x3e, 0xce, 0xe8, 0x3d, 0xdb, 0xdd, 0xdd, 0x65,
0x07, 0x07, 0x07, 0x8a, 0x40, 0x60, 0x42, 0x11, 0x24, 0x91, 0x48, 0xbc, 0x1d, 0x1d, 0x1d, 0xfd,
0xd3, 0xda, 0xda, 0xca, 0x37, 0xb7, 0xb5, 0xb5, 0x31, 0xab, 0xd5, 0xca, 0x43, 0xfe, 0x6e, 0x6e,
0x6e, 0xee, 0xe6, 0x15, 0x45, 0x22, 0x91, 0x0f, 0x5d, 0x5d, 0x5d, 0xdc, 0x41, 0xfd, 0xfd, 0xfd,
0x62, 0x30, 0x18, 0x3c, 0x19, 0x1e, 0x1e, 0x66, 0x47, 0x47, 0x47, 0x3c, 0x0a, 0x85, 0x02, 0xdb,
0xd8, 0xd8, 0x60, 0x6e, 0xb7, 0x9b, 0x03, 0xf6, 0xf4, 0xf4, 0xb0, 0xbd, 0xbd, 0x3d, 0x6d, 0x1a,
0xa1, 0x12, 0x80, 0x90, 0x2d, 0xd9, 0xf4, 0xf4, 0xf4, 0x29, 0xd1, 0xf3, 0xbc, 0x9e, 0xeb, 0x0e,
0x0f, 0x0f, 0x39, 0x85, 0xd8, 0xdb, 0xdb, 0xdb, 0xab, 0xbe, 0x22, 0x68, 0x02, 0xba, 0x90, 0xe5,
0xd4, 0xd4, 0xd4, 0x69, 0xa5, 0x52, 0x79, 0x24, 0xeb, 0xa3, 0xad, 0x5a, 0x17, 0x41, 0xa3, 0x68,
0x34, 0xca, 0x2b, 0x03, 0x8d, 0xd5, 0x9a, 0xd5, 0xd4, 0x88, 0x0e, 0x2c, 0x81, 0xff, 0xbe, 0xbe,
0x3e, 0x51, 0xaa, 0x44, 0x4d, 0x1f, 0x15, 0x8b, 0x45, 0x4e, 0x23, 0x34, 0x83, 0x41, 0xae, 0xad,
0x08, 0xee, 0x42, 0x06, 0xd0, 0x44, 0x6b, 0x1f, 0xa5, 0xd3, 0x69, 0x9e, 0x7d, 0x3c, 0x1e, 0x57,
0xd6, 0x88, 0x68, 0xbb, 0xe7, 0xf1, 0x78, 0xce, 0x0d, 0x06, 0x03, 0x5b, 0x5d, 0x5d, 0x0d, 0x68,
0x9d, 0x0c, 0x30, 0x08, 0x2a, 0x82, 0xf5, 0xe5, 0x7d, 0x76, 0xa5, 0x22, 0x02, 0x7a, 0xea, 0x74,
0x3a, 0xc5, 0xce, 0xce, 0x4e, 0x56, 0x2a, 0x95, 0x5e, 0xd6, 0x98, 0x75, 0x5b, 0x4a, 0x40, 0x70,
0xa3, 0xc5, 0x62, 0x61, 0x83, 0x83, 0x83, 0xbc, 0xa9, 0xeb, 0x6a, 0x44, 0x40, 0x4f, 0x00, 0x84,
0xcd, 0x74, 0xc8, 0xa2, 0xb5, 0x22, 0x09, 0x68, 0x60, 0x60, 0xe0, 0x12, 0x50, 0xad, 0x8a, 0xee,
0x4a, 0xd4, 0xad, 0xad, 0xad, 0x5d, 0xa1, 0x0e, 0x53, 0x58, 0x69, 0x4a, 0xa3, 0xcf, 0x60, 0x24,
0xaf, 0xd7, 0x2b, 0x9a, 0x4c, 0x26, 0xf9, 0xf7, 0xa1, 0xba, 0x66, 0x98, 0x9d, 0x9d, 0xfd, 0x2c,
0x68, 0x5c, 0x33, 0x33, 0x33, 0x5f, 0x70, 0x96, 0xee, 0xa8, 0x5c, 0xbb, 0x99, 0xec, 0x1d, 0x87,
0xa0, 0xd4, 0x7c, 0xe2, 0xce, 0xce, 0x8e, 0x51, 0x2d, 0xc8, 0xf6, 0xf6, 0xb6, 0x99, 0xce, 0xfc,
0x05, 0x1b, 0xe4, 0xba, 0x88, 0x9a, 0x21, 0x7a, 0xdf, 0xe7, 0xf3, 0x9d, 0x21, 0xb3, 0x40, 0x20,
0x70, 0xa9, 0x61, 0xeb, 0xad, 0x72, 0xb9, 0xfc, 0x78, 0x72, 0x72, 0xf2, 0x37, 0xce, 0x8c, 0x8d,
0x8d, 0x9d, 0xd1, 0x1d, 0x0f, 0x55, 0x65, 0xb7, 0xbc, 0xbc, 0xec, 0x91, 0x46, 0x10, 0x4d, 0x87,
0x5f, 0xd9, 0x6c, 0xf6, 0x85, 0x52, 0x25, 0x00, 0xc1, 0xde, 0x96, 0x96, 0x16, 0x96, 0x4a, 0xa5,
0x72, 0x9a, 0xf8, 0x5e, 0x5c, 0x5c, 0x7c, 0xdf, 0xdd, 0xdd, 0xcd, 0x05, 0x05, 0x8d, 0xc4, 0xff,
0x09, 0x5d, 0xf2, 0x0e, 0xb6, 0x87, 0x23, 0xc9, 0x2c, 0x41, 0xe8, 0x08, 0xba, 0xb0, 0x07, 0x20,
0xf8, 0xb5, 0xdb, 0xed, 0x22, 0x7d, 0xfb, 0x98, 0xc9, 0x64, 0x5e, 0x53, 0x65, 0xb7, 0x55, 0x81,
0xad, 0xac, 0xac, 0xbc, 0xf1, 0xfb, 0xfd, 0x67, 0xd0, 0x0c, 0x97, 0xc0, 0x51, 0xe8, 0x31, 0x84,
0xf4, 0x37, 0x01, 0x4d, 0x40, 0xd7, 0xfa, 0xfa, 0xfa, 0x27, 0x9b, 0xcd, 0xc6, 0x13, 0x6b, 0x6e,
0x6e, 0x66, 0x46, 0xa3, 0x91, 0x85, 0xc3, 0xe1, 0x6f, 0x6a, 0xa8, 0xbf, 0xd0, 0x8c, 0xa6, 0x73,
0x0c, 0x4e, 0x22, 0xfb, 0x9e, 0xa3, 0xcf, 0x1c, 0x0e, 0x87, 0x88, 0x36, 0xc0, 0x3b, 0x08, 0x2f,
0x69, 0x92, 0x4c, 0x26, 0x33, 0x7a, 0xbd, 0x9e, 0x27, 0x80, 0x00, 0x9d, 0xf3, 0xf3, 0xf3, 0x3f,
0x55, 0x83, 0xc9, 0x40, 0xef, 0x60, 0x7a, 0x50, 0x3c, 0xc3, 0xb8, 0xaa, 0xfe, 0xbe, 0xb9, 0xb9,
0xf9, 0xca, 0x6c, 0x36, 0x5f, 0x00, 0xc9, 0xc1, 0x84, 0x46, 0x2e, 0x02, 0xbf, 0xb5, 0xb0, 0xb0,
0xf0, 0x15, 0x97, 0x57, 0x83, 0x09, 0x8d, 0x5e, 0xa0, 0x09, 0x15, 0x54, 0x83, 0x09, 0xff, 0x63,
0x01, 0x2c, 0x14, 0x0a, 0xfd, 0x90, 0x83, 0xfd, 0x03, 0x15, 0xf7, 0xfe, 0x53, 0x91, 0x84, 0x3e,
0x9c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE zoom_area_xpm[1] = {{ png, sizeof( png ), "zoom_area_xpm" }};
+44 -29
View File
@@ -8,35 +8,50 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0xbc, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0xcb, 0x4a, 0xc3,
0x40, 0x14, 0x86, 0x6b, 0xd1, 0xa5, 0xb7, 0x8d, 0xa0, 0xef, 0x90, 0x90, 0xa4, 0x0d, 0x55, 0xb3,
0xc9, 0x3b, 0x08, 0x56, 0xa1, 0xb8, 0x2c, 0x64, 0xef, 0xa5, 0xf8, 0x20, 0xd6, 0x97, 0xd0, 0xda,
0xea, 0x52, 0x7c, 0x01, 0x2f, 0x0b, 0x7d, 0x07, 0x11, 0x62, 0xab, 0x8d, 0x0b, 0x45, 0xb1, 0xf5,
0xff, 0xe5, 0x04, 0x42, 0x16, 0xed, 0x4c, 0x34, 0x1b, 0x31, 0xf0, 0x93, 0x64, 0x3a, 0x67, 0xbe,
0x39, 0x97, 0x39, 0x69, 0xa1, 0xf0, 0x7f, 0xfd, 0x89, 0xab, 0x54, 0x2a, 0xcd, 0x96, 0xcb, 0xe5,
0x0d, 0xc7, 0x71, 0x0e, 0xf1, 0x7c, 0x4a, 0xf1, 0x19, 0xaa, 0x56, 0x2a, 0x95, 0x99, 0xdf, 0x00,
0x4c, 0x61, 0xb1, 0x7d, 0xdc, 0x9f, 0xa1, 0x21, 0x14, 0x42, 0x57, 0xa2, 0x50, 0xc6, 0x9e, 0xa0,
0x86, 0xef, 0xfb, 0x93, 0x99, 0x20, 0x86, 0x61, 0xcc, 0x63, 0x81, 0x0b, 0x68, 0x00, 0x1d, 0x03,
0xb8, 0x8c, 0xe1, 0x89, 0xc4, 0x94, 0xa2, 0x6d, 0xdb, 0x2b, 0xf8, 0xad, 0x45, 0x20, 0x3c, 0x3e,
0xb7, 0x2c, 0x6b, 0x4e, 0xdb, 0x13, 0x81, 0xbc, 0x62, 0x81, 0xcd, 0x71, 0xf3, 0xb1, 0x89, 0x1a,
0xe6, 0xbe, 0x11, 0xa6, 0xe5, 0x99, 0x84, 0x6b, 0x40, 0x48, 0x10, 0x04, 0x2f, 0xf5, 0x7a, 0x7d,
0x38, 0x4a, 0x9c, 0x23, 0x30, 0x7a, 0xb6, 0xab, 0x9c, 0x78, 0xe6, 0x04, 0x06, 0x47, 0x7c, 0xe7,
0x42, 0x51, 0x14, 0x8d, 0x14, 0xe7, 0x88, 0xed, 0x09, 0x73, 0xa6, 0x54, 0x20, 0xf4, 0x82, 0x3b,
0x93, 0x9c, 0x68, 0x81, 0x5c, 0xd7, 0x5d, 0x15, 0xdb, 0xaa, 0x4a, 0xd8, 0x58, 0xc2, 0x61, 0x9c,
0x78, 0x1d, 0x10, 0x0b, 0x04, 0xb6, 0x5d, 0xe8, 0x40, 0x25, 0x74, 0x67, 0xf0, 0xea, 0x32, 0x7e,
0xd7, 0x04, 0xd1, 0xfe, 0x1a, 0xf6, 0x1d, 0x95, 0xd0, 0x75, 0x78, 0x4e, 0x7e, 0x00, 0xba, 0x41,
0x54, 0xda, 0x2a, 0x1e, 0x35, 0x25, 0x74, 0xc5, 0x5c, 0x43, 0xc7, 0x56, 0xc3, 0x84, 0xf2, 0x30,
0xea, 0x82, 0x60, 0xeb, 0x49, 0x31, 0xac, 0x8f, 0x05, 0xb1, 0x34, 0xa5, 0xad, 0xb4, 0x32, 0x80,
0x18, 0xf6, 0x9e, 0xe7, 0x79, 0xd3, 0xaa, 0x67, 0xa9, 0x21, 0x3b, 0xab, 0xa9, 0x1e, 0x58, 0x40,
0xb6, 0xc4, 0x66, 0x47, 0xb9, 0x33, 0xb0, 0x8d, 0xb0, 0x9d, 0xb0, 0xad, 0x10, 0xa6, 0x10, 0x6e,
0x42, 0x3e, 0xa1, 0x3e, 0x42, 0xbe, 0xa4, 0xd5, 0xef, 0xd8, 0x20, 0x05, 0xc6, 0x5d, 0xb6, 0x79,
0x18, 0xe3, 0x02, 0x89, 0x13, 0xcf, 0x9c, 0x48, 0xb8, 0xd8, 0xc5, 0xfb, 0x72, 0xbf, 0x33, 0x4d,
0x73, 0x41, 0x0b, 0x46, 0xcf, 0x60, 0xb8, 0x27, 0x39, 0xe3, 0x22, 0x8f, 0x3c, 0x27, 0xa2, 0xae,
0x8c, 0xf5, 0xa0, 0x6d, 0x68, 0x11, 0xba, 0x95, 0xb1, 0x0f, 0x6c, 0xe0, 0x01, 0x5a, 0xd3, 0x02,
0x32, 0xb9, 0xac, 0x24, 0x96, 0x3e, 0x3d, 0x10, 0x2f, 0x9a, 0x1c, 0x4b, 0x26, 0x9e, 0x9e, 0x60,
0xfc, 0x5d, 0x60, 0xdf, 0x40, 0xa5, 0x76, 0x94, 0xf1, 0x63, 0x79, 0x9f, 0x00, 0xe5, 0x07, 0x63,
0xb8, 0xb8, 0x78, 0x1a, 0x96, 0x8b, 0x57, 0xf4, 0x20, 0x0d, 0xcb, 0xed, 0x0f, 0x4d, 0x1a, 0xf6,
0x05, 0x34, 0x6e, 0x0d, 0x75, 0xfe, 0xd5, 0x32, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0xce, 0x00, 0x00, 0x02, 0xac, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0x3b, 0x6b, 0x9a,
0x61, 0x14, 0x0e, 0x94, 0x2e, 0x6d, 0x62, 0xbb, 0xf4, 0x2f, 0xa4, 0xdd, 0x45, 0xc5, 0xcb, 0x58,
0x90, 0x80, 0x50, 0x54, 0x74, 0xd3, 0x29, 0x31, 0xba, 0x74, 0x10, 0xa4, 0x43, 0xd5, 0x6e, 0x5e,
0x36, 0xaf, 0xa9, 0x0a, 0x5e, 0x28, 0x1d, 0x34, 0x1a, 0xe2, 0x1d, 0xb2, 0x28, 0x54, 0x51, 0x68,
0x05, 0x45, 0x97, 0xa4, 0x7b, 0x6b, 0xdb, 0xa1, 0x69, 0x85, 0x74, 0x09, 0xfd, 0xde, 0x9e, 0x47,
0x62, 0x11, 0x49, 0xf4, 0xd3, 0xda, 0x4e, 0x15, 0x0e, 0xea, 0xf7, 0x9e, 0x73, 0x9e, 0xf7, 0x7d,
0xce, 0x73, 0xce, 0xfb, 0x6d, 0x6c, 0xfc, 0xff, 0xfc, 0x8b, 0x0f, 0x63, 0x6c, 0x93, 0xec, 0xd1,
0x95, 0xdd, 0x5d, 0x77, 0xf2, 0x7b, 0xd9, 0x6c, 0xf6, 0xc8, 0xe7, 0xf3, 0x7d, 0x72, 0x38, 0x1c,
0x97, 0x7b, 0x7b, 0x7b, 0x0c, 0x86, 0xdf, 0xf4, 0x6c, 0x78, 0x78, 0x78, 0x98, 0x23, 0x1f, 0xc1,
0x1f, 0x81, 0x14, 0x0a, 0x85, 0x17, 0x2e, 0x97, 0xeb, 0x87, 0x4c, 0x26, 0x63, 0x42, 0xa1, 0x90,
0xc9, 0xe5, 0x72, 0xa6, 0xd5, 0x6a, 0xc7, 0x36, 0xfd, 0xcc, 0xed, 0x76, 0x5f, 0x1c, 0x1f, 0x1f,
0xdb, 0x57, 0x02, 0xc9, 0x64, 0x32, 0xaf, 0x0d, 0x06, 0x03, 0x87, 0x64, 0x16, 0x8b, 0x85, 0x8b,
0x44, 0x22, 0xa7, 0x95, 0x4a, 0x25, 0xd4, 0xef, 0xf7, 0x9f, 0xc0, 0xca, 0xe5, 0xf2, 0x41, 0x34,
0x1a, 0x3d, 0xdd, 0xdf, 0xdf, 0x1f, 0xfb, 0xc0, 0x37, 0x9d, 0x4e, 0xbf, 0x5a, 0xfa, 0x24, 0x08,
0x14, 0x8b, 0xc5, 0x2c, 0x1c, 0x0e, 0x9f, 0xb7, 0xdb, 0xed, 0xc7, 0x37, 0xf9, 0xb6, 0x5a, 0x2d,
0x65, 0x28, 0x14, 0xfa, 0x06, 0x5f, 0xa3, 0xd1, 0xc8, 0xf1, 0x3e, 0x19, 0x6a, 0x02, 0xba, 0xb0,
0x4b, 0x4a, 0x70, 0x6e, 0xb7, 0xdb, 0x4f, 0x6c, 0x36, 0xdb, 0xd7, 0x79, 0x06, 0x1f, 0x80, 0x21,
0x06, 0x34, 0xf2, 0xaa, 0x19, 0x15, 0xf7, 0x08, 0xfc, 0x9b, 0xcd, 0x66, 0x0e, 0x27, 0xb1, 0x5a,
0xad, 0xdf, 0x89, 0x26, 0xd6, 0xe9, 0x74, 0xae, 0x35, 0xac, 0xc1, 0x87, 0x7c, 0x77, 0x40, 0x23,
0x6a, 0x46, 0xe2, 0xc9, 0x2e, 0x04, 0x82, 0xba, 0xb0, 0x33, 0xd4, 0x04, 0xff, 0x91, 0xa4, 0xd7,
0xeb, 0xb1, 0xd1, 0x68, 0x74, 0xad, 0x61, 0x0d, 0x3e, 0xf0, 0xa5, 0x9a, 0x9d, 0x21, 0xd6, 0xef,
0xf7, 0x0f, 0x17, 0xd1, 0xb6, 0x45, 0x34, 0x5c, 0x2a, 0x14, 0x0a, 0x56, 0x2a, 0x95, 0x82, 0xcb,
0x02, 0x51, 0xcc, 0x01, 0x4e, 0x04, 0xe9, 0xcf, 0xed, 0x33, 0x5a, 0x7c, 0x48, 0x3d, 0xc2, 0x69,
0x34, 0x1a, 0x06, 0x65, 0x2d, 0x0b, 0x34, 0x18, 0x0c, 0x34, 0x6a, 0xb5, 0x9a, 0x99, 0x4c, 0x26,
0x8e, 0x72, 0x6d, 0xcf, 0x03, 0xda, 0x06, 0x10, 0x9c, 0x29, 0x48, 0xbd, 0x2c, 0x50, 0xb7, 0xdb,
0xd5, 0x21, 0x16, 0x39, 0x16, 0x01, 0x6d, 0x4e, 0xa8, 0xa3, 0x22, 0xaf, 0x44, 0x1d, 0x84, 0x84,
0x1c, 0x0b, 0x95, 0x37, 0x11, 0x43, 0x2c, 0x16, 0x3b, 0x5b, 0x41, 0x0c, 0xef, 0x11, 0x8b, 0xd1,
0xc4, 0x47, 0xde, 0x39, 0x14, 0x14, 0x52, 0x45, 0x33, 0xf2, 0x95, 0x77, 0xa3, 0xd1, 0x50, 0x51,
0xcc, 0x4f, 0xb0, 0x91, 0xcb, 0xe5, 0x32, 0x7c, 0x1a, 0x56, 0x80, 0xa6, 0xc3, 0xce, 0x82, 0xc1,
0x20, 0xaf, 0x86, 0x25, 0x95, 0x9d, 0x04, 0x02, 0x81, 0x11, 0x62, 0xbc, 0x5e, 0x2f, 0x1a, 0xf6,
0x3e, 0xaf, 0xe9, 0x80, 0x31, 0x32, 0x19, 0x41, 0xe8, 0xf8, 0x66, 0xb3, 0xb9, 0x73, 0x93, 0x2f,
0x4e, 0x02, 0x10, 0xf8, 0x4a, 0x24, 0x12, 0x46, 0xf3, 0xf0, 0xdd, 0x52, 0xf3, 0x0e, 0x03, 0x12,
0xb3, 0x0b, 0xbb, 0x04, 0x8d, 0x18, 0xa0, 0x94, 0xe4, 0x25, 0x64, 0x0f, 0x45, 0x12, 0x65, 0x11,
0xd4, 0x11, 0x74, 0xc1, 0x07, 0x20, 0xf8, 0xd6, 0xeb, 0xf5, 0x1c, 0xad, 0xbd, 0xa9, 0xd7, 0xeb,
0xcf, 0xe8, 0x64, 0xb7, 0x79, 0x81, 0xe5, 0xf3, 0xf9, 0xe7, 0x1e, 0x8f, 0xe7, 0x02, 0x35, 0x43,
0x12, 0x28, 0x0a, 0x3d, 0x06, 0x9b, 0x5c, 0x13, 0xa8, 0x09, 0xe8, 0xaa, 0x56, 0xab, 0x6f, 0x75,
0x3a, 0xdd, 0x78, 0x63, 0x22, 0x91, 0x88, 0x29, 0x95, 0x4a, 0x96, 0x4a, 0xa5, 0x3e, 0x0e, 0x87,
0xc3, 0x07, 0x7c, 0x87, 0xac, 0x00, 0xb3, 0x0b, 0x4a, 0x72, 0x3a, 0x9d, 0xb8, 0xf8, 0xb8, 0xdd,
0xdd, 0x5d, 0x0e, 0x12, 0xc6, 0x33, 0x14, 0x7e, 0x52, 0x93, 0x62, 0xb1, 0x58, 0x97, 0x4a, 0xa5,
0xe3, 0x0d, 0xc0, 0x40, 0x67, 0x3c, 0x1e, 0xff, 0xc2, 0x1b, 0x6c, 0x0a, 0xf4, 0x0e, 0xa6, 0xc7,
0xd5, 0x55, 0xbe, 0x35, 0xbb, 0x5e, 0xab, 0xd5, 0x9e, 0xaa, 0x54, 0xaa, 0xdf, 0x40, 0xd3, 0x60,
0xeb, 0xbe, 0xf6, 0x6f, 0x25, 0x93, 0xc9, 0x0f, 0x48, 0x3e, 0x0b, 0xb6, 0xf6, 0x17, 0x18, 0xd0,
0x84, 0x13, 0xcc, 0x82, 0xfd, 0x95, 0xb7, 0x25, 0x80, 0x25, 0x12, 0x89, 0xcf, 0xd3, 0x60, 0xbf,
0x00, 0xd9, 0x6f, 0x34, 0xee, 0x2c, 0x55, 0x33, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82,
};
+46 -29
View File
@@ -8,35 +8,52 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0xa9, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0xcb, 0x4a, 0xc3,
0x40, 0x14, 0xad, 0x45, 0x97, 0xbe, 0x36, 0x82, 0xfe, 0x43, 0x4a, 0xf3, 0x22, 0x6a, 0x36, 0xf9,
0x07, 0xc1, 0x5a, 0x28, 0x7e, 0x85, 0x8f, 0xe2, 0x87, 0x58, 0x7f, 0x42, 0x6b, 0xab, 0x4b, 0xf1,
0x07, 0x7c, 0x2c, 0xf4, 0x1f, 0x44, 0x88, 0xad, 0x76, 0xa5, 0x58, 0x6c, 0x3d, 0x07, 0xee, 0x22,
0x0c, 0x09, 0x99, 0x89, 0x66, 0x23, 0x06, 0x0e, 0x09, 0x33, 0x73, 0xef, 0x99, 0x73, 0x5f, 0x6d,
0xa5, 0xf2, 0xff, 0xfc, 0x89, 0xc7, 0x75, 0xdd, 0x45, 0xcf, 0xf3, 0x76, 0x1c, 0xc7, 0x39, 0xc1,
0xf7, 0x05, 0xc1, 0x6f, 0xa0, 0x11, 0x04, 0xc1, 0xc2, 0x6f, 0x10, 0xcc, 0xc1, 0xd9, 0x11, 0xde,
0x6f, 0xc0, 0x14, 0x88, 0x81, 0x5b, 0x41, 0x2c, 0x6b, 0xaf, 0x40, 0x3b, 0x8a, 0xa2, 0xd9, 0x42,
0x24, 0x96, 0x65, 0x2d, 0xc3, 0xc1, 0x35, 0x30, 0x01, 0xce, 0x40, 0xb8, 0x8e, 0xe5, 0x99, 0xc4,
0x91, 0xaa, 0x6d, 0xdb, 0x1b, 0xd8, 0xeb, 0x92, 0x10, 0x8a, 0xaf, 0xea, 0xf5, 0xfa, 0x92, 0xb1,
0x12, 0x21, 0x79, 0x87, 0x83, 0x66, 0xde, 0x79, 0x5c, 0xa2, 0x85, 0xb3, 0x1f, 0x24, 0x33, 0x52,
0x26, 0xe1, 0x9a, 0xa4, 0x91, 0x48, 0xb8, 0xa6, 0x19, 0x64, 0x54, 0x76, 0xa0, 0x9d, 0x78, 0xe6,
0x04, 0x06, 0xa7, 0x19, 0xfb, 0xa9, 0x44, 0xb2, 0x77, 0xce, 0x9c, 0x69, 0x15, 0x08, 0x55, 0xd0,
0x91, 0xe4, 0xc4, 0x88, 0xc8, 0xf7, 0xfd, 0x4d, 0xb1, 0x6d, 0xe8, 0x84, 0x8d, 0x25, 0x1c, 0x2b,
0x89, 0xd7, 0x22, 0x62, 0x81, 0x60, 0x6f, 0x00, 0x1c, 0xeb, 0x84, 0xee, 0x12, 0xaa, 0x6e, 0x54,
0xc7, 0x79, 0x48, 0x9c, 0xbf, 0x83, 0x7d, 0x5f, 0x27, 0x74, 0x7d, 0xf6, 0xc9, 0x0f, 0x88, 0xee,
0x11, 0x95, 0x9e, 0x8e, 0xa2, 0x8e, 0x84, 0xae, 0x5a, 0x6a, 0xe8, 0x38, 0x6a, 0xe8, 0x88, 0xcd,
0x68, 0x4a, 0x04, 0xdb, 0x50, 0x8a, 0x61, 0x3b, 0x97, 0x88, 0xa5, 0x29, 0x63, 0xa5, 0x5b, 0x80,
0x88, 0x61, 0x1f, 0x86, 0x61, 0x38, 0xaf, 0xdb, 0x4b, 0x6d, 0xb9, 0x59, 0x4b, 0x97, 0x08, 0x24,
0xbb, 0x62, 0xb3, 0xaf, 0x3d, 0x19, 0x38, 0x46, 0x38, 0x4e, 0x38, 0x56, 0xd2, 0xc8, 0x32, 0x48,
0xbe, 0x80, 0x11, 0x42, 0xbe, 0x66, 0x34, 0xef, 0x38, 0x20, 0x85, 0x8c, 0xb7, 0xec, 0xb1, 0x19,
0x95, 0x02, 0xa9, 0x32, 0x27, 0x12, 0x2e, 0xaa, 0x1c, 0xc9, 0xfb, 0xb1, 0x56, 0xab, 0xad, 0x18,
0x91, 0x51, 0x19, 0x0c, 0x0f, 0x25, 0x67, 0x74, 0xf2, 0xc2, 0x3e, 0x11, 0x0c, 0x64, 0x6d, 0x08,
0xec, 0x01, 0xab, 0xc0, 0x83, 0xac, 0x8d, 0x71, 0x81, 0x67, 0x60, 0xcb, 0x88, 0x90, 0xc9, 0x65,
0x25, 0xb1, 0xf4, 0xa9, 0x40, 0x54, 0x74, 0xb8, 0x96, 0x4c, 0x3c, 0x95, 0x60, 0xfd, 0x33, 0xd1,
0x5f, 0x63, 0xad, 0x71, 0x54, 0xf0, 0xc7, 0xf2, 0x49, 0x69, 0xe6, 0x72, 0xc8, 0x18, 0x2e, 0x3a,
0x57, 0xc9, 0x4a, 0x51, 0x45, 0x05, 0x2a, 0x59, 0x69, 0x7f, 0x68, 0x54, 0xb2, 0x6f, 0xb3, 0xb9,
0x02, 0xae, 0xbf, 0xa2, 0x7e, 0x91, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
0xce, 0x00, 0x00, 0x02, 0xbd, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0x3b, 0x8b, 0x5a,
0x41, 0x14, 0x5e, 0x08, 0x69, 0x92, 0xdd, 0x4d, 0x8a, 0x0d, 0xf9, 0x07, 0x9b, 0xf4, 0xa2, 0xe2,
0xa3, 0x0c, 0xc8, 0x82, 0x10, 0x54, 0xb4, 0x52, 0x2b, 0x9f, 0x4d, 0xda, 0x14, 0x51, 0xd3, 0xf9,
0xe8, 0x7c, 0x6e, 0x54, 0xf0, 0x41, 0x48, 0xe1, 0x6b, 0xf1, 0x2d, 0x56, 0x0a, 0x51, 0x14, 0x12,
0x41, 0xd0, 0x66, 0x4d, 0x61, 0x97, 0x98, 0xa4, 0xd9, 0x10, 0xd8, 0x34, 0x4b, 0xee, 0x64, 0x3e,
0xf1, 0x86, 0x1b, 0x61, 0xf5, 0xea, 0x9a, 0x54, 0xb9, 0x70, 0xf0, 0x3a, 0x73, 0xe6, 0x7c, 0x33,
0xe7, 0xfb, 0xce, 0x99, 0xbb, 0xb7, 0xf7, 0xff, 0xf9, 0x17, 0x0f, 0x21, 0x64, 0x9f, 0xda, 0xe3,
0x85, 0xdd, 0xdd, 0x75, 0xf0, 0x7b, 0xf9, 0x7c, 0xfe, 0xcc, 0xef, 0xf7, 0x7f, 0x76, 0x3a, 0x9d,
0x57, 0x66, 0xb3, 0x99, 0xc0, 0xf0, 0x4e, 0xc7, 0x66, 0xb9, 0x5c, 0xae, 0x40, 0x7d, 0x0e, 0x6f,
0x04, 0x52, 0x2e, 0x97, 0x5f, 0xba, 0xdd, 0xee, 0x1f, 0x52, 0xa9, 0x94, 0x08, 0x04, 0x02, 0x22,
0x93, 0xc9, 0x88, 0x46, 0xa3, 0x99, 0x1b, 0x77, 0xcc, 0xe3, 0xf1, 0x5c, 0x16, 0x8b, 0x45, 0xc7,
0x56, 0x20, 0xd9, 0x6c, 0xf6, 0x8d, 0xc1, 0x60, 0x60, 0x10, 0xcc, 0x6e, 0xb7, 0x33, 0xd1, 0x68,
0xf4, 0xbc, 0x5e, 0xaf, 0x87, 0x47, 0xa3, 0xd1, 0x53, 0x58, 0xad, 0x56, 0x3b, 0x8d, 0xc5, 0x62,
0xe7, 0x56, 0xab, 0x75, 0xee, 0x03, 0xdf, 0x4c, 0x26, 0xf3, 0x7a, 0xe3, 0x93, 0x60, 0xa1, 0x48,
0x24, 0x22, 0x91, 0x48, 0xe4, 0xa2, 0xdf, 0xef, 0x3f, 0x59, 0xa4, 0xf1, 0x88, 0x9a, 0x60, 0x61,
0x47, 0x18, 0xeb, 0xf5, 0x7a, 0x8a, 0x70, 0x38, 0xfc, 0x0d, 0xbe, 0x46, 0xa3, 0x91, 0xe1, 0x7d,
0x32, 0x70, 0x82, 0x74, 0x61, 0x97, 0x34, 0xc0, 0xc5, 0x6c, 0x36, 0x7b, 0xc0, 0xce, 0x35, 0x9b,
0xcd, 0x84, 0x5e, 0xaf, 0x27, 0x30, 0xbc, 0xb3, 0xe3, 0xf0, 0x01, 0x18, 0xd6, 0x20, 0x8d, 0xbc,
0x38, 0xa3, 0xe4, 0x9e, 0x21, 0xff, 0x36, 0x9b, 0x8d, 0x61, 0x4f, 0xc2, 0x05, 0x42, 0x30, 0x18,
0x17, 0x08, 0x0f, 0xf5, 0x3d, 0x41, 0x1a, 0xc1, 0x19, 0x15, 0x4f, 0x7e, 0x2d, 0x10, 0xd4, 0x85,
0x40, 0xe0, 0x64, 0x79, 0x6e, 0x15, 0x10, 0x1e, 0xca, 0xd9, 0x04, 0x73, 0x81, 0x40, 0x60, 0xb6,
0x2e, 0x6d, 0x07, 0x0e, 0x87, 0xe3, 0x4a, 0x2e, 0x97, 0x93, 0x6a, 0xb5, 0x1a, 0x02, 0x0f, 0x08,
0xc8, 0xda, 0x60, 0x30, 0x98, 0xb0, 0x40, 0x78, 0xe7, 0xce, 0xc1, 0x97, 0xae, 0x39, 0xc5, 0x89,
0x20, 0xfd, 0x95, 0x75, 0x46, 0x27, 0x1f, 0xd1, 0x1a, 0x61, 0xd4, 0x6a, 0x35, 0x81, 0xb2, 0x40,
0x3a, 0xf8, 0x60, 0x83, 0x5f, 0x67, 0xf0, 0x81, 0xef, 0x78, 0x3c, 0x56, 0xab, 0x54, 0x2a, 0x62,
0xb1, 0x58, 0x18, 0xfa, 0xff, 0x78, 0x15, 0xd0, 0x31, 0x80, 0xe0, 0x4c, 0x17, 0xa9, 0x36, 0x05,
0x1a, 0x0e, 0x87, 0x5a, 0xac, 0x45, 0x8c, 0x75, 0x40, 0xfb, 0x6c, 0xea, 0x68, 0x9d, 0x6c, 0x95,
0x3a, 0x08, 0x09, 0x31, 0xd6, 0x2a, 0x8f, 0x15, 0x43, 0x3c, 0x1e, 0x9f, 0x6c, 0x21, 0x86, 0x0f,
0x98, 0x43, 0x6b, 0xe2, 0x23, 0xef, 0x02, 0x08, 0x85, 0x54, 0x51, 0x8c, 0x7c, 0x81, 0x3a, 0x9d,
0x8e, 0x92, 0xae, 0xf9, 0x89, 0x6c, 0x14, 0x0a, 0x85, 0x2c, 0x9f, 0x82, 0x3d, 0x44, 0xd1, 0x21,
0x58, 0x28, 0x14, 0xe2, 0x55, 0xb0, 0xd3, 0xe9, 0xf4, 0x61, 0x30, 0x18, 0xfc, 0x8e, 0x35, 0x3e,
0x9f, 0x0f, 0x05, 0x7b, 0x9f, 0x57, 0x77, 0x40, 0x1b, 0x61, 0x5b, 0x10, 0x2a, 0xbe, 0xdb, 0xed,
0x9e, 0x5c, 0xd7, 0x82, 0x70, 0x12, 0x80, 0xc0, 0x57, 0x2c, 0x16, 0x13, 0xda, 0x0f, 0xdf, 0x6f,
0xd4, 0xef, 0xd0, 0x20, 0xd1, 0xbb, 0xb0, 0x4b, 0xa4, 0x11, 0x0d, 0x94, 0x06, 0x79, 0x05, 0xd9,
0x43, 0x91, 0x54, 0x2c, 0x51, 0xf0, 0x88, 0x74, 0xc1, 0x07, 0x20, 0xf8, 0xd5, 0xe9, 0x74, 0x0c,
0x9d, 0x7b, 0xdb, 0x6e, 0xb7, 0x9f, 0xd3, 0xcd, 0xdc, 0xe6, 0x05, 0x56, 0x2a, 0x95, 0x5e, 0x78,
0xbd, 0xde, 0x4b, 0x70, 0x86, 0x20, 0x50, 0x14, 0x6a, 0x0c, 0xc6, 0x5e, 0x13, 0xe0, 0x04, 0xe9,
0x6a, 0x34, 0x1a, 0xef, 0xb4, 0x5a, 0xed, 0x7c, 0x63, 0x42, 0xa1, 0x90, 0x28, 0x14, 0x0a, 0x92,
0x4e, 0xa7, 0x3f, 0x71, 0x53, 0xbf, 0x96, 0x33, 0xf4, 0x2e, 0x28, 0xc9, 0xe5, 0x72, 0xe1, 0xe2,
0x63, 0x4c, 0x26, 0x13, 0x03, 0x09, 0x63, 0x0c, 0xc4, 0xb3, 0x9c, 0x54, 0x2a, 0x95, 0xb6, 0x44,
0x22, 0xf9, 0x5d, 0x5f, 0x48, 0x67, 0x22, 0x91, 0xf8, 0xca, 0x1b, 0x8c, 0x03, 0x7a, 0x07, 0xdd,
0x63, 0x71, 0x95, 0x1f, 0x2c, 0xcf, 0xb7, 0x5a, 0xad, 0x67, 0x4a, 0xa5, 0xf2, 0x8f, 0x62, 0x66,
0xc1, 0x76, 0x7d, 0xed, 0xdf, 0x4a, 0xa5, 0x52, 0x1f, 0x11, 0x7c, 0x19, 0x6c, 0xe7, 0x1f, 0x30,
0x48, 0x13, 0x4e, 0xb0, 0x0c, 0xf6, 0x57, 0xbe, 0x96, 0x00, 0x96, 0x4c, 0x26, 0xbf, 0x70, 0xc1,
0x7e, 0x01, 0x69, 0x5a, 0xc4, 0x6b, 0xd2, 0x18, 0xe5, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE zoom_in_xpm[1] = {{ png, sizeof( png ), "zoom_in_xpm" }};
+46 -28
View File
@@ -8,34 +8,52 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0x9f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0x4b, 0x4a, 0xc3,
0x50, 0x14, 0xad, 0x41, 0x87, 0xfe, 0x26, 0x82, 0xee, 0x21, 0x21, 0x6d, 0x12, 0xa2, 0x66, 0x92,
0x3d, 0x08, 0xd6, 0x42, 0x71, 0x15, 0x7e, 0x8a, 0x0b, 0xb1, 0x6e, 0x42, 0x6b, 0xab, 0x43, 0x71,
0x03, 0x7e, 0x06, 0xba, 0x07, 0x11, 0x62, 0xab, 0x1d, 0x29, 0x16, 0x5b, 0xcf, 0x81, 0x3b, 0x08,
0x6f, 0xd2, 0xfb, 0xa2, 0x99, 0x88, 0x0f, 0x0e, 0x49, 0x5f, 0xdf, 0x7d, 0xe7, 0x9e, 0xfb, 0x6b,
0x2b, 0x95, 0xff, 0xf5, 0x27, 0x56, 0x10, 0x04, 0x8b, 0x61, 0x18, 0xee, 0xd4, 0x6a, 0xb5, 0x13,
0xbc, 0x5f, 0x10, 0x7c, 0x07, 0xea, 0x71, 0x1c, 0x2f, 0xfc, 0x06, 0xc1, 0x1c, 0x2e, 0x3b, 0xc2,
0xf3, 0x0d, 0x98, 0x00, 0x19, 0x70, 0x2b, 0xc8, 0x64, 0xef, 0x15, 0x68, 0xa5, 0x69, 0x3a, 0x5b,
0x88, 0xc4, 0x75, 0xdd, 0x65, 0x5c, 0x70, 0x0d, 0x8c, 0x81, 0x33, 0x10, 0xae, 0x63, 0x7b, 0x26,
0x77, 0xc4, 0xa9, 0x56, 0xab, 0x1b, 0xf8, 0xae, 0x43, 0x42, 0x28, 0xbe, 0xf2, 0x7d, 0x7f, 0xc9,
0x5a, 0x89, 0x90, 0xbc, 0xe3, 0x82, 0xc6, 0xb4, 0xf3, 0x70, 0xa2, 0x89, 0xb3, 0x1f, 0x24, 0xb3,
0x52, 0x26, 0xe1, 0x1a, 0x6b, 0x48, 0x0c, 0x32, 0x2a, 0x3b, 0x50, 0x27, 0x9e, 0x39, 0x81, 0xc1,
0x69, 0x81, 0x9c, 0x9e, 0x33, 0x67, 0xaa, 0x02, 0xa1, 0x0a, 0x7a, 0x26, 0x39, 0xb1, 0x5a, 0x51,
0x14, 0x6d, 0x8a, 0x6d, 0x5d, 0x13, 0x02, 0x96, 0x70, 0x66, 0x24, 0x5e, 0xbb, 0x1c, 0xd8, 0xf6,
0x81, 0x63, 0x8d, 0xfc, 0x4b, 0xa8, 0xba, 0xc9, 0x7d, 0x9e, 0x68, 0x90, 0x3b, 0x7f, 0x07, 0xfb,
0x9e, 0x26, 0x74, 0x3d, 0xf6, 0xc9, 0x0f, 0x88, 0xee, 0x11, 0x95, 0xae, 0x46, 0x51, 0x5b, 0x42,
0xe7, 0x94, 0x1a, 0x3a, 0x8e, 0x1a, 0x7a, 0xc8, 0x66, 0xb4, 0x65, 0x81, 0x6d, 0x22, 0xc5, 0xb0,
0x3d, 0xf5, 0x30, 0x4b, 0x53, 0xc6, 0x4a, 0xa7, 0x00, 0x11, 0xc3, 0x3e, 0x48, 0x92, 0x64, 0x5e,
0xdb, 0x0f, 0x2d, 0xf1, 0xac, 0x69, 0x41, 0xb2, 0x2b, 0x36, 0xfb, 0x6a, 0xcf, 0x38, 0x46, 0x38,
0x4e, 0x38, 0x56, 0x34, 0x64, 0x42, 0xf2, 0x05, 0x0c, 0x11, 0xf2, 0x35, 0xab, 0x30, 0x70, 0x40,
0x0a, 0x19, 0xbd, 0xec, 0xb2, 0x19, 0x8d, 0x02, 0x71, 0x98, 0x13, 0x09, 0x17, 0x2b, 0x6f, 0x28,
0xcf, 0x47, 0xcf, 0xf3, 0x56, 0xac, 0xc8, 0xa8, 0x0c, 0x86, 0x87, 0x92, 0x33, 0x5e, 0xf2, 0xc2,
0x3e, 0x11, 0xf4, 0x65, 0x6f, 0x00, 0xec, 0x01, 0xab, 0xc0, 0x83, 0xec, 0x8d, 0xe0, 0xc0, 0x33,
0xb0, 0x65, 0x45, 0xc8, 0xe4, 0xb2, 0x92, 0x58, 0xfa, 0x54, 0x20, 0x2a, 0xda, 0xdc, 0xcb, 0x27,
0x9e, 0x4a, 0xb0, 0xff, 0x99, 0xeb, 0xaf, 0x91, 0x6a, 0x1c, 0x15, 0xfc, 0xb1, 0x7c, 0x32, 0x9a,
0xb9, 0x1c, 0x32, 0x86, 0x8b, 0x97, 0x9b, 0x64, 0xa5, 0xa8, 0xa2, 0x02, 0x93, 0xac, 0xb4, 0x3f,
0x34, 0x26, 0xd9, 0x37, 0xc7, 0x61, 0xe9, 0x1f, 0x03, 0x13, 0x08, 0xbc, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x02, 0xb9, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x56, 0xdd, 0x6b, 0x52,
0x71, 0x18, 0xde, 0x4d, 0x10, 0x7d, 0xac, 0xba, 0x88, 0xfe, 0x83, 0xd5, 0xbd, 0xa0, 0xe2, 0xc7,
0x55, 0x92, 0x0c, 0x82, 0xa6, 0xa3, 0xab, 0xda, 0x2e, 0xf2, 0x6b, 0xfb, 0x0b, 0x46, 0xce, 0x2d,
0xe8, 0x63, 0x73, 0x35, 0x36, 0xc5, 0xe3, 0xf2, 0x18, 0xfb, 0x20, 0x74, 0x4d, 0x8f, 0x5f, 0x43,
0x85, 0x14, 0x4b, 0x61, 0x63, 0x12, 0x11, 0x83, 0x79, 0xb3, 0x15, 0xec, 0x72, 0xae, 0x2e, 0x72,
0x5d, 0x2c, 0x0a, 0xd9, 0xf9, 0xf5, 0x7b, 0x6c, 0x67, 0x88, 0xd1, 0xf1, 0xb8, 0xac, 0xab, 0x0e,
0xbc, 0x30, 0xc7, 0xf3, 0xbe, 0xcf, 0xfb, 0x3e, 0xef, 0xc7, 0x39, 0x1d, 0x1d, 0xff, 0x9f, 0x7f,
0xf1, 0x10, 0x42, 0xce, 0x10, 0xf2, 0xfd, 0xca, 0x4f, 0x23, 0xa7, 0xdb, 0x1c, 0xfc, 0xf3, 0x39,
0x8e, 0x0b, 0x46, 0x5d, 0xae, 0xc9, 0xdd, 0x91, 0x11, 0x7b, 0xd5, 0x62, 0x31, 0x11, 0x18, 0xfe,
0x76, 0xb9, 0x9e, 0x94, 0xc3, 0xe1, 0x60, 0x84, 0x92, 0x76, 0xfe, 0x11, 0xc9, 0xf2, 0x32, 0x77,
0x6f, 0x6c, 0xec, 0xfe, 0x57, 0x95, 0x4a, 0x45, 0x64, 0x32, 0x19, 0x51, 0xab, 0xd5, 0xa4, 0xb7,
0xd7, 0x58, 0xb3, 0xfa, 0xff, 0x8d, 0x8f, 0x3f, 0xd8, 0x8f, 0xc7, 0x43, 0x8e, 0x63, 0x91, 0x84,
0x42, 0xc1, 0x40, 0x5f, 0xdf, 0x2d, 0x1e, 0xc1, 0x06, 0x07, 0x6d, 0xbc, 0xcf, 0xc7, 0x6c, 0xa6,
0xd3, 0x09, 0x66, 0x63, 0xe3, 0xed, 0x0d, 0x58, 0x2a, 0x15, 0x9f, 0x61, 0x59, 0xef, 0xa6, 0xcd,
0x66, 0xa9, 0x61, 0x80, 0x5d, 0x5a, 0x0a, 0x3c, 0x6f, 0xb9, 0x12, 0x38, 0xca, 0xe5, 0x72, 0xe2,
0xf5, 0xba, 0x2b, 0xc5, 0x62, 0x5e, 0xf7, 0x3b, 0xec, 0xda, 0xda, 0x6b, 0x3d, 0xc3, 0x4c, 0xef,
0x01, 0xdb, 0xdf, 0x7f, 0x9b, 0x97, 0x5c, 0x19, 0x7a, 0x02, 0xb9, 0x90, 0x25, 0xc3, 0xb8, 0x2a,
0xe5, 0xf2, 0x87, 0x8b, 0xcd, 0x7c, 0x80, 0x01, 0x19, 0x7c, 0x20, 0xa3, 0xa4, 0x9e, 0x85, 0xc3,
0x81, 0x28, 0xf4, 0x1f, 0x18, 0xb0, 0xf2, 0x62, 0x95, 0x34, 0x3e, 0xc5, 0x62, 0xa1, 0x1b, 0x32,
0xa2, 0x67, 0x1c, 0xb7, 0xc8, 0x35, 0x75, 0xc0, 0x74, 0x21, 0x33, 0xf4, 0xa4, 0xd5, 0xbe, 0xb2,
0x2c, 0xb3, 0x05, 0x5f, 0xb7, 0x7b, 0xb2, 0xdc, 0x6c, 0x4f, 0xce, 0x3a, 0x1c, 0x77, 0xab, 0x1a,
0x8d, 0x86, 0x24, 0x93, 0x51, 0x0f, 0xfd, 0x7d, 0x21, 0x97, 0xcb, 0x39, 0xa5, 0x18, 0xb0, 0xd4,
0x67, 0x06, 0x15, 0x61, 0xf4, 0x45, 0xf7, 0x8c, 0x90, 0x6f, 0x97, 0xe9, 0x8e, 0xf0, 0x46, 0xa3,
0x81, 0x60, 0xb2, 0x28, 0x58, 0x66, 0x32, 0x99, 0x88, 0x56, 0xab, 0x15, 0x35, 0x60, 0x80, 0x2d,
0x95, 0xde, 0x19, 0x0d, 0x86, 0x1e, 0x62, 0xb5, 0x9a, 0x79, 0x1a, 0xab, 0x4b, 0x8c, 0xa8, 0x0b,
0x44, 0x00, 0x53, 0x27, 0x43, 0xab, 0x44, 0xeb, 0xeb, 0x6f, 0x6e, 0xc2, 0x17, 0x31, 0x90, 0xb4,
0xe8, 0x89, 0x11, 0xa4, 0xa3, 0x7b, 0x72, 0x2c, 0xe9, 0x30, 0x48, 0x76, 0xfb, 0x50, 0xb5, 0xe9,
0xe4, 0x09, 0xc3, 0xe0, 0xf7, 0x7b, 0xb7, 0x5a, 0x1f, 0x06, 0xef, 0x7b, 0xf8, 0xe2, 0x34, 0x49,
0x18, 0xef, 0x60, 0x04, 0x0d, 0xc5, 0xa8, 0x62, 0x19, 0xa5, 0x92, 0xac, 0xac, 0xe4, 0xae, 0x53,
0x9f, 0x03, 0xa8, 0x11, 0x89, 0x2c, 0x86, 0xa4, 0x5c, 0xe8, 0x4e, 0x2c, 0x1d, 0x32, 0xf3, 0x78,
0xa6, 0x25, 0x2d, 0xec, 0xf6, 0x76, 0xe9, 0x12, 0xc5, 0x7e, 0x81, 0xcf, 0xc4, 0xc4, 0x23, 0xba,
0xb0, 0x95, 0xf3, 0x92, 0xb2, 0xc3, 0x19, 0x11, 0x4e, 0x10, 0x36, 0x7e, 0x75, 0xf5, 0x55, 0xb7,
0x58, 0x25, 0x20, 0x01, 0x16, 0xd5, 0x64, 0xb3, 0xe9, 0x6c, 0x4b, 0x7a, 0xe3, 0x40, 0xe2, 0x76,
0x21, 0x4b, 0xc8, 0x88, 0x03, 0x4a, 0x8f, 0xea, 0x53, 0x8c, 0x3d, 0x26, 0x32, 0x95, 0x8a, 0xf9,
0xd0, 0x47, 0xc8, 0x05, 0x0c, 0x48, 0x0e, 0xb1, 0x07, 0x99, 0x4c, 0x2a, 0x91, 0xcf, 0xbf, 0x1c,
0xa2, 0xea, 0x9c, 0x90, 0x44, 0x96, 0x48, 0x84, 0x87, 0x9d, 0xce, 0x87, 0xfb, 0xe8, 0x19, 0x82,
0x60, 0xa2, 0xb0, 0x63, 0x30, 0xe1, 0x35, 0x01, 0x02, 0xc8, 0x45, 0x83, 0x67, 0x05, 0x52, 0x85,
0x42, 0x41, 0xf4, 0xfa, 0x6b, 0x64, 0x61, 0xe1, 0xd9, 0x8e, 0x14, 0xe9, 0x8f, 0x7a, 0x86, 0xdb,
0x85, 0x49, 0x1a, 0x1d, 0x1d, 0xc6, 0x8b, 0x8f, 0x37, 0x9b, 0xef, 0x10, 0xac, 0xc1, 0xd4, 0xd4,
0xe3, 0x72, 0x2c, 0xf6, 0x22, 0x24, 0xf4, 0x24, 0x93, 0x49, 0xc6, 0x95, 0x4a, 0x65, 0x2d, 0x01,
0x18, 0xe4, 0x9c, 0x9d, 0x65, 0x3f, 0x49, 0x26, 0xab, 0x23, 0x3d, 0x85, 0x45, 0x3c, 0x7c, 0x95,
0xff, 0xb2, 0x27, 0x85, 0x42, 0xd6, 0xae, 0xd3, 0x5d, 0x3d, 0x22, 0xaa, 0x27, 0x6b, 0xf7, 0x37,
0xc5, 0xc9, 0xf9, 0x79, 0xff, 0x0e, 0x82, 0x37, 0x92, 0xb5, 0xfd, 0x03, 0x06, 0x32, 0xa1, 0x82,
0x46, 0xb2, 0xbf, 0xf2, 0xb5, 0x04, 0xb2, 0xb9, 0x39, 0xf6, 0x63, 0x3d, 0xd9, 0x0f, 0x96, 0x23,
0x77, 0x01, 0xad, 0x45, 0x73, 0x44, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE zoom_out_xpm[1] = {{ png, sizeof( png ), "zoom_out_xpm" }};
+45 -26
View File
@@ -8,32 +8,51 @@
static const unsigned char png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0x7b, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0xcf, 0x4a, 0xc3,
0x40, 0x10, 0xc6, 0xfb, 0xe7, 0x64, 0x95, 0x7a, 0x17, 0x8d, 0x05, 0x8f, 0x91, 0x90, 0xbf, 0x84,
0x3c, 0x84, 0x68, 0x29, 0x79, 0x0e, 0x2f, 0x82, 0xa6, 0xbd, 0xf8, 0x0a, 0x1e, 0x6c, 0xf5, 0xea,
0x0b, 0x28, 0x56, 0x5f, 0x41, 0x73, 0x10, 0x14, 0x3d, 0xa4, 0x27, 0xb1, 0xfa, 0x12, 0xa2, 0x92,
0xfa, 0x0d, 0x8c, 0xb0, 0x2d, 0xd8, 0xee, 0x54, 0x4f, 0xa5, 0x0b, 0x3f, 0x4a, 0xd3, 0x9d, 0xfd,
0x66, 0x66, 0xbf, 0xdd, 0xb4, 0x50, 0x98, 0x8f, 0x99, 0x18, 0x8e, 0xe3, 0xac, 0xfb, 0xbe, 0xdf,
0xf2, 0x3c, 0xef, 0x1a, 0xdc, 0x83, 0x27, 0x70, 0x05, 0x0e, 0x80, 0xf1, 0x67, 0x01, 0x2c, 0xb2,
0xec, 0xba, 0xee, 0x09, 0x3e, 0xbf, 0xc0, 0x00, 0x7c, 0x82, 0x17, 0xf0, 0x0a, 0x3e, 0x94, 0x67,
0x1d, 0x9a, 0x3b, 0x75, 0x15, 0x08, 0xce, 0x78, 0xb1, 0x5b, 0xb0, 0x13, 0x45, 0xd1, 0xc2, 0xcf,
0xef, 0x96, 0x65, 0x2d, 0x22, 0x89, 0x3a, 0xff, 0x46, 0x73, 0x32, 0x8a, 0x11, 0x57, 0x02, 0x7a,
0x20, 0xa7, 0xf6, 0xe0, 0x51, 0x71, 0xcc, 0xf4, 0x12, 0xe6, 0x24, 0x3c, 0x37, 0x0b, 0xc3, 0xb0,
0xaa, 0x2d, 0x84, 0xfd, 0x38, 0xe5, 0x2c, 0xf7, 0x05, 0xc9, 0x25, 0x1c, 0xd3, 0xd6, 0x0a, 0xb0,
0x6d, 0xbb, 0x46, 0x7d, 0x87, 0xd8, 0x0d, 0x65, 0x2b, 0x68, 0x44, 0x11, 0x71, 0x29, 0xef, 0xa7,
0xa1, 0x93, 0x19, 0x39, 0x69, 0x00, 0xa1, 0x6d, 0xe9, 0xbe, 0x22, 0xa6, 0xa1, 0xdd, 0x09, 0xb6,
0x2d, 0x39, 0xa9, 0x22, 0x15, 0x32, 0x4d, 0x73, 0x89, 0x2a, 0x82, 0xe0, 0xa5, 0x8e, 0xd0, 0x23,
0x59, 0x58, 0x58, 0xc9, 0x21, 0x57, 0x32, 0xca, 0x3b, 0x9c, 0xb8, 0xf2, 0x9b, 0xd0, 0x03, 0xe8,
0x4b, 0x84, 0xe0, 0xb4, 0x55, 0xe5, 0xac, 0xa9, 0x1c, 0x8f, 0xab, 0xa8, 0xcb, 0x41, 0x15, 0xe1,
0x91, 0xe8, 0x8e, 0x88, 0xd0, 0x1a, 0x1b, 0x3a, 0x66, 0x68, 0x48, 0x84, 0x70, 0x78, 0xb7, 0x54,
0x21, 0x7c, 0x3f, 0x9b, 0x94, 0x99, 0xc1, 0x66, 0x48, 0x27, 0x1c, 0xd4, 0xa1, 0x11, 0xc7, 0x71,
0x99, 0x5a, 0xce, 0x42, 0x39, 0x12, 0xdd, 0xd4, 0x69, 0x43, 0x9b, 0x03, 0x92, 0x29, 0x4d, 0x71,
0xae, 0xbb, 0xb9, 0x55, 0xbe, 0xe7, 0x72, 0x16, 0x2b, 0x49, 0x4c, 0x01, 0xa7, 0x45, 0xd2, 0x4b,
0xb5, 0xc7, 0x19, 0xa6, 0xb4, 0x67, 0x74, 0x91, 0x6a, 0x74, 0x63, 0x57, 0x7c, 0x83, 0x73, 0x65,
0x1d, 0xe5, 0x95, 0x40, 0x4e, 0x7a, 0x03, 0xcf, 0xe0, 0xe8, 0xdf, 0x5f, 0x7c, 0x41, 0x10, 0xac,
0x61, 0xe1, 0x3d, 0x70, 0x01, 0xee, 0x08, 0xb8, 0xaa, 0x39, 0xff, 0x4b, 0x30, 0x5b, 0xe3, 0x1b,
0x66, 0x68, 0xb1, 0xc5, 0xd2, 0xe8, 0x19, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x02, 0xae, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x05, 0xc3,
0x02, 0x1c, 0x3c, 0x78, 0x30, 0x6c, 0xd6, 0xac, 0x59, 0x47, 0x3b, 0x3b, 0x3b, 0x9f, 0x35, 0x35,
0x35, 0x7d, 0x68, 0x6d, 0x6d, 0x7d, 0xdf, 0xd3, 0xd3, 0x73, 0x6f, 0xd1, 0xa2, 0x45, 0x9b, 0x2e,
0x5f, 0xbe, 0xac, 0x4c, 0xb1, 0x05, 0x7b, 0xf6, 0xec, 0xb1, 0x9d, 0x36, 0x6d, 0xda, 0x83, 0xd0,
0xd0, 0xd0, 0xff, 0xc6, 0xc6, 0xc6, 0x60, 0x6c, 0x69, 0x69, 0xf9, 0xdf, 0xc2, 0xc2, 0x02, 0xcc,
0x36, 0x35, 0x35, 0xfd, 0x9f, 0x97, 0x97, 0xf7, 0x77, 0xe1, 0xc2, 0x85, 0xc7, 0x5f, 0xbc, 0x78,
0xc1, 0x4d, 0x96, 0x25, 0x6b, 0xd6, 0xac, 0xc9, 0x29, 0x2e, 0x2e, 0xfe, 0x05, 0x32, 0x30, 0x3a,
0x3a, 0xfa, 0x5f, 0x7f, 0x7f, 0xff, 0xc3, 0xa5, 0x4b, 0x97, 0xae, 0xdd, 0xb6, 0x6d, 0x5b, 0x2b,
0x10, 0xf7, 0xcf, 0x9d, 0x3b, 0x77, 0x67, 0x77, 0x77, 0xf7, 0x5b, 0x0f, 0x0f, 0x0f, 0xb0, 0xe5,
0x13, 0x27, 0x4e, 0x7c, 0x77, 0xfc, 0xf8, 0x71, 0x4d, 0x92, 0x2c, 0xd9, 0xb2, 0x65, 0x4b, 0x10,
0xd0, 0xa5, 0xbf, 0x41, 0x2e, 0xee, 0xea, 0xea, 0xfa, 0xb0, 0x73, 0xe7, 0xce, 0x70, 0x6c, 0xea,
0xfe, 0xff, 0xff, 0xcf, 0x04, 0x74, 0xd0, 0xc4, 0xfc, 0xfc, 0x7c, 0xb0, 0x83, 0x26, 0x4d, 0x9a,
0xf4, 0x16, 0x08, 0xf8, 0x88, 0xb2, 0x04, 0xa8, 0x99, 0xbd, 0xaf, 0xaf, 0xef, 0x2d, 0x48, 0xe3,
0x84, 0x09, 0x13, 0xde, 0x5c, 0xbd, 0x7a, 0x55, 0x82, 0x90, 0x9e, 0xed, 0xdb, 0xb7, 0x83, 0x1d,
0x66, 0x6e, 0x6e, 0xfe, 0x7f, 0xde, 0xbc, 0x79, 0xc7, 0x88, 0xb2, 0x68, 0xfd, 0xfa, 0xf5, 0xfd,
0x8e, 0x8e, 0x8e, 0xff, 0x73, 0x72, 0x72, 0xfe, 0x1c, 0x38, 0x70, 0xc0, 0x92, 0xd8, 0x50, 0x00,
0xea, 0x9b, 0xe0, 0xec, 0xec, 0xfc, 0x1f, 0xe8, 0xbb, 0xbf, 0x67, 0xcf, 0x9e, 0x25, 0x1c, 0x84,
0x40, 0xdf, 0x3c, 0x04, 0xf9, 0x66, 0xce, 0x9c, 0x39, 0x27, 0x49, 0x09, 0x6e, 0x60, 0x48, 0xb0,
0xb4, 0xb7, 0xb7, 0xbf, 0x33, 0x31, 0x31, 0xf9, 0x0f, 0x4c, 0x1c, 0x1b, 0x09, 0x29, 0x66, 0xad,
0xab, 0xab, 0xfb, 0xe9, 0xe9, 0xe9, 0xf9, 0x1f, 0x98, 0xa4, 0xd3, 0x88, 0xb4, 0x80, 0x09, 0x88,
0x05, 0x41, 0x18, 0x68, 0xc1, 0x01, 0x68, 0x5c, 0xdd, 0x83, 0x89, 0x01, 0x31, 0x1b, 0x36, 0x4d,
0xf2, 0xe9, 0xe9, 0xe9, 0xff, 0x32, 0x33, 0x33, 0xff, 0x01, 0xd9, 0x32, 0xc4, 0xfa, 0x04, 0x98,
0x0a, 0xdf, 0x95, 0x97, 0x97, 0xff, 0x29, 0x2b, 0x2b, 0xfb, 0x0b, 0xb2, 0x28, 0x3c, 0x3c, 0xfc,
0x1f, 0x88, 0x0f, 0x4c, 0x28, 0x3f, 0xde, 0xbf, 0x7f, 0xaf, 0x80, 0x4d, 0x93, 0x62, 0x6a, 0x6a,
0xea, 0xbf, 0xdc, 0xdc, 0x5c, 0x90, 0x45, 0xe2, 0xc4, 0x06, 0x1b, 0x30, 0xe3, 0x6e, 0x07, 0xa5,
0x50, 0x58, 0x5e, 0x83, 0xe1, 0xd9, 0xb3, 0x67, 0x9f, 0xc1, 0xe5, 0x3a, 0x1e, 0xa0, 0x4b, 0x7e,
0x07, 0x05, 0x05, 0xfd, 0x3f, 0x73, 0xe6, 0x8c, 0x37, 0xb1, 0x16, 0xdd, 0xbb, 0x77, 0x4f, 0x1d,
0x98, 0x78, 0xfe, 0x22, 0x5b, 0x92, 0x96, 0x96, 0xf6, 0x17, 0x98, 0xaf, 0xcc, 0x71, 0x6a, 0x02,
0x16, 0x33, 0xaf, 0x40, 0x11, 0xba, 0x78, 0xf1, 0xe2, 0x6d, 0xa4, 0x24, 0x06, 0x60, 0x86, 0xbd,
0x83, 0x6c, 0xd1, 0xf4, 0xe9, 0xd3, 0xaf, 0xe2, 0xd5, 0x00, 0xca, 0xfd, 0xa0, 0xfc, 0x50, 0x5f,
0x5f, 0xff, 0xfd, 0xf1, 0xe3, 0xc7, 0x42, 0xc4, 0x5a, 0x04, 0xcc, 0xd4, 0xa5, 0xee, 0xee, 0xee,
0x60, 0x4b, 0x62, 0x63, 0x63, 0xff, 0x01, 0x13, 0x93, 0x17, 0x5e, 0x0d, 0xcf, 0x9e, 0x3d, 0x13,
0x01, 0x59, 0x02, 0xb2, 0x0c, 0x18, 0xf6, 0x57, 0x40, 0xa9, 0x8a, 0xd8, 0x44, 0x01, 0x2c, 0x6c,
0x3f, 0x83, 0x2c, 0x9a, 0x32, 0x65, 0xca, 0x1d, 0xa2, 0x5c, 0xb7, 0x72, 0xe5, 0xca, 0x36, 0x60,
0x41, 0xfa, 0xcf, 0xc9, 0xc9, 0x09, 0x14, 0x84, 0x57, 0x9f, 0x3c, 0x79, 0x22, 0x4c, 0x6c, 0xa2,
0x08, 0x0b, 0x0b, 0xfb, 0xbf, 0x6b, 0xd7, 0xae, 0x58, 0xa2, 0xc3, 0x7c, 0xf9, 0xf2, 0xe5, 0xab,
0x43, 0x42, 0x42, 0xfe, 0x99, 0x99, 0x99, 0x81, 0x83, 0x11, 0x68, 0xc8, 0x8e, 0x0b, 0x17, 0x2e,
0xf8, 0x00, 0x5d, 0x2e, 0x01, 0xc4, 0xb2, 0xd8, 0xf2, 0xc7, 0xfd, 0xfb, 0xf7, 0x35, 0xf6, 0xef,
0xdf, 0xff, 0x98, 0xe4, 0x12, 0x7c, 0xf5, 0xea, 0xd5, 0x6d, 0xb5, 0xb5, 0xb5, 0x3f, 0x60, 0xd5,
0x42, 0x60, 0x60, 0xe0, 0xff, 0x8c, 0x8c, 0x0c, 0x70, 0x3e, 0x03, 0x96, 0x69, 0x0f, 0x71, 0x04,
0xa1, 0x1c, 0x59, 0xd5, 0xc5, 0xf3, 0xe7, 0xcf, 0x45, 0x97, 0x2d, 0x5b, 0xb6, 0x0e, 0x58, 0x8a,
0xbf, 0xa8, 0xaa, 0xaa, 0xfa, 0x9d, 0x92, 0x92, 0x02, 0xb6, 0x68, 0xc1, 0x82, 0x05, 0xf7, 0x68,
0x56, 0xd3, 0x02, 0x5d, 0xcb, 0x09, 0xca, 0xd4, 0xa0, 0x12, 0x04, 0x88, 0x99, 0x47, 0xdb, 0x1e,
0x74, 0x01, 0x00, 0x27, 0x3b, 0xb2, 0x14, 0x1b, 0x88, 0x5c, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE zoom_redraw_xpm[1] = {{ png, sizeof( png ), "zoom_redraw_xpm" }};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

+301 -305
View File
@@ -1,315 +1,311 @@
/* XPM */
static char *icon_kicad[] = {
/* columns rows colors chars-per-pixel */
"128 128 181 2 ",
"128 128 177 2 ",
" c #A33E03",
". c #A44006",
"X c #A5430A",
"o c #A64710",
"O c #A74811",
"+ c #A84B15",
"@ c #A94E18",
"# c #AB521F",
"o c #A74912",
"O c #A84A13",
"+ c #A74E1B",
"@ c #A94D19",
"# c #AB521D",
"$ c #876900",
"% c #8A6B00",
"& c #8F7000",
"* c #947300",
"= c #997700",
"- c #9C7A00",
"; c #A27E00",
": c #AC5724",
"> c #AE5827",
", c #AF5D2C",
"< c #B26335",
"1 c #B3673A",
"2 c #B46A3E",
"3 c #B56C41",
"4 c #BA7146",
"5 c #B77148",
"6 c #B9744C",
"7 c #B97751",
"8 c #BC7C56",
"9 c #BD7F5B",
"0 c #A68100",
"q c #AB8500",
"w c #AF8800",
"e c #B38B00",
"r c #B88F00",
"t c #B58F0C",
"y c #BD9200",
"u c #BC950D",
"i c #B79313",
"p c #B5931D",
"a c #BC9618",
"s c #BA9723",
"d c #BB9B2D",
"f c #BC9F38",
"g c #C19600",
"h c #C69900",
"j c #C89B00",
"k c #C39A0A",
"l c #C29B13",
"z c #C39D1C",
"x c #C4A024",
"c c #C8A52B",
"v c #C2A231",
"b c #C7A739",
"n c #9B8A4D",
"m c #BF825E",
"M c #A0925F",
"N c #BBA146",
"B c #BCA24A",
"V c #BFA750",
"C c #BF8563",
"Z c #B8896D",
"A c #A49561",
"S c #A79863",
"D c #AB9B65",
"F c #A3976E",
"G c #B0A067",
"H c #B4A36A",
"J c #B9A76C",
"K c #BCAB6E",
"L c #C0835F",
"P c #C1A440",
"I c #CDAE44",
"U c #C6AA4A",
"Y c #C5AD5A",
"T c #CAB053",
"R c #CFB55E",
"E c #D1B557",
"W c #C18664",
"Q c #C48865",
"! c #C38B6A",
"~ c #C38F72",
"^ c #C49173",
"/ c #C99374",
"( c #C6967A",
") c #C99678",
"_ c #C7997D",
"` c #C9997D",
"' c #C0AE6F",
"] c #C9B366",
"[ c #C4B16D",
"{ c #D4BC6A",
"} c #C1AF70",
"| c #CEB971",
" . c #C9B778",
".. c #D5BF73",
"X. c #D3C07D",
"o. c #A9A187",
"O. c #ADA489",
"+. c #B2AA8E",
"@. c #ABA692",
"#. c #B6AE91",
"$. c #B8AF91",
"%. c #BCB394",
"&. c #B3B3B3",
"*. c #BBBBBB",
"=. c #C79C83",
"-. c #C89F86",
";. c #CCA187",
":. c #CBA38B",
">. c #D2A58B",
",. c #D5A88E",
"<. c #CEBD84",
"1. c #C8BA89",
"2. c #CDA790",
"3. c #CEA994",
"4. c #CDAD9B",
"5. c #D3AB94",
"6. c #D2AF9A",
"7. c #C0B797",
"8. c #C4BB9A",
"9. c #C9BF9E",
"0. c #D3B19D",
"q. c #D3B5A3",
"w. c #D5B8A7",
"e. c #D5BBAB",
"r. c #DABDAC",
"t. c #D5BFB2",
"y. c #D4C48C",
"u. c #CDC093",
"i. c #CAC09F",
"p. c #D1C69E",
"a. c #D7CA9A",
"s. c #CDC3A1",
"d. c #D1C7A3",
"f. c #D4CAA6",
"g. c #DBCFA4",
"h. c #D5CBA9",
"j. c #D9CEA9",
"k. c #DCD1AC",
"l. c #CEC9B4",
"z. c #CCC0B9",
"x. c #D6C1B4",
"c. c #DDC5B6",
"v. c #D5CDB3",
"b. c #DAC6BB",
"n. c #D3CDBC",
"m. c #D9C9BF",
"M. c #DAD1B1",
"N. c #DCD4BC",
"B. c #E0C7B8",
"V. c #E1C8B9",
"C. c #C3C3C3",
"Z. c #CFC6C1",
"A. c #CCCBCB",
"S. c #D1CEC3",
"D. c #DCCCC2",
"F. c #D6D2C4",
"G. c #DED3C6",
"H. c #D3D2CB",
"J. c #DDD4CD",
"K. c #D4D4D4",
"L. c #DCD7D1",
"P. c #DED9D5",
"I. c #DCDCDC",
"U. c #E5CFC2",
"Y. c #E6D0C3",
"T. c #E8D2C5",
"R. c #E2D3CB",
"E. c #E1DCCD",
"W. c #E0D7D1",
"Q. c #E4DBD4",
"!. c #E9DDD5",
"~. c #E3DED9",
"^. c #E6E1DE",
"/. c #ECE2DC",
"(. c #E4E4E4",
"). c #E9E5E3",
"_. c #ECECEC",
"`. c #F2EDEA",
"'. c #F4F4F4",
"]. c #F9F9F9",
"[. c None",
"& c #906F00",
"* c #8F7000",
"= c #8E710B",
"- c #947300",
"; c #997700",
": c #9D7A00",
"> c #93750B",
", c #97780B",
"< c #9C7B0B",
"1 c #A27E00",
"2 c #AC5421",
"3 c #AF5927",
"4 c #AF5B2A",
"5 c #B15E2E",
"6 c #927A24",
"7 c #A86036",
"8 c #AD683F",
"9 c #B26232",
"0 c #B46638",
"q c #B4693D",
"w c #B66E45",
"e c #AF704B",
"r c #B77047",
"t c #B67249",
"y c #B9744C",
"u c #BB7B56",
"i c #BD7E5A",
"p c #B17B5B",
"a c #A68100",
"s c #AB8500",
"d c #AF8800",
"f c #A4820C",
"g c #A9860C",
"h c #AE890C",
"j c #B48B00",
"k c #B88F00",
"l c #B28D0C",
"z c #BC9200",
"x c #B6910D",
"c c #BC950D",
"v c #BD9919",
"b c #B89417",
"n c #978136",
"m c #9A8437",
"M c #9D8738",
"N c #9F8838",
"B c #B99721",
"V c #BC9B25",
"C c #A48C3A",
"Z c #A88F3B",
"A c #AC933C",
"S c #BB9D35",
"D c #B1973D",
"F c #B59A3E",
"G c #B89D3F",
"H c #C19600",
"J c #C69900",
"K c #C89B00",
"L c #C0970D",
"P c #C69D0F",
"I c #C39D19",
"U c #C5A225",
"Y c #C0A02D",
"T c #CBA72D",
"R c #C7A83A",
"E c #C4A435",
"W c #B99E40",
"Q c #BD805C",
"! c #BDA44C",
"~ c #BE8463",
"^ c #B0876F",
"/ c #B58A71",
"( c #A59B77",
") c #C1825E",
"_ c #C4A846",
"` c #C7A943",
"' c #C8AD51",
"] c #C2AA59",
"[ c #CCB35E",
"{ c #D0B350",
"} c #C28460",
"| c #C58967",
" . c #C18A6B",
".. c #C68F70",
"X. c #C59274",
"o. c #C6967B",
"O. c #C99779",
"+. c #CA987B",
"@. c #C6B065",
"#. c #CAB56E",
"$. c #D0B96A",
"%. c #C3B071",
"&. c #C7B67A",
"*. c #CDBA76",
"=. c #D1BE7F",
"-. c #D4BE73",
";. c #B49685",
":. c #B79886",
">. c #BBA89E",
",. c #BBB4AF",
"<. c #B3B3B3",
"1. c #BBBBBB",
"2. c #C69E87",
"3. c #CB9D82",
"4. c #CBA38B",
"5. c #C7B98B",
"6. c #CABA82",
"7. c #CFA790",
"8. c #CDAC99",
"9. c #CDA994",
"0. c #D3AB93",
"q. c #D1AE9A",
"w. c #D3B29E",
"e. c #CFB3A2",
"r. c #C6B6AC",
"t. c #D2B3A1",
"y. c #D4BAAB",
"u. c #DABDAD",
"i. c #D3BDB1",
"p. c #CEC08F",
"a. c #D4C388",
"s. c #CDC29B",
"d. c #D5C795",
"f. c #CEC7AF",
"g. c #D5C9A0",
"h. c #D2C8A8",
"j. c #D9CDA6",
"k. c #D5C2B7",
"l. c #DAC1B2",
"z. c #D6CEB3",
"x. c #D6C3B9",
"c. c #D8C8BE",
"v. c #D5C9B9",
"b. c #D5D0BD",
"n. c #D9D2B8",
"m. c #DCD3B1",
"M. c #C3C3C3",
"N. c #CAC7C6",
"B. c #CBCBCB",
"V. c #DBCBC2",
"C. c #D1CEC3",
"Z. c #DCD4C5",
"A. c #DFD9C6",
"S. c #D5D3CC",
"D. c #DED6CC",
"F. c #D4D4D4",
"G. c #DED6D1",
"H. c #DCD9D4",
"J. c #DCDBDB",
"K. c #E1CCC1",
"L. c #E1D0C6",
"P. c #E4D6CE",
"I. c #E3DECE",
"U. c #E1D9D5",
"Y. c #E2DEDB",
"T. c #EAE2DE",
"R. c #E4E3DE",
"E. c #E4E4E4",
"W. c #EDE6E2",
"Q. c #EBE8E6",
"!. c #EBEBEB",
"~. c #F1E7E1",
"^. c #F1E9E3",
"/. c #F1EBE8",
"(. c #F4F4F4",
"). c #F9F9F9",
"_. c None",
/* pixels */
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j h j j j j j j j j j j j j j j j j j j j [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j [.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j h j h j j j j j j j j j j j j j [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j [.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.h j j j h j j h j j j j j j j j j j j j j j j j j j j j j j h j j j j j j j j j j h j j j j j j j j j j j j h j h j h j h j h j j h j [.[.[.[.[.[.[.[.[.[.[.[.[.j j j h j j j j j j j j j j j j j j j j j j j h j j h j j j j j j j j [.[.[.[.[.",
"[.[.[.[.[.[.[.h j j h j j h j j j j h h j j h j h j h h h h h j h j h j h h h h h j j h h h h h h h h j h j h h h h h j j j h j h j j h h j h h h j h j [.[.[.[.[.[.[.[.[.[.[.[.j j j j j h j j j j h h j j h j j j j g h h j j j h j h j j j j h h h [.[.[.[.[.",
"[.[.[.[.[.[.h h h h h h h h h h h h h h h h h h h h h h h j h h h j h h h j h h h h h h j h j j h j h h h j h j j h h h h h h h h h h h h h h h h h h h h [.[.[.[.[.[.[.[.[.[.[.g h h j h h h h h h h j h h h h g j j j h h h h h h h j g j g h j h h [.[.[.[.[.",
"[.[.[.[.[.[.h h h h h h h h h h h h h h h h h h h h h h h h h h j j h j h h h h h h h h h h h h h h h h j h j j h h h h j h h j h h h h h h h h h h h h h h [.[.[.[.[.[.[.[.[.[.[.j j g h h h h h h h h j h h h h h g j h h h h h h h h j h j h h h h [.[.[.[.[.",
"[.[.[.[.[.[.h h h h h h h h h j g h h h h h h j h h h h h h h h j y h j h h h h h h h g h h h j h h h h g j g j h h h h g h h j h h h h h h h h h h h h h h h [.[.[.[.[.[.[.[.[.[.g h g h h h h h h g h g h h h h j g h h h h h h h j g j g g h h h h [.[.[.[.[.",
"[.[.[.[.[.h g h g g h g h g E X.X.X.{ X.X.X.{ X.{ X.X.X.........X.....X...X...X...X.X.{ X.X...X.....X.X.....X.X.....X.X.....X.X.........X.I h h g h h g g h g h h [.[.[.[.[.[.[.[.[.[.j h h h h h h h h h h h h g j h h h g h g g h h h h h h h h h h [.[.[.[.[.",
"[.[.[.[.[.g h h h h h g g h M.(.).).(.).(.(.).).).).).(.).).(.(.(._.(.).).).(._.).).).).(.(.).).).).(.(.).).(.(.(.).(.(.).).(.(.).).(.(.(.(.{ h h h g h h g g h h g [.[.[.[.[.[.[.[.[.[.h h y h h g h g h g g h h g h g g h h h h g g h h g g h h g h [.[.[.[.[.",
"[.[.[.[.[.h g g g h h h h h k.).(.(.).(.(._.(._.).(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(.(.).(.(._.(.(.(.(.).(.).(.(.(.(.(.).(.).y.h g h g g h h g g h h [.[.[.[.[.[.[.[.[.[.j h h h h g h g g h h g h g h h g h g h h h g h h h h g h g [.[.[.[.[.",
"[.[.[.[.[.g h g g g g g g g k.).(.).(.(.(.(.(.(.(.).(._.(.(._.(.(.(.).(.).(.(.(._.(.(.).(.(.(.(.(.(.(._.(.).(.(.(.(.(._.).(.(._.(.(._.(._.(.(.(.g.k h g g g h g h g g g [.[.[.[.[.[.[.[.[.[.y h g g h g g h g g h g g h g h g h g g h g g g g g g g h [.[.[.[.[.",
"[.[.[.[.[.g g g g g g g g g k.(.(.(.).(.(.(.(.(.(.(.(.(.).(.(.(.).).(.(.(.(.(.(.(.(.(.(.).).(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.).(.(.(.(.(.(.(.(.(.N.z g g h g g h y h g g [.[.[.[.[.[.[.[.[.[.h g g g g g h g g g g g g g g g g g g g g g g g g g g g [.[.[.[.[.",
"[.[.[.[.[.h g g g g h g g g k.(.(.(.(.(._.'.'._._.'.'.'.'._.'._._.].'._._.'.'.'.'._._.'._.].'._.`.!.r.r.r.r.).'._.'._.]._.'._.].'.'.'.'.(.(.(.(.).(.E.c g g g g g h g g g g [.[.[.[.[.[.[.[.[.[.g h g g g g g g h g g g g g h g g g g h g g g g g g g [.[.[.[.[.",
"[.[.[.[.[.g g g g g y g g g j.(.(.(.(.(.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. . T.].].].].].].].].].].].].]._.(.(.(.(.(.(.^.I y g h g g g g g g g g [.[.[.[.[.[.[.[.[.g g g g g g g g g g g g g g y g g g g g g g g g g g [.[.[.[.[.",
"[.[.[.[.[.g g g g g g g g g j.(.(.(.(.(.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. T.].].].].].].].].].].].].].].'.(.(.I.(.(.(.^.R y g y g y g g g y g j [.[.[.[.[.[.[.[.[.[.g g g g g g g g g g g g g g g g g g g g g g g g [.[.[.[.[.",
"[.[.[.[.[.g g g g g y g g g k.(.(.(.(.(.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,.. . T.].].].].].].].].].].].].].].].].(.(.(.(.I.(.(.X.g y h y h y g g y y y [.[.[.[.[.[.[.[.[.[.g y g y y y g g g g y g g g g g y g g g g y g [.[.[.[.[.",
"[.[.[.[.[.y y y y g g y y g j.(.(.(.(.(.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. T.].].].].].].].].].].].].].].].].'.(.(.(.(.I.(.(.a.k y y y g y y h j y y [.[.[.[.[.[.[.[.[.[.g g g g g y g y g g g g g y g g g y g g g g [.[.[.[.[.",
"[.[.[.[.[.g y g g y y g g y j.(.(.(.I.I.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].>. T.].].].].].].].].].].].].].].].].].].(.(.I.(.(.(.I.M.l h y y h y y h y y h [.[.[.[.[.[.[.[.[.[.g y g y g y y g y g y g y g y y y g y g g [.[.[.[.[.",
"[.[.[.[.[.y g y y g y y y r j.(.I.(.(.(.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. . X T.].].].].].].].].].].].].].].].].].].'._.(.(.I.(.I.^.E.x y y y y g y y y y y [.[.[.[.[.[.[.[.[.[.g y g y g g y g g g y g y y g g y g y g [.[.[.[.[.",
"[.[.[.[.[.y y g y y g y g y j.I.(.I.(.I.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. Y.].].].].].].].].].].].].].].].].].].].]._.(.I.(.(.(.I.E.b y y y y y y h y y y y [.[.[.[.[.[.[.[.[.g y y y y g y y y y y g y g g y y y y [.[.[.[.[.",
"[.[.[.[.[.y y y y y y y y y j.(.I.(.I.(.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. T.].].].].].].].].].].].].].].].].].].].].]._.(.(.I.I.(.(.I.T y y y y y y y y y y y [.[.[.[.[.[.[.[.[.[.y g y y g y g g y y y y y y g y g [.[.[.[.[.",
"[.[.[.[.[.y y y y y y y y y j.I.(.I.(.I.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].,. Y.].].].].].].].].].].].].].'.].].].].].].].]._.(.I.I.(.I.(.I.| y y y y y y y y y y y [.[.[.[.[.[.[.[.[.[.y y g y y y y y y y y y y y y y [.[.[.[.[.",
"[.[.[.[.[.y y y y y y y y y f.~.I.(.I.I.'.].].].].].].].].].].].].].'.].].].].].].].].].].].].].].,. U.].].].'.].].].].].].].].].].].].].].].].].].].].I.I.I.(.I.I.(.y.u y y y y r y y y y y [.[.[.[.[.[.[.[.[.[.y y y y y y y g y y y y y y y [.[.[.[.[.",
"[.[.[.[.[.y y r y y y y y y f.(.I.I.I.(.].].].].].].].].].].].].].].].].].].].].].].].].].].'.].].>. Y.].].].].].].].].].].].].].].].].].].].].].].].].'.(.(.(.I.I.(.I.h.u y y r y y y y y y y [.[.[.[.[.[.[.[.[.[.y r y y y y y y r y y y y y [.[.[.[.[.",
"[.[.[.[.[.y r y y y r y r y h.I.(.I.I.I.'.].].].].].].].].].].].].].].].].].].].].].].].].].].].].>. U.].].].].].].].].].].].].].].].].].].].].].].].].].].(.I.I.I.I.I.(.N.x y y y r y r y r y r [.[.[.[.[.[.[.[.[.[.y y y y y r y y y y r y y [.[.[.[.[.",
"[.[.[.[.[.y y r r r r r r r f.I.I.I.I.(.'.].].'.'.].'.].].].].].'.].'.].].'.].'.].].].].].].].].].>. Y.].'.].].'.].'.].'.].].].].].].].].].].].'.].].].].].].(.(.I.I.I.I.I.L.v r y y r y r r y y r y [.[.[.[.[.[.[.[.[.y y r y r y y y y y r y [.[.[.[.[.",
"[.[.[.[.[.r y r y r y y r y f.I.(.I.I.I._.].].].].].].].].].].].].].].].].].].].'.].'.].].'.].].].>. U.].].].].].].].].].].].].].'.].'.].].].].].'.].'.].'.].]._.I.(.I.I.I.I.I.U r r y r r y r r y r y [.[.[.[.[.[.[.[.[.[.y y r r y r r r y r [.[.[.[.[.",
"[.[.[.[.[.r r r r r r y r r f.I.I.I.I.I.'.].].].].].].'.].'.].].].].'.].'.].].].].'.].].].].'.].].>. U.].'.].].].].].'.].].].].].].].].].].].].].].].].'.'.].].].'.I.I.I.I.I.I.I.] r r r r r r r r r r r [.[.[.[.[.[.[.[.[.[.r y y r r r y r r [.[.[.[.[.",
"[.[.[.[.[.r r r r r r y r r f.I.I.I.I.I.'.'.'.].'.].'.].].].'.].'.].'.].].].'.].'.].'.].'.].'.].].,. U.].].'.].'.].'.].'.'.].'.'.'.].'.'.'.].'.'.'.].'.'.].].'.'.].'.(.I.I.I.I.I.I.<.r r y r r r r r r y y [.[.[.[.[.[.[.[.[.[.r r r y r y r r [.[.[.[.[.",
"[.[.[.[.[.r r r r r r r r r f.I.I.I.I.I.'.].'.'.'.].].'.].'.'.].'.].].'.].'.'.].].].'.'.].].].'.].,. V.].].].'.].'.].].'.].'.].].].'.].].].'.'.].].'.'.].'.].].'.'.].'.(.I.I.I.I.I.I.p.t r r r r r r r r r r [.[.[.[.[.[.[.[.[.[.r y r r r [.[.[.[.[.[.[.",
"[.[.[.[.[.r r r r r r r r r d.I.I.I.I.I.'.'.].].].'.].].'.].].'.].'.].].'.].].'.].'.].]./.5.5.6.,.7 / 5.,.5.,.`.].].'.].'.].'.].'.].'.].].].].].'.].].].].'.'.].'.].'.].(.I.I.I.I.I.I.v.a r r r r r r r r r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.r r r e r r r r r d.I.I.K.I.K.'.].'.].].'.].'.].].].].].'.].'.].'.].].].].].'.V. /.].].].'.].'.].].].'.].].'.].'.].].'.].'.].].].'.].'.].'.'.(.I.I.I.I.I.I.F.x e r e r r e r r r r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.r e r r r e e e r d.I.I.I.I.I.'.].'.].].'.'.].'.'.'.'.].'.'.].'.].'.].'.'.].'.V. !.].'.].'.'.].'.'.].'.'.'.'.].'.'.'.].'.].'.'.'.].'.].'.].'.]._.I.K.I.K.I.I.L.N r r e r r e r e r r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.r e e e r r r r e s.I.K.I.I.I.'.'.'.'.'.].'.'.].].'.].'.'.].'.].].'.'.'.].].'.V. !.'.'.].'.'.].].'.].'.'.].'.].].'.].'.'.].].'.'.].].'.'.].'.'.'._.I.I.I.I.I.K.K.Y e e e r r e r e e r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.r e r r e e e e e s.I.I.I.K.K.'.'.].'.].'.'.].'.'.].'.].'.'.].'.'.].'.].'.'.].V. !.'.].'.].].'.'.].'.].'.'.].'.'.].'.'.].'.'.'.].'.'.].'.'.].].'.].'.I.K.K.K.I.I.I. .r r e r e e r e e e r [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.e r e e e e r e e d.I.K.I.I.K.'.'.'.].].'.].'.].'.].'.'.'.'.'.'.'.'.'.'.'.'.'.V. W r.r.r.r.4 !.].'.].'.].'.'.].'.'.].'.].'.'.'.'.'.].'.'.].'.'.'.'.'.].].'.'.'.'.'.I.I.I.K.I.I.K.u.t e e e r e e e e e e [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.e e e e e e e e e d.K.I.K.K.I.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.].'.].'.'.'.'.].V. >.'.'.].`.Q !.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.].'.].'.'.'.].].'.].'.'.'.'.'.'.].'.'.'.(.K.I.I.K.I.K.h.i e e e e e e r e r r [.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.r e e r e e e e e s.K.K.I.I.K._.'.'.].'.'.].'.'.'.].'.].'.'.].'.'.'.].].'.].'.V. >.'.'.'.'.Q !.'.'.'.'.'.].'.].'.'.].'.].'.'.].'.'.'.'.'.'.'.'.'.].'.].].'.'.].].'.].'.(.K.K.K.K.I.I.n.s e e e e e e e e e e r [.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.e e e e e e e e e s.I.K.I.K.K.'.'.'.'.].'.'.'.'.].'.'.'.'.'.'.].'.'.].'.'.'.'.V. >.'.'.'.].Q !.'.].'.'.'.'.'.'.'.].'.'.'.'.'.'.'.].'.].].'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'._.K.I.I.K.K.K.H.f e e e e e e e e e e e [.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.e e e e e e e e e s.K.K.K.I.I.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.V. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.K.K.I.K.I.K.K.V e e e e e e e w e e w [.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.e e e w e w e e e s.K.K.I.K.K.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.V. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.].'.'._.I.K.K.K.K.K.K.| w e w e w e w e e e e [.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.e e e e e e w w e s.K.K.K.K.K._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.c. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.I.K.K.K.K.K.K.1.t w e w w e w e w w e [.[.[.[.[.[.[.[.",
"[.[.[.[.[.w w w w w w e w e s.K.K.K.K.K.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.V. >.'.'.'.'.Q !.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.I.K.I.K.K.K.K.s.t w e e w e w w e e e [.[.[.[.[.[.[.",
"[.[.[.[.[.w w w w w w w w w i.K.K.K.K.K._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.c. ;.'.'.'.'.W Q.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.(.K.K.K.K.K.K.l.p w w w w w w w w w e [.[.[.[.[.[.",
"[.[.[.[.[.e w e w w e w w e i.K.K.K.K.K._.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'._.'.'.'.'.'.c. >.'.'.'.'.W !.`.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.(.K.K.K.K.K.K.Z.d w e w w w e w w w e [.[.[.[.[.",
"[.[.[.[.[.w w w w w w w w w s.K.K.K.K.K._.'.'.'._.'.'._.'._.'.'.'.'.'.'.'.'.'.'._.'.'._.c. >.'.'.'.`.W !.'.'.'.'.'.'._.'.'.'.'.'.'.'.'._.'.'._.'.'.'.'.'.'.'.'._.'.'._.'.'.'.'.'.'.'.'.'._.'.'._.'.(.K.K.K.K.K.K.A.N w w w w w w w w w [.[.[.[.[.",
"[.[.[.[.[.w w w w w w w w w 9.K.K.K.A.K._.'._.'.'.'.'.'.'.'.'.'._.'.'._.'._.'.'.'.'.'.'.c. ;.`.'.'.'.W !.'.'._.'.'._.'.'.'._.'.'.'._.'.'.'._.'.'._.'.'._.'._.'.'.'._.'.'.'._.'.'.'.'._.'.'.'.'.'.'.'._.K.H.K.K.K.K.K.B w w w w w w w w [.[.[.[.[.",
"[.[.[.[.[.w w w w w q w q w i.A.K.A.K.A._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.c. >.'.'.'.`.Q !._.'.'.'.'._.'.'.'.'.'._.'.'.'.'.'.'.'._.'.'._.'.'.'.'.'.'._.'.'.'.'.'._._._.'.'._.'.'.'.'.'.'._.K.K.K.K.K.K.' w w w w w w w w [.[.[.[.[.",
"[.[.[.[.[.w q w w w w w w w i.K.K.K.K.K._.'.'._.'._._.'.'._.'._.'._.'._._.'.'.'.'._._.'.c. / Q.!.Q.Q.8 Q.'.'._.'.'.'._.'.'._.'.'.'._.'._._.'.'.'.'.'.'.'._.'._.'.'.'._.'.'._.'.'.'.'._.'.'.'.'._._.'._.'.(.K.K.A.A.K.' q w q w q q q w [.[.[.[.[.",
"[.[.[.[.[.q w q w q w w q w 9.K.A.K.K.K._.'.'._.'.'._.'._.'.'.'._.'.'.'._.'._.'.'.'._.'.c. Q.'._._.'._._.'.'.'.'._._._.'.'.'._.'._.'.'._.'._.'.'.'._._._.'.'.'.'._._.'._.'.'._.'.'.'.'._.'.'.(.K.A.K.K.K.K w q q w w w q q [.[.[.[.[.",
"[.[.[.[.[.w q q q q q q q q i.A.A.K.A.K._._.'.'._.'.'.'._.'._.'._.'._.'.'.'._.'._.'.'.'.c. Q.'.'.'.'.'.'.'._._.'.'.'._.'._.'.'.'._.'.'._.'.'.'._.'._.'.'.'._._.'.'.'.'.'.'._.'.'._._.'.'.'._.(.K.K.K.K.A.' w q w q q w q w [.[.[.[.[.",
"[.[.[.[.[.w q q q w q q q w 9.K.K.A.K.A._.'._.'._.'._.'._.'._.'.'._.'._.'._.'._.'.'._.'.c. !.'._.'._._.'._.'.'._._.'.'._._.'.'._.'._._.'._._.'._._.'.'._.'.'._.'.'._._.'.'._.'.'._.'.'.'._.'.(.A.K.A.K.A.K w q q q q q q w [.[.[.[.[.",
"[.[.[.[.[.q q q q q q q q q 9.A.A.K.K.K._.'.'._.'._._.'.'.'.'._._.'.'.'.'._._.'._.'.'._.V. Q.'._._.'.'._.'._._.'.'._._.'.'._._.'._.'.'.'.'.'._.'.'.'._.'._._.'.'._.'.'._._.'.'._.'._._.'.'._.(.K.A.K.A.K.K q q q q q q q q [.[.[.[.[.",
"[.[.[.[.[.q q q q q q q q q 9.K.A.K.A.A._._.'._._.'._.'._._._.'._._._._._.'.'._.'._._._.R.! ! ! ! , O ! ! ! ! Q /._.'.'._._.'._.'.'._._.'.'._._.'.'.'.'._.`.`._._.'.'._._.'._.`.'._._.`._._._._._._._._.'.'._._.'.(.K.A.A.K.A.K q q q q q q q q [.[.[.[.[.",
"[.[.[.[.[.q q q q q q q 0 q 8.A.K.A.A.K._._._.'._._.'._.'._.'._.'.'._.'._.'._.'._.'._.'._._.'._.'.! @ _.'.'._._.'._.'._.'.'._.'._.'._.'._._.'.'._._.`.> + O O + O X X X X X X X . . X r._._._.'._.(.A.A.K.A.K.K q q q q q q q q [.[.[.[.[.",
"[.[.[.[.[.q q 0 0 q q q q q 9.A.A.A.A.A._.'.'._.'._._.'._.'.'._._.'.'._.'._.'._._.'.'._.'._._.'._.! @ '._._.'.'._._.'.'._._._.'._._.'._.'._.'.'._._._.O . . 0.'._.'.'.(.A.A.K.A.A.K q q 0 q q q q q [.[.[.[.[.",
"[.[.[.[.[.q q q 0 q 0 q q 0 9.A.K.A.K.A._._._._.'._.'._._._._.'._._._._._._._._._._._._.'._.'._._.! @ _._._._._._._._._._._.'._._.'._._._._._._.'.'._.O ;._._._.(.K.A.A.A.K.K q q q q 0 q 0 q [.[.[.[.[.",
"[.[.[.[.[.0 q 0 q q q q 0 q 8.A.A.A.K.A._.'._.'._._._._._._.'._._._.'.'.'.'._._.'.'._.'._._._._._.! @ _._._._.'.'.'.'._._.'._.'._.'._._._.'._._._._.'.O ^ _._.(.A.A.A.A.A.K 0 q 0 0 q 0 0 0 [.[.[.[.[.",
"[.[.[.[.[.q 0 q 0 0 0 0 q 0 8.A.A.A.A.A.(._._._._.'.'._.'._._._.'._._._._._._.'._._._._._.'._.'.'.! @ _.'.'._._._._._._.'._._.'._._._.'._.'._._.'._._.O . . X . X X X O O O O + + @ @ + W _.(.A.K.A.A.A.K q 0 0 q 0 0 q q [.[.[.[.[.",
"[.[.[.[.[.0 q 0 q ; q q ; q 8.A.A.A.A.A._._._._._._.'._._._._._._._.'._._._._._._._._.'.'._._._._.! o L L W W L W W L L L C C C W W W W L W W L W W L X . _._._.'._._._.'._._._._.'._._._._.! 6 ~.A.A.A.K.A.J 0 0 0 q 0 0 q 0 [.[.[.[.[.",
"[.[.[.[.[.q ; 0 0 q ; ; q ; 8.A.A.A.A.A._._._._._._._._.'._._._._._._._.'._._._.'._._._._._._._._.! X _._.'._._._._._._.'._._._._._._._._.=. 1 z.A.A.A.A.K 0 0 q 0 0 0 0 0 [.[.[.[.[.",
"[.[.[.[.[.0 ; q ; q ; q ; q 7.A.A.A.A.A.(._._._._._._._._._._._._._._._._._._._._._._._._._._._._.! X . _._._._._._._._._._._._._._._._._.`.Q.# Z A.A.A.A.J 0 0 0 ; q 0 0 0 [.[.[.[.[.",
"[.[.[.[.[.0 q ; q ; q ; q ; 8.A.A.A.A.A._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.! X _._._._._._._._._._._._._._._.'._.U.# ( A.A.C.A.A.J 0 0 0 0 ; 0 0 0 [.[.[.[.[.",
"[.[.[.[.[.; q q ; ; ; q ; ; 9.A.A.A.C.A.(._._._._._._._._._._._._._._._._._._._._._._._._._._.)._.! . . . . X 8 8 9 9 9 W m W W W W W Q ! ! ! ! o q.(.C.A.A.A.A.J ; 0 0 ; q 0 ; 0 [.[.[.[.[.",
"[.[.[.[.[.q ; ; ; q ; ; ; ; 8.Z.A.A.A.A.(._._._._._._._._._._.(._._._._._._._.0.1 < < < 3._._._._.W + ~.Q.Q.Q.Q.Q.~.P.~.Q.Q.Q.Q.Q.Q.Q.Q.~.Q.Q.Q.Q.Q.Q.O + b._.(.A.A.A.C.A.K ; 0 ; 0 0 0 0 0 [.[.[.[.[.",
"[.[.[.[.[.; ; ; q ; ; q ; ; 7.A.C.A.C.A.(._._.(._._._._._._._._._.(._._.)._._.:. ( _.)._._.L o (._.)._._._._._._._._._.(._._._._._._._._.(.(._.O > R._._.I.C.A.C.A.A.J ; ; ; 0 ; ; ; ; [.[.[.[.[.",
"[.[.[.[.[.q ; ; ; ; ; ; ; ; 7.A.A.A.C.A.(._._._._._._._._.(._._._._._._._._._.>. =._._._.~.# ~._._._._._.(._._.(.)._._._.(._._.(._.(._._._._.O < ~._.(._.I.A.A.C.A.C.J ; 0 ; ; 0 ; 0 0 [.[.[.[.[.",
"[.[.[.[.[.; 0 ; ; ; ; ; ; ; 7.C.A.C.C.A.(._._._.(._._._._._._.(._._._._._._._.:. =._.).Q., Q._._.(._._._._._._._._._._._._._._._._._.(._._.+ 6 )._._._.(.I.C.A.A.C.A.J ; ; ; ; ; ; 0 ; [.[.[.[.[.",
"[.[.[.[.[.; ; ; ; ; ; ; ; ; 7.A.C.A.A.C.(._._.(._._._.(._.(._._._.(.(._._.(._.:. =._.R.# 7 _.)._._._.(._.(._.(.(.(._.(.(._.(._._.(._._._.(.c.x.t.t.e.e.w.w.q.q.q.q.q.0.6.6.4.4.3.3.2.2.2.4.).)._.)._._.(.C.C.A.A.C.J ; ; ; ; ; ; ; ; [.[.[.[.[.",
"[.[.[.[.[.; ; ; ; ; ; ; ; ; 7.C.A.A.C.A.(._.(._._.(._._._._.(.(.(.(._._.(._._.:. ( b.@ 3 ^._.)._.(._.(._._._._._._._._._._._.(._._.(.(._._._.(._._.(._.).)._._.)._._.(.)._._.(.(._.)._._.(._._.(._.(._.I.C.C.A.C.A.J ; ; ; ; ; ; ; ; [.[.[.[.[.",
"[.[.[.[.[.; ; ; ; ; ; ; ; ; 7.A.C.C.A.C.(._.(._._.(._.(.(._._._._._._.(._._.(.:. m o 7 ).(._._._.(._._._.(.(._._.(.(._._.(._.(.(._._._.(.(._._.(._._._._._.(._._.(.)._._.)._.(._._._.)._.(._.(._._.(._.(.C.A.C.A.C.H ; ; ; ; ; ; ; ; [.[.[.[.[.",
"[.[.[.[.[.; ; - ; ; ; ; ; ; 7.C.C.C.C.A.(.(._._._._.(._._.(._.(.(._.(._._.(._.:. m _._.(._.(.(._.(._._.(._.(._.(._.(._.(._._._._.(._._._.(._.(._._.(.(._._.(._.(._.(._.(._._.(._.(._._.(.(._._.(.(._.I.C.A.C.C.A.J - ; ; ; ; - ; ; [.[.[.[.[.",
"[.[.[.[.[.; ; ; - ; - ; - - %.C.A.A.C.C.(.(._.(.(._._.(.)._.(._._.(._.).(._.(.:. ^ (.(.(._.)._._._._.(.(._.(._.(._.(._.(._.(._.(.(._.(.(._._.(._.(.(._._.(._._.(._.(._.(._.(._.(.)._.(.(._._._.(._._._.I.C.C.C.C.C.J - ; - - ; ; ; ; [.[.[.[.[.",
"[.[.[.[.[.; - ; ; ; - ; ; - %.A.C.C.C.C.(.~.J.W.W.W.W.W.L.W.W.W.W.W.W.W.W.W.W.=. -._.(._._.(.(._.(.(.(._._.(._.(.(._._.(._.(.(._.(._.(._._.(.(.(.(._._.(.(.(._.(.(._._.(._.(.(._._.(.(._.(._.(.(.(._.(.(.I.C.C.A.C.C.H - ; ; ; ; ; - - [.[.[.[.[.",
"[.[.[.[.[.- ; - - ; - ; - ; %.C.C.C.C.C.(.6 3.).(.(._.(._.(.(._.(._.(.(._.(._._.(.(._.(._.(.(._.(._.(.(._.(._._.(.(._.(._.(.(._.(._.(.(._.(.(.(._._.(._.(._.(._.(._.(.I.C.C.C.A.C.H - - ; - - ; - ; [.[.[.[.[.",
"[.[.[.[.[.- ; ; - - - ; - ; %.C.C.C.C.C.(.6 X q.(._.(.(._.(._.(.(._.(._.(.(._.(.(.(.(.(.(._.(.(._.(.(._.(._.(.(._.(._.(._.(.(._.(._.(._.(.(._.(._._.(.(._._.(.(._._.(.(._.I.C.C.C.C.C.H - ; - - - - ; - [.[.[.[.[.",
"[.[.[.[.[.; - - ; - - ; - - %.C.C.C.C.C.(.6 t.(._.(._._.(.(.(._.(.(._._.(._.(.(._.(._._.(.(._._.(._.(.(._._.(.(._._.(._.(.(._.(._.(.(.(._._.(._.(.(._.(.(.(.(._.(.(._.(.(.I.C.C.C.C.C.H - - - ; - - - - [.[.[.[.[.",
"[.[.[.[.[.- - - - - - - - - %.C.C.C.C.C.(.5 -.(._.(.(._.(._.(._._._.(.(.(.(._.(.(._.(._._._.(.(.(.(._.(.(.(.(.(.(.(._.(._.(._.(.(.(._.(._.(._.(.(.(._.(._.(._._.(.(._.(._.K.C.C.C.C.C.H - ; - - - - ; - [.[.[.[.[.",
"[.[.[.[.[.- - - - - - - - - $.C.C.*.C.C.(.:.C W C C ! C ! Z C C C ! C W C ! W 3 ( (._.(.(.(.(.(.(.(.(.(.(._.(.(._._.(.(.(.(.(.(.(._.(._.(._.(._.(._.(.(.(.(.(.(.(._.(._.(.(.(.(.(._.(.(.(._.(.(.(.(.(.(.(.(.I.C.C.C.C.C.H - - - - - - - - [.[.[.[.[.",
"[.[.[.[.[.- - - - - - - - - $.C.C.*.C.C.(.(.(.(.(._._.(.(.(.(._.(.(.(.(._.(.(.:. C ).(.).(.(._.(._.(._.(._.(.(.(.(.(.(.(.(.(.(.(._._.(.(.(._.(.(.(._.(._.(._.(._.(._.(.(.(._.(.(.(.(.(._.(.(.(._._.(.(._.(.I.C.C.C.*.C.G = - - - = - = - [.[.[.[.[.",
"[.[.[.[.[.- - - - = - - - - $.C.C.C.C.C.(.(._._.(.(.(.(.(._.(._._.(._.(.(.(.(.:. 7 (.(._.(.(.(.(.(.(.(._.(._.(._._.(._._._.(.(.(.(.(._.(.(.(._.(.(.(.(.(.(.(._.(.(.(._.(.(.(._._._.(.(.(.(._.(.(._.(._.(.K.C.*.C.C.C.G - - - - - - - - [.[.[.[.[.",
"[.[.[.[.[.- = = = - = - - - $.C.*.C.C.C.I.(.(.(.(.(.(._.(._.(.(.(.(.(.(._.(.(.:. 4 I.(.(._._.(.(.(.(.(.(.(._.(.(.(.(.(.(.(.(._._.(.(.(.(.(.).(.(.(.(._._.(.(.(._.(.(.(.(.(.(.(._.(._.(.(.(.(.(._.(.(.(.I.C.C.C.*.*.H = = - = - - = - [.[.[.[.[.",
"[.[.[.[.[.= - - = - - - = = $.*.C.C.*.*.(.(.(.(.(._.(.(.(.(.(.(.(.(._.(.(.(.(.2. o < ~.(.(.(.(.(._.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(.(._.(.(.(.(._.(.(.(.(.(.(.(.(.(.(._.(.(.).(.(.(.(.(.(._.(.(.(.(.(.(.K.C.*.C.C.C.G = = - = - = - - [.[.[.[.[.",
"[.[.[.[.[.= = = = - - - = - $.C.C.C.*.C.(.(.(._.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.:. ! : > J.(.).(.(.(.(.(.(.(.(._.(.(.(.(.(.(._.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.K.*.C.*.*.C.G = = = = = = - - [.[.[.[.[.",
"[.[.[.[.[.= = = = = = = = = $.*.*.C.C.*.I.(.(.(.(.(.(.(.(.(._.(.(._.(.(.(.).(.:. =.W., : D.(.(.(.(._.(._.(.(.(._.(._.(.(.(.(.(.(.I.: : # : : # : : : # # : # # : # # : # : : # : : # : : # # # # # : # 6 C.*.C.C.*.G = = = = = = = = [.[.[.[.[.",
"[.[.[.[.[.= = = = = = = = = #.C.C.*.*.C.(.(.(.(.(.(.(._.(._.(.(.(.(._.(._.(.(.:. ( ).I.3 , (.(.(._.(.(.(.(.(.(.(._.(.(._.(.(.(.).J. < *.C.*.*.*.D = = = = = = = = [.[.[.[.[.",
"[.[.[.[.[.= = = = = = = = = #.*.*.C.*.*.I.(._.(._.(.(.(.(.(._.(.(._.(.(.(.(.(.-. ( (.(.).6 D.(.(.(._.(.(.(.(.(.(.(.(.(.(.(.(._.).J. X X X X X X X X o X X o X X X X X X X X X X X 2 *.*.C.*.C.G = = = = = = = = [.[.[.[.[.",
"[.[.[.[.[.= = = = = = = = = #.*.*.*.C.C.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.-. ( (.(.(.(.9 (.(.(.(.(.(.(.(.(.(.(.(._.).(.(.(.(.(.L. 1 (.).(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.C.C.*.C.*.G = = = = = = = = [.[.[.[.[.",
"[.[.[.[.[.= = = = = * = * = #.*.C.*.*.*.I._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.D.( ( ( =.t.(.(.(.(.D. J.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.L. 1 (.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.K.*.*.*.*.*.G = = * * = = = = [.[.[.[.[.",
"[.[.[.[.[.= = = * = = = = = #.*.*.*.*.*.(.(.(.(.(.(.(.(.(.(._.(.(.(.(.(.(.).(.(.(.(.(.(.).(.(.(.(.t. D.(._.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. 1 ).(.x., , , , , , , , -.(.(.(.(.(.m 9 9 8 8 8 9 8 8 8 9 8 9 ^ K.*.*.C.*.*.G * = = = = * = = [.[.[.[.[.",
"[.[.[.[.[.* * * = * * = * * #.*.C.*.*.*.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.t. S.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.(.e. ! (.(.(.(.).X , K.*.*.*.*.*.D * * = * * = * = [.[.[.[.[.",
"[.[.[.[.[.= * = * = * * * = +.*.*.*.*.*.I.(.(.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.t. Z.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 2 I.(.e. ! (.(.(.(.(. , K.*.*.*.*.*.D * = * = * = * = [.[.[.[.[.",
"[.[.[.[.[.= * * * = * = * * +.*.*.*.*.*.I.(.(.(.(.(.I.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.I.(.(.(.(.(.(.t. D.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.(.(.J. 1 (.(.t., , , , , , , , =.I.(.(.(.(. , K.*.*.*.*.*.D * * * * * = * = [.[.[.[.[.",
"[.[.[.[.[.= * * * * * * * = +.*.*.*.*.*.I.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.I.(.(.(.(.(.(.(.(.(.t. m.(.(.I.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.K. 1 (.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.(.L.I.I.P.P.P.P.L.P.P.L.W.P.I.K.*.*.*.*.*.D * * * * * * * * [.[.[.[.[.",
"[.[.[.[.[.* * * * * * * * * O.*.*.*.*.*.I.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.t. m.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.(.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.K.*.*.*.*.*.D * * * * * * * * [.[.[.[.[.",
"[.[.[.[.[.* * * * * * * * * O.*.*.*.*.*.P.^.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.t. m.(.(.I.(.(.(.(.(.(.I.(.(.(.(.I.(.(.(.J. 1 (.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.(.(.(.I.(.(.(.K.&.*.*.*.*.S * * * * * * * * [.[.[.[.[.",
"[.[.[.[.[.* * * * * * * * * O.*.*.*.*.*.I.^.(.(.(.I.(.(.(.(.(.I.(.(.(.(.(.(.(.(.I.(.(.(.(.(.(.(.(.t. m.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.K.*.*.*.&.*.S * * * & * * * * [.[.[.[.[.",
"[.[.[.[.[.* * & * * & * * * O.*.*.*.&.&.I.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.I.(.(.I.(.(.I.(.(.I.(.(.(.t. m.I.(.(.(.I.I.(.I.(.I.(.(.I.(.(.(.(.(.J. 1 (.(.(.(.(.I.(.I.(.(.(.(.(.I.(.I.(.(.I.(.(.(.(.(.(.I.(.(.(.(.(.K.*.*.&.*.*.A * & * * * * & * [.[.[.[.[.",
"[.[.[.[.[.& * * % * * * & * o.*.&.*.*.*.I.(.(.I.(.I.(.I.(.(.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.7 3 3 3 , 1 3 3 3 3 q.(.(.(.(.(.(.(.(.(.I.(.(.I.J. 1 (.t.-.-.-.-.-.-.-.-.-.2.I.(.(.(.(.(.(.(.I.P.5 3 5 5 5 5 5 3 5 b.&.*.*.*.&.S & * & & * * & * [.[.[.[.[.",
"[.[.[.[.[.* * & * * & * * * O.*.&.*.*.&.I.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.(.(.I.(.(.(.(.(.(.+ :.(.(.(.(.(.(.(.(.(.(.(.(.(.J. 1 (.~ + (.(.(.(.(.(.(.(.(.J. z.&.*.&.&.*.S * & * & * & & & [.[.[.[.[.",
"[.[.[.[.[.& & & & & * & % * O.*.*.&.*.*.I.(.I.(.I.(.I.(.(.I.I.(.(.(.(.(.(.(.(.(.(.I.(.(.I.+ :.(.I.I.(.I.(.(.I.I.(.(.I.(.J. 1 I.~ + (.(.I.I.(.(.I.(.I.J. z.*.&.*.*.*.A & & & & & & & * [.[.[.[.[.",
"[.[.[.[.[.& & & & & & & & & O.&.&.*.*.&.I.I.I.(.(.(.(.(.(.I.(.(.I.(.(.(.I.(.(.(.I.(.(.I.(.+ 2.(.(.I.(.(.(.(.(.(.(.(.I.I.J. 1 (.~ . + I.I.(.(.(.(.(.(.(.J. z.&.*.&.&.*.S & & & & & & * & [.[.[.[.[.",
"[.[.[.[.[.& & & & & & & & * O.*.&.&.&.&.I.(.(.(.(.I.I.(.(.(.(.I.(.(.I.I.(.I.(.I.I.(.(.I.(.> o o o o o o o o o + o o o 3.I.(.(.(.(.I.I.(.I.I.(.(.(.H. 1 (.=.: : : : : : : : : 1 (.(.(.(.I.I.(.I.I.J. z.*.&.*.&.&.A & & & & & & & & [.[.[.[.[.",
"[.[.[.[.[.& & & & & & & & & O.&.*.*.&.&.I.(.I.I.(.(.(.I.I.I.(.(.I.(.(.(.I.(.(.(.(.(.(.I.I.(.(.(.(.I.(.(.I.(.(.I.I.(.(.(.I.(.(.I.I.(.(.(.(.(.(.I.(.K.# # 7 (.(.I.(.I.I.(.(.(.I.(.(.(.I.I.I.(.(.(.(.(.I.4.4.4.4.4.4.4.4.4.A.&.&.&.*.*.M % & & & & & & & [.[.[.[.[.",
"[.[.[.[.[.& & & & & % & & % O.*.&.&.&.*.I.I.(.(.I.I.(.(.(.(.(.I.(.(.I.(.(.(.I.I.(.I.(.(.(.(.I.(.(.(.I.(.I.(.(.I.I.(.(.I.I.(.(.I.(.(.I.I.(.I.(.(.(.I.I.(.(.I.(.(.(.(.(.(.I.(.I.(.I.(.(.(.(.(.I.I.(.I.(.(.I.(.(.I.I.(.(.I.K.&.*.&.&.&.S % & & & % & & & [.[.[.[.[.",
"[.[.[.[.[.& & % % & & & & % O.&.&.&.&.&.I.(.(.I.(.(.I.(.(.(.(.I.(.I.(.(.(.I.(.(.I.(.I.(.(.I.(.I.I.I.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.I.(.(.I.(.I.(.(.(.I.(.I.(.I.(.I.(.(.I.(.I.(.(.I.(.(.(.(.I.(.(.(.(.I.I.(.(.(.(.(.(.(.(.K.&.&.&.&.&.A % % & & % % & & [.[.[.[.[.",
"[.[.[.[.[.& % & & % % & % & O.&.&.&.*.&.I.I.(.(.(.I.(.(.I.I.(.(.(.I.(.I.(.(.I.(.(.(.I.(.(.I.(.(.(.(.(.I.(.I.I.(.(.I.I.(.(.I.I.(.(.(.I.(.(.(.I.(.I.(.(.(.I.(.(.(.I.(.(.I.(.(.(.I.(.(.I.I.(.(.I.(.I.(.(.(.(.I.I.(.(.I.I.(.A.&.&.*.&.&.S % & & % & & % & [.[.[.[.[.",
"[.[.[.[.[.% & % & & & & & % o.&.&.&.*.&.I.^.(.I.(.(.(.(.I.(.(.I.~.I.(.(.I.(.I.(.I.(.(.I.~.I.(.(.(.I.(.I.(.(.I.~.I.(.(.I.(.I.(.I.I.(.(.I.~.I.(.(.I.(.I.(.(.I.(.I.~.I.(.(.I.(.I.(.I.(.(.I.~.I.(.(.(.I.(.I.(.(.I.~.I.(.(.I.A.&.&.&.&.&.S * % % & % % * & [.[.[.[.[.",
"[.[.[.[.[.& % % % % % % % & o.&.&.&.&.&.A.K.K.K.K.K.K.A.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.A.&.&.&.&.&.A % & % % & % % * [.[.[.[.[.",
"[.[.[.[.[.& % & & % & % % % o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % & % % % % % [.[.[.[.[.",
"[.[.[.[.[.% & % % % % % % & o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % % % % % & % [.[.[.[.[.",
"[.[.[.[.[.& % % % % % % % % o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % % % % % % & [.[.[.[.[.",
"[.[.[.[.[.% % % % % % & % % o.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.M % % % % % % % % [.[.[.[.[.",
"[.[.[.[.[.% $ % $ % % % % % F @.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.n % % % % % % % % [.[.[.[.[.",
"[.[.[.[.[.[.% % % % % $ % $ % $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ % $ $ $ $ % % $ % $ % $ $ $ $ $ $ $ $ % $ % $ % $ $ $ % $ % % $ $ $ $ $ $ % % $ $ % % $ $ $ $ $ % $ $ $ $ % % $ % $ % $ $ $ $ $ $ $ $ % $ % $ % $ $ $ % $ % % % % % % % % % % % % & [.[.[.[.[.",
"[.[.[.[.[.[.% % % $ $ % $ $ % % $ % % $ $ $ % $ $ % % $ $ $ % $ % $ $ $ % $ % $ % % $ % % $ $ $ $ $ $ % $ $ $ % % $ $ $ % $ % $ % % $ % % $ $ $ $ $ $ $ % $ $ % % $ $ $ % $ % $ % % $ % $ % $ $ $ % $ % $ $ $ % % $ $ $ % $ % $ $ % % $ $ % % $ % $ $ [.[.[.[.[.",
"[.[.[.[.[.[.% $ $ % % $ $ % $ $ $ $ $ $ % % $ % $ $ $ % % $ $ % $ % % $ $ % $ $ $ $ $ $ $ $ % % $ $ % $ $ % $ $ $ % % $ $ % $ $ $ $ $ $ $ $ % % $ % % $ $ % $ $ $ % % $ $ % $ $ $ $ $ $ $ $ % % $ $ $ $ $ % $ $ $ % % $ $ % $ $ $ $ $ % $ $ $ % $ $ % [.[.[.[.[.",
"[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.",
"[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[."
"_._._._._._.K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K _._._._._._._._._._._._._._._._._._._._._.K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K _._._.",
"_._._._.K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K J K K K K K K K K K K K K K K J K K K K K K K K K K J K K K _._._._._._._._._._._._._._._._._.K K K K K K K K K K K K K J K K K K K K K K K K K K K K K K K K K K K K _.",
"_._._.J J K J K K K K J K K K J K K K K K J K K K K K K K K K K K K K K K K K K K K K K K K K K J J K J J K K K K K K K K J K K K J J K K K J J K K K _._._._._._._._._._._._._._._.K K K K K K K K K K J K K J K K K K K K K K K K K K K J K K K K J K K K K _.",
"_._.J K K J K J J K J K J J J K J J J K J K J K K J J J J K J K J J J J K J J K J J J J K J J J K K J K K J K J J J J J J K K J J K K J J J J J K K J K _._._._._._._._._._._._._._.J J J K J J K H K K K K J K K J J J K K J J J J J K J K J K K J K J K K K K ",
"_.J J J J J J K J J J J J J J J K J J J K J J J J J J J J J J J J J K J K J H K K J K J J K J J J J K J J J J K J J K J J J J K J J J J K J J J J J J J J J _._._._._._._._._._._._.J J J K J J J J J J J J J J J K J K J J J J J K K K z K J J J J J J J J J K ",
"_.J J J J J J J J J J K J J J J J J J J J J J J J J J J J J J J J J J J J J K J J J J J J J J J J J J J J J J J J J J J J J J K J J J K J J J J J J J J J K J _._._._._._._._._._._.K J J J K J J J K J J J K J J J J J J J J J K z K K K K J K K K J K J J J J ",
"_.J J J J J J J J J J J J J H J J J J J J J J J J J K J J J J J K J J K H J J J H K J J J J J J J J J J J J J J K J J J J J K H J J J J J J J J J J J J J J J J _._._._._._._._._._._.J J K J J J J H J J J J J J J J J J J J J K K K K J J z J z K J J J J J J ",
"J J J H J J J J J J P P P P P I P P P P P P P P P P P P P P P P P P P P P P I P P P P P P P P P P P P P P P P P P P P P P P P I P P P P P P J J J J H J J J J J K _._._._._._._._._._._.J H H K J J J J J J J H K z J J J J J J K z K z J J K K J K J K z J J J ",
"H J H J H J H H J P E.E.!.E.E.E.E.!.E.!.!.E.!.Q.!.Q.E.E.!.!.E.E.Q.E.E.E.E.!.!.E.E.!.E.!.!.E.!.Q.Q.!.E.E.E.!.E.!.E.!.E.E.E.E.!.E.!.E.!.E.E.U.T H J H H J H H J J J H _._._._._._._._._._._.H H J J J J J J H J J H J H J J J H J J K J J J J z J z K J J z J z K ",
"H J J H J J J J J P E.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.Q.E.!.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.!.E.!.E.E.E.E.E.E.E.E.Q.E.{ J J J J J J J H H K K H _._._._._._._._._._.J J z J J H H J H J J H H J J J J H J z J K z J K J J J K z K J J J ",
"J H H J J H H J H P Q.E.E.Q.E.E.E.Q.Q.E.E.E.E.E.E.Q.E.E.E.E.!.E.E.Q.E.E.E.E.!.E.E.Q.Q.E.E.E.E.E.E.E.!.E.Q.E.E.Q.E.E.E.E.E.E.Q.E.E.E.E.!.E.!.E.E.-.J H H H H H H H H H J J _._._._._._._._._._.J J J z J H J J J H J J H J z J J z K J z K z z K z K J J z J z K ",
"H J H H H H J H H P E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.!.E.E.Q.E.E.Q.E.E.E.E.E.E.E.E.E.d.P H H J H H J H H H H H _._._._._._._._._._._.z J J J J z H H H J H J J z J K z J z J K J K K z z K K J z J ",
"H H H H H H H H H P E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.m.P J H H H H H H H H H H _._._._._._._._._._._.J H H H J H H J H J z J J z z z J z K z K z J z z K z z J z ",
"H H H H H H H H H L E.E.E.E.E.R.(.(.(.).).).).).).(.).).).).).(.).).).).).(.).).).(.(.).).).).).+...| | | !.).).(.).).).(.).).).).).(.(.E.E.E.!.E.E.E.A.U H H H H H H H H H H H _._._._._._._._._._._.H H H H H J z H H H H H J J J J J z K z J z J J z J J J J ",
"H H H H H H H H H P E.E.E.E.E.R.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ~.).).).).).).).).).).).).).).(.Q.E.E.E.E.E.E.Y.` H H H H H H H H H H H H _._._._._._._._._._.H z H H z J z J H z J z z J z J J z J z J z z J z J z J ",
"H H z H H H z H H L E.E.E.E.E.E.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ^.).).).).).).).).).).).).).).).(.E.E.E.E.E.E.E.R.$.H H z H H z H H H z H H _._._._._._._._._._.J H H J z J z H H z J J z J z z J z J z J J z J z J z ",
"z H H H H H z H H c E.E.E.J.E.E.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).!.E.E.E.E.E.E.J.p.z H H z H H H z z H H H _._._._._._._._._._._.H H z H z H H H H z z z J J z H H H z z H H H H H ",
"z H z z z z H H z c E.E.E.E.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . /.).).).).).).).).).).).).).).).).).).!.R.E.J.J.E.E.E.j.L z z z H z H H z z H z _._._._._._._._._._._.H H H H H z H z z J J z z H H z z J H H H z H z ",
"H z H H H z H z H L E.J.E.J.E.E.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).(.E.E.E.E.E.E.E.Z.U z z H H z H H z H H H _._._._._._._._._._._.z z H z z H H z z z z z H z z z H z z z H z H ",
"z H z z H z z H z L E.J.E.E.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).).(.E.E.J.J.E.R.E.H.R z z H z z z H z z z z z _._._._._._._._._._.H H z H z H J z J z H z H J H z H H H z H z ",
"z H z z z H z z z L E.R.E.J.E.E.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).).).).E.J.J.R.E.J.E.J.[ z z H H z z H z z z z H _._._._._._._._._._.z H z z z z z z J z z z z z z z H z z z H ",
"z z z z z z z z z L J.R.J.E.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . ~.).).).).).).).).).).).).).).).).).).).).).).).!.E.E.J.E.J.E.E.=.z z z z z z z z z z z z _._._._._._._._._._._.z H z z z z z z z H z z H z z z H z z ",
"z z H z z z z z z c E.J.E.J.E.J.(.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ~.).).).).).).).).).).).).).).).).).).(.).).).).).Q.J.E.J.E.J.R.R.g.L z z z z z z z z z z z _._._._._._._._._._._.z z z z J z z z z z z H H z z z z z ",
"z z z z z z z z z c E.J.J.E.J.E.!.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 . /.).).).).).).).).).).).).).).).).).).).).).).).).).Q.J.E.J.R.J.J.E.n.I z z z z z z z z z z z _._._._._._._._._._._.z z z z z z z H z z z z z z z z H ",
"z z z z z z z z z c J.J.E.J.J.J.Q.).).).).).).).).).).).).).).).).).(.).).).).).).).).).).(.).).3 ~.).).).).).).).).).).).).).).).).).).).).).).).).).).(.E.J.J.J.E.J.J.F.E z z z z z z z z z z z z _._._._._._._._._._.z z z z z z z z z z z z z z z z ",
"z z z k z k k z z c E.J.E.J.E.J.!.).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).).2 ~.).).).).).).).).).).).).).).).).).).).).).).).).).).).(.E.E.J.E.J.E.J.J.' z z z z z z z z z k z z _._._._._._._._._._.z z z z z z z z z z z z k z z ",
"z z k z k z z z z c J.R.J.J.J.J.(.(.).).(.).).).).).).).).).).).).).).).).).).).).).).(.).).).).2 ~.).).).(.).).).).).).).).).).(.).).(.).).(.).).).).).).).(.E.J.J.E.J.J.J.J.*.z z z z k k z z z k z z _._._._._._._._._._.z z k z k z z z z z z z k z ",
"k z k z z z k k z c J.J.J.J.E.J.(.).).(.).).(.).).).).).).(.).).).).(.).).(.).(.).(.).).(.).).).3 ~.).).).).(.).(.).).(.).).).).).).).).).).(.).(.).).(.).(.).).!.J.J.J.R.R.J.J.p.x k z k z k k k z k k z _._._._._._._._._._._.z k z z z z z k k k z z ",
"k z k z k z k z k c J.J.J.J.J.J.!.).).).).).(.).).).(.).(.).).(.(.).).(.).(.).).).(.).).).(.).(.# ~.(.).(.).).).).).).).).).).).).(.).).(.).).).(.).).).).(.).).).!.J.J.J.J.J.J.J.n.v z k k k k k k k z z k _._._._._._._._._._._.z k k z k z k k z k k ",
"z k k k k k k k z c J.J.R.J.J.J.(.(.).(.).).).).(.).).).).).).).).).).).).).).).).).(.).).).).).2 ~.(.).).).).(.).(.).).).).(.).).).(.).).).).).).).).).).).).(.(.).(.J.J.J.J.J.J.J.S.Y k k z k z k k k k k z k _._._._._._._._._._.k z k k k k z k z _.",
"k k k k k k k k k x J.J.J.J.J.J.!.).).(.).(.(.).).(.(.).).(.(.).(.).).(.(.).).(.(.).).(.).(.).(.2 ~.).(.(.).).(.(.).).(.(.(.).).(.(.).).(.).).(.(.).).(.(.(.).).).).(.(.E.J.J.J.J.J.J.H._ k k k k k k k k k k k k _._._._._._._._._._.z k z k z k z k _.",
"k k k k k k k k k x J.J.J.J.J.J.!.).(.).(.).).(.).).).(.).).).(.).(.).).(.).(.).).(.).).).(.).).2 ~.).).).).(.).).(.(.).).).(.).).).(.).).(.(.).).(.(.).).).(.).).(.).).(.E.J.J.J.J.J.J.J.#.k k k k k k k k k k k z _._._._._._._._._._._.k k k k _._._.",
"j j k k k k j k j x J.J.J.J.J.J.!.).).).(.).(.).(.(.).(.).(.).).(.(.).(.).(.).).).(./.9 9 9 9 9 X 5 9 9 9 9 u.).).).(.).).).(.).(.).).(.(.).).(.(.).).(.(.).).(.).(.).).(.).!.J.J.J.J.J.J.J.p.c k k k j k k j k j k k _._._._._._._._._._._._._._._._._.",
"k k j k k k k k k c J.J.F.J.J.F.!.).(.).).(.).).).).).).(.).).(.).).).).(.).).(.(.).^. 0.).(.).).(.(.(.).).).).(.).).(.).).).).(.).).).(.).).).(.(.).).(.!.J.J.J.F.J.J.F.h.b k k k j k k k j k k k _._._._._._._._._._._._._._._._.",
"k j k j k j k j j x J.F.J.F.J.J.(.(.).(.(.).(.(.(.(.(.(.(.).).(.).(.(.(.(.).).(.).).Q. 0.).).(.).(.(.).).(.(.).(.).(.).).(.(.).(.).(.(.(.).(.(.(.).(.(.(.(.!.J.J.J.F.J.F.J.n.V j k k k k k k j k j k j _._._._._._._._._._._._._._.",
"j k j k j k j k k x J.J.J.J.J.F.!.(.(.).).(.(.).).).(.).(.).(.).(.).(.).(.).(.).(.(.Q. 0.).(.).(.(.).(.(.).(.(.(.).).(.(.).(.(.(.).(.).(.).(.).).(.(.).).(.(.(.J.J.J.J.J.J.H.S.! j j k j j k k j k j k k _._._._._._._._._._._._._.",
"j k j k j j k j j x J.J.F.J.J.J.(.(.(.(.(.).).(.(.).(.).(.).).(.(.).(.).(.).).(.).(.^. 0.).).).(.).(.).(.).(.).(.(.(.).(.).(.).(.(.).).(.).).(.).).).).(.).).(.(.R.J.J.F.J.J.J.F.@.j k j k j j j k k j j k _._._._._._._._._._._._.",
"j j j k j k j k j x F.F.J.F.J.F.!.(.(.).(.(.(.(.(.(.).(.(.(.(.(.(.(.).(.(.(.(.(.).(.^. o L.K.K.L.L.y 0.(.(.(.).(.(.(.(.(.(.).(.).(.(.(.(.(.).(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.E.F.J.J.F.J.F.J.6.j j j j k j j j j j j k _._._._._._._._._._._.",
"k j j j j j j j j x J.J.F.J.F.J.!.(.(.(.).(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.~. O (.).(.(.(.) 0.).(.(.(.(.(.(.).(.(.(.(.(.(.).(.).(.(.(.).).(.(.(.).(.).(.).(.(.(.).(.).(.(.!.J.F.J.J.J.F.J.s.x j j j j j j j k j j j _._._._._._._._._._.",
"j j j j j j j j j x F.J.F.J.F.F.!.).(.).(.(.(.(.).(.).(.(.).(.).).(.).(.(.).(.).).(.~. O (.(.).(.).) 0.).).(.).(.(.).(.(.(.).(.).(.(.(.(.).(.(.(.(.(.(.).(.(.(.(.(.(.(.).(.(.(.(.(.(.!.J.F.F.F.J.F.F.b.B k j j j j j j j j j j j _._._._._._._._.",
"j j d j j j j j j x J.F.J.J.F.J.!.(.(.(.(.(.(.).(.).(.(.(.).(.(.).(.(.(.(.(.(.(.(.(.~. O ).(.(.(.).Q 0.(.(.).(.(.).(.(.(.).(.(.(.(.(.(.(.).(.(.(.(.(.).(.(.).(.(.(.(.(.).(.(.).(.(.(.(.(.J.J.F.F.J.J.F.S.G j j j j j j d j d j j j _._._._._._._.",
"j j j j d j j j j x F.F.F.F.F.F.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.(.(.(.) . 0.(.(.(.(.).(.(.(.).(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.R.F.J.F.F.F.F.J.! j j j j j j j j j j j j _._._._._._.",
"d j j j j j j d d x F.J.F.J.J.F.!.(.(.(.(.(.).(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.~. O (.(.).(.(.) 0.).(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.).(.(.(.(.).(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.E.F.F.J.J.F.J.F.&.j d j j j j d d j j j d _._._._._.",
"d j d j j d j j j x F.F.F.F.F.F.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.(.(.(.) 0.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.).(.(.(.(.(.(.(.(.(.(.E.F.F.F.F.F.F.F.s.l d d j d j j d d j d j _._._._.",
"j j d d j d j d d l F.F.F.J.F.F.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.T. O (.(.(.(.(.) 0.).!.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.!.J.F.F.F.F.J.F.f.b d d d d j j d j j d j _._._.",
"d d d j d j d d d x F.F.F.F.F.F.!.(.(.(.!.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.!.(.(.Q 0.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.J.F.F.F.F.F.F.C.S j j d d d d d d j d d _._.",
"d j d d d d d j j l F.F.F.F.F.F.E.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.W. O (.(.(.(.(.) 0.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.!.J.F.F.F.F.F.F.F.! d d d d d j d d d j j _.",
"d d d d d d d d d h F.F.F.F.F.F.!.(.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.(.(.!.(.(.(.W. o (.(.!.(.(.) 0.(.(.(.(.!.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.E.F.F.F.F.F.F.F.%.j d d d d d d d d d _.",
"d d d d d d d d d l F.F.F.F.F.F.E.(.(.(.!.(.(.(.(.!.(.(.!.(.(.(.(.(.(.(.(.(.(.(.(.(.T. o (.(.(.!.(.Q 0.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.!.(.!.(.(.!.(.(.(.(.!.(.(.!.(.(.(.(.!.(.(.!.!.(.(.!.(.(.(.(.(.E.F.F.F.F.F.F.B.5.j d d d d d d d d d ",
"s d d s d d d d s l F.F.F.B.F.F.E.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.!.!.(.(.!.(.(.(.(.T. . o (.(.(.(.(.) 0.(.(.(.(.(.!.(.(.!.(.!.(.!.!.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.(.(.(.(.(.(.!.(.(.(.(.!.F.F.F.F.F.F.F.W d s d d s d s d d ",
"d d d d d d s d d h F.F.F.F.F.F.E.(.!.!.(.!.(.!.!.(.(.(.(.(.!.!.(.(.(.(.!.(.!.(.(.!.T. o (.!.(.(.(.) 0.(.!.!.(.!.(.!.(.(.(.(.(.!.(.(.(.(.(.(.!.(.(.(.!.(.!.!.(.(.(.(.(.!.(.!.(.(.(.(.(.(.(.!.(.(.!.(.(.!.!.(.!.Q.F.B.B.F.F.F.F d d d d d d d d s ",
"s d s d s s d s d g F.B.F.B.F.B.Q.(.(.(.(.(.(.(.(.(.!.!.!.(.(.(.!.(.!.(.(.(.(.!.(.(.T. . ) ) ) } ) 3 0.(.(.(.(.(.(.(.(.!.(.!.(.(.(.!.!.(.!.(.!.(.!.(.(.(.(.(.(.!.!.!.(.(.(.!.(.!.(.!.!.(.(.(.!.(.!.(.(.(.!.(.(.(.F.F.F.F.F.F.W s d s s d s s d d ",
"s d d s d d s d d h F.F.F.F.B.F.E.(.(.(.!.(.(.(.(.(.!.(.!.(.(.(.!.(.!.(.(.(.!.(.!.(.T. 0.!.!.(.!.(.!.(.(.(.(.!.!.(.(.(.(.(.(.(.(.!.(.!.(.!.(./.!.(.(.(.(.(.!.(.(.(.(.(.!.(.!.(.(.(.(.!.(.(.(.!.(.!.F.B.F.F.F.B.W s s s d s d d s s ",
"d s s d s s s s d h B.F.B.B.F.F.Q.(.!.!.(.!.(.!.!.(.(.(.(.(.!.(.(.(.(.(.!.(.(.(.(.(.T. 0.(.(.(.(.(.!.(.!.(.(.(.(.(.!.(.!.!.(.!.(.(.(.!.(.(.(.(.(.(.!.(.!.(.!.(.!.(.!.(.(.(.(.(.!.(.(.(.(.!.(.(.(.!.F.F.B.F.F.F.W d d d s d s s s d ",
"s s s s s s s d s h B.F.F.B.F.B.E.!.(.(.(.!.!.(.!.(.(.!.(.!.(.!.!.(.(.!.!.(.!.(.(.!.T. 0.!.!.(.(.!.(.(.!.(.!.(.!.!.(.!.(.(.(.!.!.(.(.(.(.!.!.(.(.!.(.!.(.(.(.(.!.(.!.(.!.(.(.!.!.(.(.!.(.!.(.!.!.(.B.F.B.F.B.F.W s s s s s s s s s ",
"s s s s s s s s s g F.F.B.F.B.F.Q.(.!.(.!.(.(.!.(.!.(.(.!.(.!.(.!.(.!.(.(.!.(.!./.(.T. . 0.(.!.(.!.(.!.(.(.!.(.!.(.(.!.(.!.(.!.(.(.!.!.(.!.(.(.!.(.(.!.(.(.!.!.(.(.!.(.!.(.!.(.!.(.!.(.(.!.(.!.(.(.!.F.B.F.B.F.B.D s s s s s s s s s ",
"s s s s s s s s s h B.F.F.B.F.F.E.!.(.!.!.(.!.(.!.!.(.!.(.!.(.!.(.(.!.(.!.(.!.!.(.!.Q.7.7.0.7.7. 2 4.0.7.7.7.L.(.(.!.!.(.(.!.!.(.!.(.!.(.(.!.(.!.(.(.!.P.P.P.P.P.P.P.K.K.K.K.K.K.K.K.K.K.K.V.l.u.l.u.l.l.P.(.!.!.(.!.(.!.B.B.F.B.B.B.W s s s s s 1 s s s ",
"s s 1 s s s s s a g F.B.B.F.B.B.E.(.(.!.(.!.(.!.!.(.!.(.!.(.!.(.!.!.(.!.(.!.(.!.!.(.!.(.!.!.(.!. 0 (.(.!.(.!.(.!.!.(.(.!.!.(.!.!.!.!.(.!.!.(.!.(.!.!.T. o u.!.(.!.(.!.(.F.F.B.F.F.B.W s s s s s s s s s ",
"s s s s s a s s s h B.B.B.B.F.B.E.!.!.(.!.(.!.(.!.(.(.!.(.!.!.(.(.!.!.(.!.(.(.!.!.(.(.!.!.(.(.!. 0 !.!.(.(.!.!.(.(.!.!.(.(.!.!.(.(.!.!.(.(.(.!.!.(.!.T. 0.!.(.(.!.!.B.B.B.B.B.B.W 1 1 s s s s s s 1 ",
"s 1 s s s a s a s g B.F.F.B.B.B.E.(.!.!.!.(.!.!.!.!.(.!.!.!.(.!.!.(.!.!.(.!.!.!.!.!.!.(.(.!.!.(. 0 (.!.!.!.(.!.!.!.!.(.!.(.!.(.!.!.(.(.!.!.!.!.(.!.(.T. +.!.!.!.!.B.F.F.B.B.F.W a s s 1 s 1 s s s ",
"s 1 s s a s s s s g F.B.B.B.F.B.E.(.!.!.(.!.!.(.(.!.!.(.!.!.(.!.!.!.(.!.!.(.!.(.(.!.(.!.!.(.!.!. 0 !.!.(.!.(.!.(.!.!.(.!.!.!.!.(.!.(.!.!.!.(.(.!.!.!.T. ) Q.!.!.B.F.B.B.B.B.W a a s a s s s s a ",
"s s a s s a a s 1 g B.B.B.B.B.B.E.!.(.!.(.!.!.(.(.!.!.(.!.(.!.!.!.(.!.!.!.!.!.(.(.!.!.(.!.!.(.!. 0 !.!.(.!.!.!.(.!.(.!./.!.(.!.!.!.(.!.(.!.!.!.!.(.!.T. y Q.!.B.B.B.B.B.B.W : a a s a 1 s 1 s ",
"a a a a a a s a s g B.B.B.B.B.B.E.!.!.!.!.!.(.!.!.!.(.!.!.!.!.(.!.!.!.(.(.!.!.!.!.(.!.!.!.!.!.!. # .............. ................................... . l.~.Y.Y.Y.W.Y.Y.Y.T.T.Y.Q.!.!.!.!./.L.2 0 Y.B.B.B.B.B.B.W a s a s a 1 s s 1 ",
"a a s a a a a a a g B.B.F.B.B.B.E.!.!.(.!.!.!.!.!.!.!.!.!.(.!.!.!.(.!.!.!.!.(.!.!.!.!.!.(.!.!.(. . . K.!.!.(.!./.!.!.!.!.(.!.!.(.!.(.!.!.(.Y.5 2 r.B.F.B.B.B.W s a a a a s 1 s s ",
"s a a a a a a a f f B.B.B.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!. K.!.!.!.!.!.!.!.(.!.!.!.!.!.(.!.!.!./.!.V.X 2 N.B.B.B.B.A a a a a a a a a a ",
"1 a a a a a a a s < B.B.B.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.(.!.!.!. V.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.K.2 2 r.B.B.B.B.B.W a a a a a a a a a ",
"a 1 a a a 1 a a 1 g B.B.M.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!. X.7.7.7.7.7.0.7.q.t.w.w.t.w.w.w.t.u.7.X 0 Y.B.B.N.B.B.B.A a a a a a a a a a ",
"a a 1 a a a a 1 1 f M.B.B.B.M.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.y.O.3.+.3.i.!.!.Q.!.!. 2 3.3.3.3.3.3.3.3.3.3.2.3.3.3.3.3.3.3.2.3.3.3.3.3.3.O. u Q.Q.N.B.N.B.B.M.W a : a a a 1 a 1 a ",
"a a 1 a a a a a a g B.N.B.B.B.B.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.u .!.!.!.!.!. 9 !.!.!.Q.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.Y. / !.!.!.B.B.B.B.N.N.A a a a a a a a 1 a ",
"1 a a 1 1 1 1 a 1 g B.B.M.B.M.B.E.E.!.!.!.!.E.!.!.!.!.!.!.E.!.!.!.!.!.!.!.i .!.!.!.Q.J. E.!.!.!.Q.!.!.!.!.!.!.!.!.E.!.!.!.!.!.!.!.!.Q.Q.Q.Y. X q.!.!.!.E.B.N.B.M.B.N.A a 1 1 1 a 1 a a 1 ",
"a a 1 a a a 1 a 1 f M.B.M.B.M.B.E.!.E.!.!.!.!.!.!.!.!.!.!.!.!.!.!.Q.!.!.!.u | !.Q.!.P.5 D.!.!.!.!.Q.!.!.E.!.!.!.!.Q.!.!.!.!.!.E.!.!.!.!.!.Y. O i.!.!.Q.!.!.M.B.B.B.N.B.W a a 1 a 1 1 a 1 a ",
"1 1 1 1 1 1 1 1 1 f M.N.B.M.B.B.E.E.!.!.!.E.!.!.E.!.E.!.!.!.E.!.E.Q.Q.!.Q.u | !.Q.V.# O E.E.!.E.!.E.!.!.!.E.!.!.Q.Q.!.E.!.!.E.!.!.Q.Q.Q.!.Y.9 9 9 9 7 2 2 2 3 2 2 2 2 2 @ O O O O o O O o X 4 G.Q.!.!.Q.E.!.B.M.M.B.B.M.C < 1 1 1 1 1 1 a : ",
"1 1 1 1 1 1 1 1 1 g B.N.M.N.B.M.J.E.!.!.!.!.E.!.E.!.!.!.!.E.!.E.!.!.!.!.!.u | Q.i.o o y.Q.Q.!.!.!.!.!.E.!.E.!.!.E.E.!.!.!.!.E.E.!.!.!.!.!.E.!.!.E.!.!.!.!.!.E.E.!.!.!.!.E.!.E.Q.!.Q.!.!.!.!.!.E.!.E.!.E.!.!.E.B.B.B.B.N.B.A a 1 1 1 1 1 1 1 1 ",
"1 1 1 1 1 1 1 a 1 g N.N.M.N.M.M.E.!.E.!.E.!.!.!.!.!.!.E.!.!.!.!.E.!.E.!.E.i .w. @ i.!.Q.!.E.E.!.E.!.!.!.!.!.!.!.!.!.!.E.!.!.E.!.E.!.E.!.!.!.!.!.!.E.!.E.!.!.!.!.E.!.!.!.!.!.Q.!.!.E.E.!.E.!.!.!.E.!.!.!.!.E.M.M.M.M.M.N.A : 1 1 1 a 1 1 1 1 ",
"1 1 1 1 1 1 1 1 1 < N.N.B.B.M.B.J.!.E.!.!.!.E.!.!.E.E.!.E.!.!.E.!.!.E.!.!.u w # K.E.E.!.!.E.E.!.!.E.E.!.E.E.E.!.!.E.E.!.E.!.!.!.E.!.!.!.E.!.!.E.E.!.E.E.!.E.!.E.!.E.E.!.E.!.!.E.!.E.E.!.!.E.E.!.!.E.!.E.!.E.M.B.B.M.N.N.A a 1 1 1 : 1 a 1 1 ",
"1 1 : 1 1 1 1 : 1 < M.N.M.M.B.M.J.E.!.E.E.E.!.E.!.E.!.!.!.E.E.!.E.!.!.E.Q.i 4 G.Q.!.!.!.E.!.!.E.!.!.!.E.!.!.E.!.!.E.!.E.!.!.E.!.!.E.E.E.!.E.E.!.!.E.!.!.E.!.E.!.E.!.!.E.!.E.!.!.E.!.!.!.E.!.!.E.!.!.!.E.!.E.M.M.N.M.N.M.A : : 1 : a : : 1 : ",
"1 1 1 : : 1 1 : 1 < B.N.M.B.M.B.J.!.!.!.!.E.!.E.!.E.!.E.E.!.Q.E.!.Q.Q.Q.E.u w E.E.!.E.E.!.E.!.!.E.!.E.E.!.E.!.!.E.!.E.!.E.!.E.E.!.E.!.!.!.!.E.!.!.E.!.!.!.!.!.!.E.!.!.!.!.E.!.E.!.!.E.!.!.!.E.E.!.!.!.E.!.!.E.B.M.B.M.N.M.W : 1 1 : 1 1 a : 1 ",
": : 1 1 1 : 1 1 < < N.N.M.M.M.M.J.L.t.t.t.t.t.t.t.t.t.t.t.t.t.q.e.t.e.t.e.w u E.Q.!.E.!.!.E.!.E.!.E.E.!.!.E.!.!.E.!.E.!.E.!.E.!.!.E.!.E.E.E.E.!.E.!.E.!.E.E.E.E.E.!.E.E.E.!.E.!.!.E.E.!.E.E.!.E.!.E.E.!.!.E.E.!.M.M.M.M.M.N.C : : : 1 1 : : : 1 ",
"1 : 1 : : 1 : 1 1 < M.M.M.B.M.M.J.4. .E.E.E.Q.!.E.!.E.E.!.!.E.!.E.E.E.E.E.E.!.!.E.!.E.!.E.E.!.E.!.E.!.!.E.!.E.E.!.E.!.E.!.!.E.!.E.!.E.E.!.E.E.!.E.!.E.!.E.E.!.E.E.E.E.!.E.M.M.B.M.M.M.A 1 : 1 1 : 1 : : 1 ",
"1 : : 1 : : : : 1 < M.M.M.M.M.M.J.4. 2.Q.!.E.!.E.E.!.E.E.!.E.E.!.E.!.E.!.!.E.!.E.E.!.E.!.E.E.!.E.!.E.!.E.!.E.E.E.!.E.!.E.!.E.E.!.E.!.E.E.!.E.!.E.E.!.E.!.E.!.!.E.!.E.!.E.E.E.M.M.M.M.M.M.A : : : : : : 1 : : ",
": : 1 : : : : : : f M.M.M.M.M.M.J.4. q.Q.E.Q.!.E.!.E.E.!.E.!.E.!.!.E.!.!.E.!.!.E.!.E.Q.Q.E.Q.E.Q.E.Q.E.E.!.E.Q.E.!.E.E.!.E.E.!.E.E.!.E.Q.E.E.Q.Q.E.!.E.E.!.E.Q.E.E.Q.E.Q.E.!.E.M.M.M.M.M.M.Z : a : : : a : : a ",
": : : : : : : : : < M.M.M.M.M.M.J.4. i E.Q.E.E.E.!.!.E.E.!.E.!.E.E.E.E.E.!.E.E.u 2 # # 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 p M.M.M.M.Z : : : : : ; : : ; ",
": : : : : : : : : f N.M.M.M.M.M.J.i.y u y u y u y u y y u u y u y u y y u + y Y.E.!.E.E.!.E.E.E.!.E.E.E.E.!.E.E.!.E.w . e M.M.M.M.Z : : : : : : : : : ",
": : : : : : : ; : < M.M.M.M.1.M.J.E.E.!.Q.E.E.Q.E.E.Q.E.Q.E.E.E.E.E.E.!.E.u 7 U.E.!.E.E.E.!.E.E.E.!.!.E.E.!.E.E.E.8 . e M.M.M.M.Z ; ; : : : : : : : ",
": : : : ; : : : : < M.M.M.M.M.M.J.E.E.E.!.E.!.E.!.E.!.E.E.!.E.!.Q.E.E.E.!.u 2 L.E.Q.E.Q.E.!.E.!.E.E.E.E.!.E.!.E.w . e M.M.1.M.Z : : : : : : : : ; ",
": : : : : : : : : < 1.M.1.M.M.1.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.!.!.E.!.E.E.u + V.E.E.E.E.E.E.E.!.E.!.E.E.E.E.E.0 8 y y r y y y e y y y y y y y y y e y y y y y y t y y y t t y t y y t y y y t y y y y t e ^ M.M.M.M.Z : ; : ; ; ; : ; : ",
": : : ; - ; : : : < M.1.1.M.M.1.J.E.E.E.E.E.!.E.E.E.E.Q.E.!.E.E.E.E.!.E.E.u o e.!.E.E.!.E.E.E.E.!.E.E.E.E.E.w i.Q.E.E.E.!.E.E.E.E.E.E.E.E.Q.E.Q.E.E.E.E.E.E.Q.E.E.E.!.E.E.E.E.E.E.E.E.!.E.E.Q.E.E.E.E.1.1.M.1.1.M.N : : ; : : : : : ; ",
"- : ; : : : - : : < M.1.M.M.1.M.J.!.E.E.!.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.i u @ 8.E.E.E.E.Q.E.E.E.E.!.E.E.!.0 y.E.E.Q.E.Q.E.E.Q.E.E.Q.E.E.E.E.E.E.Q.E.!.E.E.E.E.E.E.E.E.E.!.E.E.E.!.E.E.E.E.E.E.Q.E.E.M.M.M.M.M.M.N ; : ; ; ; ; ; ; : ",
"; ; ; ; ; ; ; ; ; < 1.M.1.M.1.M.J.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.!.E.E.E.E.u .V.3 X.E.E.E.E.E.E.E.E.E.E.E.E.q u.E.E.E.Q.E.Q.E.Q.E.E.E.E.E.Q.E.E.E.E.E.E.E.!.E.E.E.Q.E.Q.E.E.E.E.E.Q.E.E.E.E.E.Q.E.E.E.1.M.M.1.1.1.C ; ; ; ; ; ; ; : ; ",
"; ; ; ; : ; ; ; ; < M.1.M.1.M.1.J.E.E.E.E.E.!.E.E.E.E.E.E.E.!.E.E.E.E.E.E.u .E.G.5 X.E.E.E.E.!.E.E.E.!.E.E.q i.E.E.E.2.@ @ @ @ @ + @ # @ @ @ + !.E.!.E.E.E.E.K.i i i i ~ i i ~ i i i i i Q Q Q Q i i >.M.1.M.M.M.Z ; ; ; ; ; ; ; ; ; ",
"; ; ; ; ; ; ; ; ; < M.M.M.1.1.M.J.E.E.E.E.!.E.E.E.E.E.E.E.!.E.E.E.E.Q.E.E.u .E.E.Y.w U.E.Q.E.!.E.!.E.E.E.!.q u.E.E.E.3. !.E.E.!.E.E.!.i. :.M.M.1.M.1.Z ; ; ; ; ; ; ; ; ; ",
"; ; ; ; ; ; ; ; - < 1.1.1.M.1.1.J.E.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.u .E.E.E.E.u G.E.E.E.E.E.E.E.!.E.E.q i.E.Q.E.o. E.E.!.E.E.E.E.i. ;.M.1.1.1.M.C ; ; ; ; ; ; ; ; ; ",
"; ; ; ; ; ; ; ; - < 1.1.1.1.1.M.J.E.E.E.E.E.!.!.E.E.!.E.E.E.E.E.E.E.E.!.E.i .E.E.Q.E.E.0 E.E.E.E.E.E.E.E.E.E.E.q y.E.E.E.o. E.E.E.E.E.E.E.i. ;.1.M.1.1.1.Z ; ; ; ; ; ; - ; ; ",
"- ; ; - - ; ; - ; < 1.M.1.M.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Y.U.U.U.U.Y.E.E.E.E.E.u E.E.E.E.E.E.E.E.E.Q.E.q y.E.E.E.o. E.E.E.E.E.!.E.i. ;.1.M.1.M.1.N ; * ; - - ; ; ; * ",
"; - ; - - ; ; , - < 1.1.1.1.1.1.J.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Q.E.E.E.u E.E.E.E.E.E.E.E.E.E.E.w y.E.E.E.2.2 2 2 2 2 2 2 2 2 2 2 4 E.E.E.E.E.E.E.i. . ;.M.1.1.1.1.N - ; ; ; ; ; ; ; ; ",
"- ; - ; ; - ; - - < 1.1.M.1.1.M.J.E.E.E.E.E.E.E.E.E.E.E.!.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.u Y.E.E.E.E.!.E.E.E.E.E.0 y.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.U.y.y.y.y.y.y.y.y.y.y.i.y.y.y.f.y.y.y.y.,.1.1.1.M.1.N ; ; * - ; * - ; * ",
"- - - - ; ; - - - > 1.1.1.1.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.u U.E.E.E.E.E.E.E.J.E.J.w y.E.E.E.E.E.E.J.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.1.1.1.1.1.1.C - - - ; - - - - ; ",
"- ; - ; - - ; - ; , 1.1.r.1.1.1.F.E.E.E.E.E.E.E.J.E.E.E.E.J.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.u J.E.E.E.E.E.E.E.E.E.E.0 y.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.J.E.E.E.E.E.1.1.1.1.1.1.C - - - - - ; - - - ",
"- - - - - - - - - > 1.1.M.1.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.Y.u U.E.E.E.E.J.E.E.E.E.E.w y.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.J.E.E.E.E.J.E.E.E.R.E.E.E.E.E.E.E.E.E.E.E.E.E.J.1.1.1.1.1.1.M - - - - - - ; - - ",
"- - - - - - - - - > 1.1.1.1.1.1.F.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.J.E.E.E.E.E.E.E.u J.E.E.E.E.E.E.E.E.E.E.0 e.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.1.1.1.1.1.1.N - - - - ; - - - - ",
"- - * - - - - - - > 1.1.1.1.1.1.F.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.u Y.E.E.E.E.E.E.E.E.E.E.w y.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.1.1.<.1.1.1.M - - - * - - - - - ",
"- - - - - - - - - > 1.1.1.<.1.1.F.E.E.E.E.E.E.E.E.J.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.u Y.E.E.E.E.E.E.E.E.E.E.0 e.E.E.E.E.E.E.E.E.E.E.R.E.J.E.E.R.E.E.E.E.E.E.E.E.E.J.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.J.1.<.1.1.1.1.M - - - - - - - - - ",
"* - - - * - * - - > 1.1.<.1.1.<.F.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.J.E.E.E.E.J.E.E.E.E.E.E.u U.E.J.E.R.J.E.E.J.J.E.0 y.E.E.J.E.J.E.E.Y.E.E.E.E.J.E.E.E.E.E.E.E.J.J.E.E.E.E.E.E.E.E.E.E.E.E.J.E.E.E.E.E.J.E.E.1.1.1.1.<.<.m - % - - - - - - - ",
"- * * - - - * - - > <.<.1.1.1.1.J.E.J.E.E.E.J.E.J.E.E.E.J.E.E.J.E.E.E.J.E.E.J.E.E.E.E.o.e r w e + e t y e w 3.E.E.E.E.E.0 y.E.J.V.V.V.V.V.N.V.V.V.V.V.V.V.V.F.J.E.E.E.E.E.E.J.E.E.E.J.E.x.~ ~ ~ ~ ~ ~ p ~ ~ ~ ~ i ^ <.1.<.1.1.M - - - & - - - % - ",
"* % - - - - - - - > 1.<.1.<.1.<.F.E.J.E.E.E.J.E.E.E.E.J.E.E.J.E.E.E.J.E.E.J.E.E.E.E.E.r y E.E.E.E.E.w e.E.i. .E.R.E.E.J.E.E.J.J.E.E.E.E.8. 7 1.1.1.1.<.m - - % - - - - - & ",
"& - % - % - % - % > <.1.1.<.<.1.F.E.E.E.J.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.r y J.E.E.J.E.7 y.E.i. / E.E.E.E.E.E.E.E.E.E.E.E.J.8. 7 1.<.<.1.1.M * - - % - % - - & ",
"% - - - % - - - - > 1.<.<.1.1.<.F.E.E.E.E.E.J.E.J.J.E.E.E.E.J.E.E.J.E.E.E.E.J.J.J.E.J.e y E.E.J.E.J.w y.E.i. .J.E.J.E.E.E.E.E.E.E.E.E.E.8. 7 <.1.1.<.1.M - % - % * % - % - ",
"& * - % - - % % - > <.1.1.<.<.1.F.J.J.E.E.J.E.E.E.E.E.J.J.E.J.E.E.E.J.J.J.E.E.E.J.E.E.w e E.E.J.E.E.0 y.J.y. / Y.E.E.E.J.E.J.E.J.E.J.J.E.8. 7 1.<.<.1.<.M % - * - * - * * * ",
"& & % - * % % - % > 1.<.<.1.1.<.F.E.J.E.E.J.E.E.E.E.E.J.E.E.E.J.J.E.E.E.J.E.E.E.E.E.E.i.e.e.e.e.e.e.e.e.e.e.e.e.e.e.x.E.E.J.J.E.0 e.E.i. .E.E.E.E.J.J.E.J.J.E.E.E.E.8. 7 <.1.<.<.1.m - * * % - % - % - ",
"& & - % & - - - % > <.<.<.<.<.<.F.E.J.E.E.J.E.J.J.J.E.E.E.J.E.E.E.E.J.E.E.E.J.J.E.J.J.E.J.E.E.E.E.E.E.E.E.J.E.E.J.E.J.E.E.E.E.E.w y.J.i. ..E.J.J.E.E.E.E.E.E.E.J.E.R.8. 7 <.1.<.1.<.m % % * * % - % % * ",
"% - % - % - % % & > <.1.<.<.<.1.F.J.E.E.E.E.J.E.E.E.J.E.J.E.J.E.E.J.E.J.E.J.E.E.J.E.E.E.J.E.E.E.J.J.E.E.E.E.J.J.E.J.E.E.J.J.E.J.0 i.J.V.u u u u i u u i i u u u u u 8.E.E.J.E.J.E.J.E.J.E.E.E.E.8. 7 <.<.<.1.<.M % - % % - - % * % ",
"* % * % * % - % % > <.<.1.<.<.<.F.E.E.J.J.E.E.E.E.J.E.E.E.E.J.E.E.J.E.E.E.E.J.E.E.E.E.J.E.E.J.J.E.E.E.J.J.E.E.E.E.E.E.J.E.E.E.E.0 y.E.E.J.E.J.E.E.J.E.J.E.E.J.E.E.J.E.E.J.E.E.E.E.J.E.E.E.E.J.J.S.2.2.4.2.7.2.2.7.2.2.7.2.;.1.<.<.<.<.m - % * - % % - % & ",
"* % * % % * % - & = <.<.<.<.<.<.F.E.J.E.E.E.E.J.E.E.J.E.E.J.E.E.E.E.J.E.E.E.E.E.J.E.E.E.J.E.E.E.E.E.J.E.J.E.E.E.E.J.E.E.E.E.E.J.V.i.i.i.J.E.E.Y.J.E.E.J.E.E.J.E.E.E.J.E.E.J.E.E.J.E.E.J.E.E.E.J.E.J.E.E.J.E.E.E.J.E.E.E.E.E.Y.J.<.<.<.1.<.<.m * % & % - % % % & ",
"* * % * * * % % % > <.<.<.<.<.<.F.J.J.E.J.J.J.E.E.J.E.J.J.E.E.J.Y.J.E.J.E.J.J.E.E.J.E.J.E.J.J.E.J.J.E.J.E.E.J.J.E.E.J.J.J.E.J.E.J.J.J.E.J.J.J.E.J.E.E.J.J.E.J.E.E.J.E.J.J.E.J.E.E.J.J.E.J.J.J.E.J.E.J.J.E.E.J.J.E.E.J.J.J.J.E.J.<.<.<.<.<.<.m % * % % * % - % % ",
"% * * % % % * % % > <.<.<.<.<.<.1.M.M.M.1.M.M.M.M.M.M.M.M.M.M.M.M.M.M.1.M.M.M.1.M.M.M.M.M.M.1.1.M.M.M.M.M.M.1.1.M.M.M.M.M.M.1.M.M.M.M.M.M.M.M.1.M.M.M.M.M.M.M.M.1.M.M.M.M.M.M.M.M.M.M.M.M.M.M.1.M.M.M.M.M.M.1.1.M.M.M.M.M.M.M.M.<.<.<.<.<.<.m % % * % % % * - % ",
"% % % % * % % * % = <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.n % % % % * % % % % ",
"% * % % % % % % % = <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.n % % % * % % - % % ",
"% % * % % % % % % > <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.n $ % % % % % % % % ",
"% % % % % % % % % = <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.,.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.6 = % % % % % % % % ",
"% $ % % % $ % % % % ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( / ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ^ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 6 $ % % % % % % % % ",
"% % % % % % % % % $ % % $ % % % % % % % % % % % $ $ $ $ $ $ $ % $ % $ % $ % % % % % % % % % % % $ $ % $ % % $ % % % % % % % % $ % % % % $ % $ % $ $ $ $ $ % % $ % $ % % $ % % % % % $ % % $ % $ $ $ % % $ % % $ $ % % $ % % % $ $ % $ % % % % % % % % % % % % % ",
"_.$ $ % $ $ $ $ $ % % $ % $ $ $ $ $ $ % $ $ $ % $ $ $ $ $ $ $ $ % % % $ % $ $ % $ $ $ % $ $ $ % $ $ $ % $ % % $ $ % $ $ $ $ % $ $ $ $ $ % $ % % $ $ $ $ $ $ $ % % $ $ % % $ $ % $ $ % % $ % $ % $ $ % $ $ % % $ % $ $ % $ $ % $ % $ % % $ $ $ $ % % $ % $ $ $ $ ",
"_.$ % $ $ $ $ % $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ % $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ % $ $ $ $ $ % $ % $ $ % % $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ % $ % $ $ % $ $ $ $ $ $ $ $ $ $ $ $ $ $ % $ $ $ $ $ $ % $ $ % $ $ $ $ % $ $ % % $ % $ $ % $ _.",
"_._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _.",
"_._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _._.",
"_._._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % _._._.",
"_._._._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _._._._._.",
"_._._._._._._._.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % _._._._._._._._."
};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

+209 -216
View File
@@ -1,222 +1,215 @@
/* XPM */
static char *icon_kicad_64[] = {
/* columns rows colors chars-per-pixel */
"64 64 152 2 ",
"64 64 145 2 ",
" c #A33E03",
". c #A44106",
"X c #A5430A",
"o c #A94C16",
"O c #AB511D",
"+ c #876900",
"@ c #8A6B00",
"# c #8F7000",
"$ c #937300",
"% c #997700",
"& c #9D7A00",
"* c #8D7112",
"= c #A27E00",
"- c #AF5C2B",
"; c #B05E2D",
": c #B15F30",
"> c #957E2D",
", c #B36335",
"< c #B3673B",
"1 c #B56A3D",
"2 c #B76D42",
"3 c #B97046",
"4 c #B77249",
"5 c #B9754D",
"6 c #BB7A53",
"7 c #BD7E59",
"8 c #A68100",
"9 c #AB8500",
"0 c #AF8800",
"q c #B38B00",
"w c #B88F00",
"e c #B28C09",
"r c #BC9200",
"t c #B9930E",
"y c #B28E11",
"u c #BB971C",
"i c #97802D",
"p c #9C832E",
"a c #A0872F",
"s c #BC9C2E",
"d c #A48A30",
"f c #A98E31",
"g c #AD9232",
"h c #B29634",
"j c #B69934",
"k c #C19600",
"l c #C59900",
"z c #C99C00",
"x c #C09708",
"c c #C09A13",
"v c #C8A11A",
"b c #C29E24",
"n c #CAA62C",
"m c #C4A438",
"M c #988540",
"N c #9A8849",
"B c #BE815D",
"V c #BEA344",
"C c #BD8C70",
"Z c #C1825D",
"A c #CCAE43",
"S c #C7AC51",
"D c #CFB65F",
"F c #C58E6D",
"G c #C79375",
"H c #C89376",
"J c #C69679",
"K c #C99578",
"L c #C6997F",
"P c #CA997C",
"I c #C2AC60",
"U c #CAB66E",
"Y c #C6B67C",
"T c #D3C07D",
"R c #BC9680",
"E c #AEAA9D",
"W c #B0AC9F",
"Q c #B2AEA1",
"! c #B6B2A4",
"~ c #B9B5A7",
"^ c #BBB7A9",
"/ c #BEBAAB",
"( c #B3B3B3",
") c #BBBBBB",
"_ c #C79C82",
"` c #C89C82",
"' c #CBA48E",
"] c #CEBF8A",
"[ c #CFA790",
"{ c #CCA995",
"} c #D0AA94",
"| c #C9BE96",
" . c #D8B39E",
".. c #C5B5AB",
"X. c #CBB6A9",
"o. c #C1BDAE",
"O. c #D4B7A6",
"+. c #D5BAAA",
"@. c #D9BDAC",
"#. c #C4BFB0",
"$. c #C3BDB9",
"%. c #D6C99A",
"&. c #DACB98",
"*. c #CCC5AA",
"=. c #D1C7A3",
"-. c #DCCEA1",
";. c #DED3AD",
":. c #C6C1B1",
">. c #CAC5B5",
",. c #CEC9B8",
"<. c #D7C1B4",
"1. c #D9C3B7",
"2. c #D3CDB6",
"3. c #D7C5BB",
"4. c #D9C6BA",
"5. c #D2CDBC",
"6. c #DBC9BE",
"7. c #D9D0B1",
"8. c #D6D1BF",
"9. c #E1C6B6",
"0. c #C4C3C3",
"q. c #CBCBCB",
"w. c #DBCCC4",
"e. c #DCCFC8",
"r. c #D6D2C3",
"t. c #DAD5C3",
"y. c #DED9C7",
"u. c #D6D4CF",
"i. c #DDD2CC",
"p. c #D4D4D3",
"a. c #DDD7D3",
"s. c #DED9D4",
"d. c #DBDBDB",
"f. c #E5CFC2",
"g. c #E6D1C4",
"h. c #E8D1C5",
"j. c #E3D4CA",
"k. c #E1DCCB",
"l. c #E8D8CF",
"z. c #E2DAD6",
"x. c #E2DEDC",
"c. c #E3E1DD",
"v. c #ECE2DC",
"b. c #E4E4E4",
"n. c #EAE6E3",
"m. c #E9E8E7",
"M. c #EBEBEB",
"N. c #F1E7E2",
"B. c #F2E8E3",
"V. c #F3F3F3",
"C. c #F9F9F9",
"Z. c None",
". c #A44006",
"X c #A6430B",
"o c #A84A13",
"O c #AB4F1A",
"+ c #AB521E",
"@ c #876900",
"# c #8A6B00",
"$ c #906F00",
"% c #8F7006",
"& c #947301",
"* c #997700",
"= c #9C7A01",
"- c #8F7518",
"; c #92771C",
": c #957A1C",
"> c #9A7E1D",
", c #A27E00",
"< c #AC5421",
"1 c #AD5827",
"2 c #AF5C2B",
"3 c #B26335",
"4 c #B46638",
"5 c #B5693D",
"6 c #AD6840",
"7 c #B76E44",
"8 c #B7724A",
"9 c #B9734A",
"0 c #BB7750",
"q c #BB7C57",
"w c #BB7D59",
"e c #9E811D",
"r c #A68101",
"t c #AB8500",
"y c #AF8801",
"u c #B08700",
"i c #B38B01",
"p c #B88F00",
"a c #B48E0D",
"s c #B79007",
"d c #BC9200",
"f c #BD9508",
"g c #A3851E",
"h c #A7891E",
"j c #AB8C1F",
"k c #B28E12",
"l c #B99312",
"z c #BE9814",
"x c #B4911B",
"c c #AF8F20",
"v c #B29120",
"b c #BB9923",
"n c #BEA039",
"m c #C29600",
"M c #C69A00",
"N c #C89B00",
"B c #C49A0A",
"V c #C59F1B",
"C c #C09F2A",
"Z c #C7A52F",
"A c #BE825F",
"S c #BF8361",
"D c #AF8B76",
"F c #B08C77",
"G c #C3A743",
"H c #CBAF4F",
"J c #C2AB5B",
"K c #D1B555",
"L c #C28562",
"P c #C28B6B",
"I c #C38E70",
"U c #C69172",
"Y c #C99272",
"T c #C8977A",
"R c #C7997E",
"E c #CB9B7F",
"W c #C8B266",
"Q c #CEB970",
"! c #B99580",
"~ c #B09789",
"^ c #ADA99B",
"/ c #B7ACA6",
"( c #BBABA2",
") c #BAB1AB",
"_ c #B4B4B4",
"` c #BCBCBC",
"' c #C99D83",
"] c #CBA28A",
"[ c #C7B780",
"{ c #CCBC85",
"} c #C1A697",
"| c #CDA791",
" . c #CCA995",
".. c #CEAE9B",
"X. c #D2AB94",
"o. c #D2AF9B",
"O. c #D1B19E",
"+. c #CFB2A1",
"@. c #D2B3A1",
"#. c #D9B9A7",
"$. c #D6BBAB",
"%. c #DABBA9",
"&. c #D6C382",
"*. c #CBC09A",
"=. c #D3C593",
"-. c #D9CB9B",
";. c #CDC6AF",
":. c #D1C7A6",
">. c #D6CDAD",
",. c #D6C1B5",
"<. c #DAC3B5",
"1. c #D7C7BD",
"2. c #D9C6BB",
"3. c #D4CEBB",
"4. c #DDCABF",
"5. c #DDD5B9",
"6. c #C4C4C4",
"7. c #CBC7C5",
"8. c #CCCCCC",
"9. c #D0CDC1",
"0. c #DBCDC4",
"q. c #DACFC8",
"w. c #D9D5C5",
"e. c #D6D3CA",
"r. c #DDD2CC",
"t. c #DFDBCC",
"y. c #D4D4D4",
"u. c #DED6D2",
"i. c #DDD9D5",
"p. c #DCDCDC",
"a. c #E2CEC3",
"s. c #E4D1C6",
"d. c #E2D4CB",
"f. c #E8D6CC",
"g. c #E6DCD6",
"h. c #E2DEDA",
"j. c #E5E1DE",
"k. c #E8E1DD",
"l. c #E4E4E4",
"z. c #E8E4E2",
"x. c #ECE8E6",
"c. c #EBEBEB",
"v. c #F4F4F4",
"b. c #F9F9F9",
"n. c None",
/* pixels */
"Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.",
"Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.",
"Z.Z.Z.Z.Z.Z.z z z z z z z z z z z z z z z z z z z z z z z z z z z z Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.z z z z z z z z z z z z z Z.Z.Z.Z.Z.",
"Z.Z.Z.Z.z z z z z z z z z z z z z z z z z z z z z z z z z l z z z z z z z Z.Z.Z.Z.Z.Z.Z.z z z z z z z z z z z z z z z z z Z.Z.Z.",
"Z.Z.Z.l l l l l l l z l l l z l l l l l l l z l z k k z z l z l l z l z z l Z.Z.Z.Z.Z.Z.l l l z z k z l l z l l z l z l z z Z.Z.",
"Z.Z.Z.l l l l l l l l l l l l l l l l l l l l l k z z k l k l l k z k z k z z Z.Z.Z.Z.Z.Z.l l l k z l l l k l l k z k l l l Z.Z.",
"Z.Z.Z.l l l l &.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.-.v l l k k l Z.Z.Z.Z.Z.l l k l k l l l k l k l l l l k Z.Z.",
"Z.Z.Z.k l k k k.m.b.b.m.b.b.b.b.m.b.b.m.b.b.b.b.m.b.b.m.b.m.b.b.b.m.b.z.n k k l k l Z.Z.Z.Z.Z.l z k l k k l l k z k k l k l Z.Z.",
"Z.Z.Z.k k k k k.b.b.M.M.m.M.M.M.M.M.M.M.M.M.V.M.m.j.j.B.M.M.M.M.M.M.b.b.d.A r l r l k Z.Z.Z.Z.Z.l k k k k k k k k k k k k k Z.Z.",
"Z.Z.Z.k k k k y.b.b.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.V.b.b.b.D l l r k k Z.Z.Z.Z.Z.k k k k k k k r k k k k k Z.Z.",
"Z.Z.Z.k k r r k.b.c.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.C.V.b.c.c.] k k r k l Z.Z.Z.Z.Z.k k k k k k k k k k k k Z.Z.",
"Z.Z.Z.k r k r y.c.b.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. . B.C.C.C.C.C.C.C.C.V.b.b.c.%.x k r r r Z.Z.Z.Z.Z.r k r r k r k r k k r Z.Z.",
"Z.Z.Z.r r r r y.b.c.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.C.C.C.V.b.c.b.7.u r r r r r Z.Z.Z.Z.Z.r r r r k r r r r Z.Z.",
"Z.Z.Z.r r r r y.d.d.C.C.C.C.C.C.C.C.C.C.C.C.C.C.g. B.C.C.C.C.C.C.C.C.C.C.C.b.d.c.t.b r r r r r Z.Z.Z.Z.Z.r k r r r r r r Z.Z.",
"Z.Z.Z.r r w w t.d.b.C.C.C.C.C.C.C.C.C.C.C.C.C.C.f. B.C.C.C.C.C.C.C.C.C.C.C.C.M.d.d.a.m r r r r r Z.Z.Z.Z.Z.r r r r r r r Z.Z.",
"Z.Z.Z.r r w w t.d.d.V.C.C.C.C.C.C.C.C.V.C.C.C.C.f. N.C.C.V.C.C.C.C.C.C.C.V.C.C.M.d.c.d.S r w w w w Z.Z.Z.Z.Z.r r r r r r Z.Z.",
"Z.Z.Z.w w w w t.d.d.V.C.V.C.C.C.C.C.C.C.C.C.C.C.9.X B.C.C.C.C.C.C.C.C.C.C.C.C.V.C.V.d.d.d.U w w w w w Z.Z.Z.Z.Z.w w r w Z.Z.Z.",
"Z.Z.Z.w w w w 8.d.d.V.C.V.C.V.C.C.V.V.C.V.C.v.j. . 9.h.v.V.C.V.V.C.V.V.C.V.C.C.C.C.M.d.d.d.] r w w w w Z.Z.Z.Z.Z.Z.w Z.Z.Z.Z.",
"Z.Z.Z.w w w w 8.d.d.V.C.C.V.V.C.V.V.C.V.V.C.Z F C.C.C.V.V.C.V.C.C.V.V.C.V.C.V.d.d.d.=.t w w w w w Z.Z.Z.Z.Z.Z.Z.Z.Z.",
"Z.Z.Z.w w w w 8.d.d.V.V.V.C.C.V.V.C.V.C.V.V.Z F C.V.V.C.C.V.C.V.V.C.V.V.V.C.C.V.x.d.d.2.u w q w q w Z.Z.Z.Z.Z.Z.Z.Z.",
"Z.Z.Z.q q q q 5.d.p.V.C.V.C.V.V.C.V.V.V.C.V.Z . 1 l.l.; F V.V.V.V.V.C.V.V.V.V.C.V.C.V.V.V.V.b.d.p.r.s q q q q q Z.Z.Z.Z.Z.Z.Z.",
"Z.Z.Z.q q q w 5.p.d.V.V.V.V.V.V.V.V.C.C.V.V.Z 3 V.C., F V.V.V.C.V.V.C.V.C.V.V.V.C.V.V.V.C.V.b.d.p.u.V q q q q q Z.Z.Z.Z.Z.Z.",
"Z.Z.Z.q q q q 5.d.p.V.V.V.V.V.V.V.V.V.V.V.V.Z . 3 V.C., F V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.M.p.p.d.I q q q q q Z.Z.Z.Z.Z.",
"Z.Z.Z.q 0 0 0 5.p.p.V.V.V.V.V.V.V.V.V.V.V.V.Z 3 V.V., F V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.M.d.p.p.Y e q 0 q q Z.Z.Z.Z.",
"Z.Z.Z.q 0 0 0 5.p.p.V.V.V.V.V.V.V.V.V.V.V.V.7 3 V.V., F V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.M.d.p.p.| e 0 0 0 0 Z.Z.Z.",
"Z.Z.Z.0 0 0 0 ,.p.p.M.V.V.V.V.V.V.V.V.V.V.V.Z 3 V.V., F V.V.V.V.M.V.V.V.M.V.V.M.V.V.M.V.V.V.V.V.V.V.M.d.p.p.*.y 0 0 0 q Z.Z.",
"Z.Z.Z.0 0 0 0 ,.q.p.V.V.V.M.V.V.V.V.M.V.M.V.Z 2 N.n., F M.V.V.V.M.V.M.V.V.V.V.V.V.V.V.V.V.V.M.V.M.V.V.V.p.p.p.j 0 0 0 0 Z.Z.",
"Z.Z.Z.0 9 0 9 ,.p.p.V.M.V.V.M.V.M.M.V.V.V.V.7 F V.V.M.V.V.V.V.V.M.V.V.M.V.M.V.M.V.M.M.V.V.V.V.M.d.q.p.h 0 9 8 0 Z.Z.",
"Z.Z.Z.0 9 9 9 >.q.p.V.M.V.V.V.M.V.V.V.M.V.V.Z F V.M.M.V.M.V.V.V.V.M.V.M.V.V.V.M.M.V.V.V.M.V.V.V.d.p.p.h 9 0 0 8 Z.Z.",
"Z.Z.Z.9 9 8 9 >.p.q.M.M.M.M.M.V.M.M.M.V.M.M.f.@.P . +.@.g.V.M.V.M.V.V.M.M.V.` P ` P P P P K K G G G v.M.V.p.p.q.h 9 8 8 0 Z.Z.",
"Z.Z.Z.9 9 9 8 >.q.p.M.V.V.V.M.M.V.V.M.M.V.V.M.M.+. X V.M.M.V.V.M.M.M.M.V.M.M.X X - l.M.d.p.q.j 8 0 9 9 Z.Z.",
"Z.Z.Z.8 8 9 9 >.q.q.M.M.M.M.M.V.M.M.M.V.M.M.M.V.@. X M.V.M.M.M.M.V.V.M.M.V.M.X X X X X X X O j.p.q.q.h 9 8 8 8 Z.Z.",
"Z.Z.Z.8 = 9 9 #.q.q.M.M.M.M.M.M.M.V.M.M.M.V.M.M.@. , , , < , , , < , , , , X L M.M.M.V.M.M.M.V.H o ..q.q.g 9 8 8 8 Z.Z.",
"Z.Z.Z.9 8 8 = >.q.q.M.M.M.M.M.M.M.M.M.M.M.M.M.M.@. X C M.M.M.M.M.M.M.M.+. C q.q.g = 9 8 9 Z.Z.",
"Z.Z.Z.8 = 9 = #.q.q.M.M.M.M.M.M.M.M.M.x.} } x.M.+. G C F C J F F F F F F F X o - - : : : : , : X { p.0.q.g = = 8 = Z.Z.",
"Z.Z.Z.= = = = #.q.0.M.M.M.M.M.M.M.M.m.f. 3.M.` b.M.M.M.b.M.M.M.M.M.M.M.X . o +.M.p.q.q.f = = = 8 Z.Z.",
"Z.Z.Z.= = = = #.0.q.b.M.M.m.m.m.M.M.m.w. 1.+.X o b.M.M.b.M.M.m.m.M.M.M.m.B B 7 7 7 6 6 6 6 5 5 5 w.m.m.p.q.0.g = = = = Z.Z.",
"Z.Z.Z.= = = = #.q.0.b.M.m.M.M.m.m.m.M.4. H o 1.M.b.M.M.M.m.m.m.M.b.M.m.m.M.M.b.m.m.m.m.m.m.m.m.M.M.m.p.0.q.g = = = = Z.Z.",
"Z.Z.Z.= = = = #.0.0.b.M.m.m.m.m.m.m.m.4. O w.M.m.M.M.m.m.m.m.M.b.b.M.m.m.M.b.M.b.b.m.m.m.m.m.m.m.m.m.p.q.0.f = & = = Z.Z.",
"Z.Z.Z.= = & & #.0.0.w.C C F F C C F F 7 - j.m.m.b.b.m.b.m.M.b.m.b.M.m.b.m.b.M.b.M.b.m.b.m.m.m.m.b.b.m.q.0.0.f & = & = Z.Z.",
"Z.Z.Z.& & = & / 0.0.{ O z.m.m.b.m.m.m.m.m.b.b.M.b.M.b.m.m.m.m.m.b.m.m.m.m.b.M.b.M.m.m.p.0.0.f & & = & Z.Z.",
"Z.Z.Z.& & & & / 0.0.+., : , , < , : : - o i.b.b.m.b.m.b.b.m.b.M.M.b.b.b.b.m.m.b.m.b.b.m.b.m.m.b.m.b.b.b.q.0.0.f & & & & Z.Z.",
"Z.Z.Z.& & & & / ) 0.b.m.b.b.M.b.m.b.M.3. O w.b.b.m.b.M.b.m.b.b.b.b.m.m.b.m.b.M.b.m.m.b.m.m.b.m.b.m.m.b.q.0.0.d % & & & Z.Z.",
"Z.Z.Z.& % & % / 0.0.b.b.b.b.b.b.b.b.b.3. o 3.b.b.b.b.b.b.b.M.b.b.b.b.b.m.b.b.b.b.b.b.b.b.b.b.m.b.b.b.q.0.0.d & % % % Z.Z.",
"Z.Z.Z.% % % % / 0.) b.b.b.b.b.b.m.b.b.4. ' X X +.m.b.b.b.b.m.b.b.b.b._ _ ` _ _ _ _ _ _ _ _ _ _ _ _ _ _ ..) ) d % % % % Z.Z.",
"Z.Z.Z.% % % % ^ 0.) b.b.b.m.b.m.b.b.m.4. <.4.o b.m.b.m.b.m.b.m.b.d.. . X . . . . R 0.0.d % % % & Z.Z.",
"Z.Z.Z.% % % % ^ 0.) b.b.b.b.b.b.b.b.b.w.< < w.b.<. b.b.b.b.b.b.b.b.b.d. ' b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.q.0.) a % % % % Z.Z.",
"Z.Z.Z.% $ % $ ~ ) ) b.b.b.b.b.b.b.b.b.b.b.b.b.b.e. d.b.b.b.b.b.b.b.b.s. ' i.o o o o X.m.b.; - - : - - 2 0.) ) a $ % $ % Z.Z.",
"Z.Z.Z.% $ $ $ ~ $.) d.b.b.b.b.b.b.b.b.d.b.b.b.b.w. d.b.b.b.b.b.b.b.b.s. ' u.o o o o X.b.b. O q.) ) a % $ $ % Z.Z.",
"Z.Z.Z.$ $ $ $ ! ) ) b.b.b.b.b.b.b.b.b.b.b.b.b.b.w. a.b.b.b.b.b.b.b.b.s. ' b.b.b.b.b.b.b.b.d.d.b.x.d.x.x.0.) ) a $ $ $ $ Z.Z.",
"Z.Z.Z.$ $ $ $ ! ) ) x.b.b.b.b.b.b.b.b.b.b.b.b.b.e. a.b.b.b.b.b.d.b.b.s. ' b.b.d.b.b.b.b.b.b.b.b.b.b.b.b.0.) ) a $ $ $ $ Z.Z.",
"Z.Z.Z.$ $ $ $ ! ( ) d.b.b.b.b.d.b.d.b.b.b.d.w.{ _ ' { X.b.d.b.b.x.b.s. ' w.3.3.<.3.i.b.b.b.b.3.{ { { { 0.( ( p # # $ $ Z.Z.",
"Z.Z.Z.$ $ # # Q ( ) d.b.d.d.b.b.b.d.b.b.b.b._ 4 b.b.b.b.b.b.s. ' < J c.c.b.c.C $.) ) a $ # # # Z.Z.",
"Z.Z.Z.# # # # Q ) ( b.d.b.b.d.b.b.b.b.d.d.c._ X X X X . 4 b.b.d.b.b.d.s. ' 4 o o o o _ b.b.d.x.C $.) ( > # # # # Z.Z.",
"Z.Z.Z.# # # # Q ( ( b.b.b.d.b.b.b.d.b.d.b.b.c.c.d.b.b.b.b.b.d.d.d.b.d.b.d._ 3.b.b.b.b.d.d.b.b.b.x.u.3.w.3.w.) ( ( > # # # # Z.Z.",
"Z.Z.Z.# # # # E ) ( d.d.b.b.b.d.b.d.b.b.b.d.b.d.b.d.c.b.d.b.b.b.b.b.d.b.d.b.c.b.d.d.b.b.b.b.d.d.b.c.b.x.d.b.0.( ( p # @ # # Z.Z.",
"Z.Z.Z.# # @ # E ( ( d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.0.( ( > @ # @ @ Z.Z.",
"Z.Z.Z.# + # + E ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( > @ @ @ # Z.Z.",
"Z.Z.Z.+ + # @ W ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( > @ @ @ @ Z.Z.",
"Z.Z.Z.# + + @ M N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N * @ @ @ @ Z.Z.",
"Z.Z.Z.+ @ + @ + + + + + + + + + + + @ + @ + + + + + + + @ + @ + + + + + + + + + @ + @ + + + + + + + + + @ + @ + @ + @ @ @ Z.Z.Z.",
"Z.Z.Z.Z.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ Z.Z.Z.",
"Z.Z.Z.Z.Z.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ Z.Z.Z.Z.",
"Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z."
"n.n.n.N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N n.n.n.n.n.n.n.n.n.n.N N N N N N N N N N M N N N N N N n.",
"n.M N M N M M N N N N M N N N N N M N N N M M M M M M N M M M N M M M M M M n.n.n.n.n.n.n.M N N N N N N M M N N N N N N N M N N ",
"n.M M M M M M M M M M M M M M M M M N N M M M M M M M M M M M N N M M M M M M n.n.n.n.n.n.M M M M M M M M M M M M M M M M M M N ",
"M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M n.n.n.n.n.n.M M M M M M M M M M M M M M M M M M ",
"M m M M B l.x.l.l.c.l.c.l.c.l.l.l.l.c.l.c.l.c.l.l.c.l.c.l.l.l.l.c.x.l.K M m M m m m n.n.n.n.n.M M m M m M m m M m M M M M M M d ",
"M m m m B l.l.l.l.l.l.l.l.l.c.l.c.l.l.l.l.l.l.x.l.l.x.l.c.l.c.l.l.l.z.l.&.M m m M m M n.n.n.n.n.M m m m M m M m m m m M d M M M ",
"m m m m B l.l.l.c.c.v.c.c.v.c.c.v.c.c.v.c.c.v.c.$.$.s.c.c.c.v.c.c.c.l.l.l.-.B m m m m m n.n.n.n.n.m m M m m m m m M M f M M d M ",
"m m m m m l.l.l.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o . Y b.b.b.b.b.b.b.v.l.l.l.5.V M d m m M n.n.n.n.n.m m m m m m m d d M d d M d ",
"m m m d f l.l.l.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.l.l.l.t.Z f M d f M n.n.n.n.n.n.d m m m m d m m m d m m ",
"d d m m B l.p.l.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.l.p.l.p.H M d f f d d n.n.n.n.n.m d m d m d m d m m d ",
"d d d d f p.l.p.v.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.b.c.p.l.l.Q d d d d d d n.n.n.n.n.d d d d d d d d d d ",
"d d d d f l.p.l.v.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.b.b.x.p.p.p.=.f d d d d d n.n.n.n.n.d d m d m d m d d ",
"d d p d f p.j.p.v.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.o Y b.b.b.b.b.b.b.b.b.b.b.b.b.v.p.p.l.>.z d d d p d n.n.n.n.n.d d d d d d d d ",
"d d p d f p.p.p.v.b.v.b.b.b.b.b.b.b.b.v.b.v.b.b.o Y b.v.b.b.b.b.b.b.v.b.b.b.b.b.v.p.p.p.w.b s d d d d n.n.n.n.n.n.p d d d d p ",
"p p p d s p.p.p.v.b.b.b.b.b.b.b.b.v.b.b.b.b.b.b.o Y b.b.b.v.b.b.b.b.b.v.b.b.b.b.v.v.l.p.p.i.G d p p p d p n.n.n.n.n.d d p p p ",
"d p p p s p.p.y.v.b.v.b.v.b.b.b.b.b.v.v.b.v.v.b.o P b.v.b.b.b.b.b.v.b.b.v.b.v.b.b.b.v.x.p.p.i.W p p p p p p n.n.n.n.n.d p d n.",
"i p p p a p.p.i.v.v.b.b.b.v.v.b.b.v.b.b.v.' O O . X O O f.b.v.b.v.b.b.b.v.b.v.v.b.v.b.v.l.p.p.p.{ a p i d i p n.n.n.n.n.n.n.n.",
"i p p p s i.p.y.v.v.v.v.v.b.b.v.b.v.v.v.b.U . . s.b.v.v.b.v.v.v.b.v.b.b.v.b.v.b.v.c.i.y.p.:.l i d i p p n.n.n.n.n.n.n.",
"i p i i a y.y.p.v.v.b.v.v.v.b.b.v.v.b.b.b.Y 7 7 5 f.b.b.b.v.b.v.b.v.b.v.v.b.v.b.v.b.v.v.p.p.i.3.b i i s p i n.n.n.n.n.n.",
"i i i i s p.y.y.v.v.v.b.b.v.v.v.v.b.v.v.v.Y X b.b.%. s.v.v.v.v.v.v.b.v.v.v.v.v.b.v.v.v.b.v.v.p.p.y.e.n i i i i i n.n.n.n.n.",
"i i i y s y.i.y.c.v.v.v.v.v.v.v.v.v.v.v.v.Y X v.v.#. s.v.v.v.b.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.p.p.y.y.J i i i i i p n.n.n.",
"i y i s a y.y.y.v.v.v.v.v.v.v.v.v.v.v.v.v.Y X v.v.%. a.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.l.y.p.y.[ y i i u i y n.n.",
"y i y y a y.y.y.c.v.v.v.v.v.v.v.v.v.v.v.v.U X v.v.#. a.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.c.v.v.v.v.v.c.y.y.y.+.s y i u y i n.",
"y y y y y p.y.y.c.v.v.v.v.v.v.v.v.v.v.v.v.U X v.v.#. a.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.x.p.y.y.;.x i u i u y ",
"y y y y y y.y.y.c.v.v.c.v.c.v.v.v.v.v.v.v.P X v.v.#. a.v.v.v.v.v.v.v.v.v.v.v.v.c.v.c.v.v.v.c.v.c.v.c.v.v.i.y.y.9.k y y y y ",
"y y y y a y.y.y.c.v.v.v.v.v.v.c.c.v.v.c.v.Y X #.#.Y a.v.c.v.c.c.v.v.c.v.c.v.v.v.v.c.v.v.v.v.v.v.v.v.v.v.c.y.y.y.v y t y t ",
"t y t y k 8.y.8.c.c.c.v.v.c.v.c.c.v.c.v.v.Y a.v.v.v.v.c.v.c.v.v.c.v.c.c.v.v.v.v.c.v.c.c.v.v.c.v.c.8.y.y.v y t t y ",
"t t t t t y.8.y.c.v.v.c.v.c.v.v.v.v.c.v.c.Y a.c.c.c.v.v.c.v.v.c.v.v.c.v.v.v.c.c.v.c.v.v.v.c.v.v.c.y.8.8.v t t t t ",
"t t t t t 8.8.y.c.v.c.v.c.v.v.c.c.c.c.v.c.g.a.4. Y 0.4.x.c.v.c.v.v.c.c.c.v.$.L L L L L L L L L A L L O.c.v.v.y.8.8.v t t t t ",
"t t r t a 8.8.y.l.c.c.v.c.c.c.v.c.v.v.c.v.c.c.c. X.v.v.c.v.c.v.c.c.c.c.v.v.U . . . R c.c.8.y.8.v t t t r ",
", r t t r y.8.8.c.c.c.c.v.c.v.c.c.c.c.c.c.v.c.v. X.c.c.c.v.c.c.c.c.v.v.c.c.U . . . . . . . L c.8.8.8.c r t r t ",
"t r r r r 8.8.8.l.v.v.c.c.c.c.c.c.v.c.v.c.c.c.c. < 4 4 4 4 4 4 4 4 4 3 4 4 5 . s.k.k.c.c.c.c.c.c.%.X . . 0 8.8.8.j r r r r ",
"r r r r r 8.8.8.l.c.c.c.c.c.c.c.c.c.c.v.c.c.c.c. . . 2 i.c.c.c.c.c.c.c.c.z.4 X ( 7.8.c = r r r ",
"r r , r r 8.8.7.l.c.c.c.c.c.c.c.c.c.h.$.<.k.c.c. 2 7 7 7 7 7 7 7 7 7 7 7 7 7 5 8 0 0 0 0 0 0 0 2 O <.7.8.6.c r r r r ",
", r , r , 8.8.8.l.c.c.c.c.c.c.c.c.c.@. $.c.z. I c.l.c.c.c.c.c.c.c.l.x.c.U 2 u.l.8.7.8.c r r = r ",
"r , , , g 6.6.8.l.c.c.c.l.c.l.c.c.x.#. $.h.8 S l.c.c.c.c.c.x.l.c.c.c.c.T o o o o o o o o o 7 j.x.c.7.7.6.c = r = r ",
", , , , > 7.7.8.l.c.l.c.l.c.c.c.c.l.#. o.3 3 h.x.c.c.l.c.c.c.l.c.c.c.l.c.l.c.c.c.l.c.c.c.x.c.c.c.l.c.c.l.6.6.8.h r = r , ",
", , , , , 6.6.6.l.c.c.l.c.x.l.c.l.c.+. < 8 j.c.x.l.c.c.l.l.l.c.c.l.c.c.l.c.c.l.c.c.c.l.x.c.l.l.c.c.l.c.c.8.8.6.h = r r = ",
", , = , , 8.8.6.h.q.0.0.a.0.0.0.0.0.' w l.l.l.l.l.c.c.l.c.l.c.l.c.l.l.c.c.l.l.c.l.c.c.l.c.c.c.c.c.c.c.l.6.6.6.h = , = = ",
"= = , = = 6.6.6.$. U l.c.c.l.c.l.c.l.c.c.l.l.c.l.l.c.l.l.c.l.l.c.l.x.l.l.l.l.l.l.l.l.l.7.6.6.g , , = , ",
"= = , = , 6.6.6.$. + l.x.c.l.c.c.l.c.c.l. .' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ! 6.6.g = = = , ",
"= = = = = 6.6.6.y...+.o.........o.o.P w l.l.l.l.l.l.l.l.l.< . . 1 6.6.g = = = = ",
"= = = = = 6.` 6.l.l.l.c.l.c.l.c.l.x.+. 6 h.l.l.x.x.c.l.c.< < 1 2 2 1 1 2 2 1 1 2 1 1 2 1 1 1 1 1 1 1 1 6 6.` e * = = = ",
"* = * * = 6.` 6.l.l.l.l.l.l.l.l.l.l.+. 2 3 d.l.l.l.l.l.l.+ e.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.x.l.l.l.l.6.6.6.e * = * = ",
"* * * * - 6.` 6.p.l.l.l.c.l.l.l.l.l.o. +.8 < e.l.x.l.l.l.< q.l.o.R R R R R ,.l.l.l.1.@.O.O.O.+.O.O.O.O.` ` 6.e * * * * ",
"* * * * = ` ` ` l.l.c.l.l.l.l.c.x.l... #.l.A L l.l.l.l.l.< r.z.5 U l.l.c.w . . . . . ( 6.` e * * * * ",
"* & * * = 6.6.` p.l.l.l.l.l.l.l.l.l.0.P P 0.l.l.< S l.l.l.l.l.+ 0.l.5 U l.l.l.w . ( ` ` e * * * * ",
"& * * * & ` ` ` l.l.l.l.l.l.l.l.l.l.l.z.l.l.l.l.2 U l.l.l.l.l.< 0.l.O.' ' ' ' ' ,.l.l.l.] w q q q q q q q A ) ` ` e & & * & ",
"& & & * * 6.` ` p.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.2 . I l.l.l.l.l.+ 0.l.l.l.l.l.l.l.l.p.l.p.l.l.l.l.j.l.l.p.l.l.` ` ` > & * & & ",
"* & & & & ` ` ` p.l.p.l.l.l.l.l.l.l.l.p.l.l.p.l.2 . I l.l.l.l.l.+ 0.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.` ` ` > & & & & ",
"& & & & % ` ` ` p.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.2 F z.l.l.l.l.+ q.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.p.l.l.l.l.l._ ` ` > & & & & ",
"$ & & # & _ ` _ p.l.l.l.l.l.l.p.l.l.p.l.l.q. . .+ 8 X. .e.l.l.< 0.u.u.u.u.y.u.i.i.l.l.l.l.l.l.p.+.+.+.+.+.+./ ` _ : $ % & & ",
"& $ $ & & _ ` ` p.l.l.l.p.p.l.l.l.l.l.l.p. . .l.p.+ 0.w 3 l.l.p.l.l.l.1. F ` ` > & & # & ",
"& # & $ % ` _ ` p.l.p.l.l.l.p.l.p.l.p.l.l. . .l.l.+ 0.w 4 p.l.l.l.p.p.1. F _ _ : # & # & ",
"$ & # & % ` _ _ y.l.l.p.l.p.l.l.p.l.l.p.p.p.0.0.1.0.1.0.0.i.p.p.< 0.w 3 l.l.p.l.l.l.1. D _ _ > # & & # ",
"# $ $ # % _ _ _ y.l.l.p.l.l.l.p.l.l.p.j.l.l.l.l.l.j.p.l.p.l.l.l.< 8.$.........+.} $.l.l.p.l.p.l.w.7 7 8 7 7 7 ~ _ _ : $ # $ $ ",
"# % % # % _ _ _ p.p.p.l.l.p.l.p.p.p.l.l.p.l.p.p.l.p.l.p.l.p.l.p.r.q.p.p.l.l.p.l.p.l.p.l.p.l.p.l.p.l.p.l.p.l.l.p._ _ _ : # $ # $ ",
"% # # % % _ _ _ ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` _ _ _ ; # # # # ",
"# # # # % _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ; # # # # ",
"# # # @ @ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ; # # # # ",
"# # @ # % @ @ @ @ @ @ @ @ @ @ @ @ # @ # @ # @ # @ @ @ @ # @ @ # @ @ @ @ @ @ @ @ @ # @ # # @ @ # # # @ @ # @ @ # @ @ # @ # # @ # ",
"n.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # @ @ n.",
"n.n.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # n.",
"n.n.n.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # n.n.n."
};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 95 KiB

+13 -8
View File
@@ -1,15 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1">
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<radialGradient id="a" gradientUnits="userSpaceOnUse" cy="25.129" cx="10.328" gradientTransform="matrix(.97815 .0053484 -.0046022 .84169 .97435 -1.027)" r="27.987">
<linearGradient id="b">
<stop stop-color="#89d5f8" offset="0"/>
<stop stop-color="#00899e" offset="1"/>
</radialGradient>
</linearGradient>
<radialGradient id="a" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17.014" cx="18.418" gradientTransform="matrix(.97244 -.10566 .050523 .465 -.35195 9.5854)" r="27.987"/>
<radialGradient id="c" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="3.3918" cx="29.041" gradientTransform="matrix(.95171 -.22592 .15618 .65794 -.1085 12.423)" r="27.987"/>
</defs>
<g stroke-linejoin="bevel" stroke="#004c5b">
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.184 2.532 31.106 4.7272-17.549 18.997-36.353-7.117 22.796-16.607z"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.058-18.119-0.963 31.586-15.549 22.977-0.546-36.444z"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
<path style="color:#000000" d="m27.439 2.865 0.561 30.953 28.853 5.765" stroke-dashoffset="2.5932" stroke-dasharray="4.32200003, 2.16100001" stroke-width="2.161" fill="none"/>
<path style="color:#000000" d="m27.718 33.796-21.264 17.204" stroke-dashoffset="1.513" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.186-19.341-1.091 32.808-15.549 22.977-0.546-36.444z"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.056 2.2749 30.976 4.47-17.291 19.511-36.482-7.374 22.797-16.607z"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#c)" d="m58.007 6.7472-0.894 32.409-28.839-6.289-0.882-30.391 30.615 4.2718z"/>
<path style="color:#000000" d="m28.195 32.896-21.559 18.377" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
<path style="color:#000000" stroke-width="2.161" fill="url(#a)" d="m40.455 26.182-13.091-2.546"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m57.636 7.1818-16.909 18.909"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m41 36.455-0.182-10.182"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

+8 -13
View File
@@ -1,20 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1">
<defs>
<linearGradient id="b">
<radialGradient id="a" gradientUnits="userSpaceOnUse" cy="25.129" cx="10.328" gradientTransform="matrix(.97815 .0053484 -.0046022 .84169 .97435 -1.027)" r="27.987">
<stop stop-color="#89d5f8" offset="0"/>
<stop stop-color="#00899e" offset="1"/>
</linearGradient>
<radialGradient id="a" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="17.014" cx="18.418" gradientTransform="matrix(.97244 -.10566 .050523 .465 -.35195 9.5854)" r="27.987"/>
<radialGradient id="c" xlink:href="#b" gradientUnits="userSpaceOnUse" cy="3.3918" cx="29.041" gradientTransform="matrix(.95171 -.22592 .15618 .65794 -.1085 12.423)" r="27.987"/>
</radialGradient>
</defs>
<g stroke-linejoin="bevel" stroke="#004c5b">
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.186-19.341-1.091 32.808-15.549 22.977-0.546-36.444z"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.056 2.2749 30.976 4.47-17.291 19.511-36.482-7.374 22.797-16.607z"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#c)" d="m58.007 6.7472-0.894 32.409-28.839-6.289-0.882-30.391 30.615 4.2718z"/>
<path style="color:#000000" d="m28.195 32.896-21.559 18.377" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
<path style="color:#000000" stroke-width="2.161" fill="url(#a)" d="m40.455 26.182-13.091-2.546"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m57.636 7.1818-16.909 18.909"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m41 36.455-0.182-10.182"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m27.184 2.532 31.106 4.7272-17.549 18.997-36.353-7.117 22.796-16.607z"/>
<path style="color:#000000" stroke-width="2.1615" fill="#fff" d="m40.916 26.084 17.058-18.119-0.963 31.586-15.549 22.977-0.546-36.444z"/>
<path style="color:#000000" stroke-width="2.1615" fill="url(#a)" d="m4.215 18.77 37.115 7.3804v36.311l-35.614-10.641-1.501-33.05z"/>
<path style="color:#000000" d="m27.439 2.865 0.561 30.953 28.853 5.765" stroke-dashoffset="2.5932" stroke-dasharray="4.32200003, 2.16100001" stroke-width="2.161" fill="none"/>
<path style="color:#000000" d="m27.718 33.796-21.264 17.204" stroke-dashoffset="1.513" stroke-dasharray="4.32293653, 2.16146827" stroke-width="2.1615" fill="url(#a)"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

+455
View File
@@ -0,0 +1,455 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.0"
id="svg2"
inkscape:version="0.92.0 r15299"
sodipodi:docname="lock_unlock.svg">
<metadata
id="metadata188">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1033"
id="namedview186"
showgrid="true"
inkscape:zoom="15.365974"
inkscape:cx="4.5385449"
inkscape:cy="11.395488"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
type="xygrid"
id="grid3167"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs4">
<linearGradient
id="an"
y2="13.849"
gradientUnits="userSpaceOnUse"
x2="28.979"
gradientTransform="translate(-116.91,-44.22)"
y1="28.622"
x1="16.226">
<stop
stop-color="#8b8b8b"
offset="0"
id="stop7" />
<stop
stop-color="#8b8b8b"
stop-opacity="0"
offset="1"
id="stop9" />
</linearGradient>
<linearGradient
id="ao"
y2="11.708"
xlink:href="#aa"
gradientUnits="userSpaceOnUse"
x2="129.27"
gradientTransform="matrix(0.52628,0,0,0.78596,-155.15,-37.182)"
y1="22.589001"
x1="153.36" />
<linearGradient
id="aa">
<stop
stop-color="#fff"
offset="0"
id="stop13" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop15" />
</linearGradient>
<linearGradient
id="ap"
y2="33.214001"
gradientUnits="userSpaceOnUse"
x2="135.71001"
gradientTransform="matrix(0.76019,0,0,0.76019,-191.41,-37.143)"
y1="110"
x1="203.57001">
<stop
stop-color="#4f3a1e"
offset="0"
id="stop18" />
<stop
stop-color="#4f3a1e"
stop-opacity="0"
offset="1"
id="stop20" />
</linearGradient>
<linearGradient
id="aq"
y2="41.539001"
xlink:href="#aa"
gradientUnits="userSpaceOnUse"
x2="127.36"
gradientTransform="matrix(0.69024,0,0,0.6591,-179.72,-32.689)"
y1="13.741"
x1="115.62" />
<linearGradient
id="at"
y2="62.02"
gradientUnits="userSpaceOnUse"
x2="-28.537001"
gradientTransform="translate(-116.91,-44.22)"
y1="24.645"
x1="54.296001">
<stop
stop-color="#965d01"
stop-opacity="0"
offset="0"
id="stop24" />
<stop
stop-color="#ab6200"
offset="1"
id="stop26" />
</linearGradient>
<linearGradient
id="ar"
y2="11.685"
gradientUnits="userSpaceOnUse"
x2="98.292"
gradientTransform="matrix(0.76019,0,0,0.76019,-189.24,-36.6)"
y1="70.179001"
x1="156.78999">
<stop
stop-color="#fb9c02"
offset="0"
id="stop29" />
<stop
stop-color="#fff"
offset="1"
id="stop31" />
</linearGradient>
<linearGradient
id="as"
y2="18.836"
xlink:href="#aa"
gradientUnits="userSpaceOnUse"
x2="142.17999"
gradientTransform="matrix(0.76019,0,0,0.76019,-191.41,-37.143)"
y1="16.563"
x1="116.42" />
<radialGradient
id="ay"
gradientUnits="userSpaceOnUse"
cy="4.2800999"
cx="123.57"
gradientTransform="matrix(1.2373,1.1904,-0.87346,0.90788,-246.63,-189.76)"
r="18.304001">
<stop
stop-color="#fff"
offset="0"
id="stop35" />
<stop
stop-color="#b3b0a7"
offset="1"
id="stop37" />
</radialGradient>
<filter
id="ag"
height="1.9436001"
width="1.15"
color-interpolation-filters="sRGB"
y="-0.47181001"
x="-0.074989997">
<feGaussianBlur
stdDeviation="1.4154412"
id="feGaussianBlur40" />
</filter>
<linearGradient
id="av"
y2="32.161999"
gradientUnits="userSpaceOnUse"
x2="40.938"
gradientTransform="matrix(0.63853,0,0,0.69647,-37.821,-3.0264)"
y1="32.161999"
x1="6.7268">
<stop
stop-color="#ead200"
offset="0"
id="stop43" />
<stop
stop-color="#fff16a"
offset="0.21"
id="stop45" />
<stop
stop-color="#b5a300"
offset="0.84"
id="stop47" />
<stop
stop-color="#e8d000"
offset="1"
id="stop49" />
</linearGradient>
<linearGradient
id="al"
y2="36.126999"
gradientUnits="userSpaceOnUse"
x2="30.875"
gradientTransform="matrix(0.63683,0,0,0.68893,-37.771,-1.8896)"
y1="25.002001"
x1="10.907">
<stop
stop-color="#fff"
offset="0"
id="stop52" />
<stop
stop-color="#fff"
stop-opacity=".49485"
offset="1"
id="stop54" />
</linearGradient>
<linearGradient
id="am"
y2="17"
gradientUnits="userSpaceOnUse"
x2="24.75"
gradientTransform="matrix(0.63798,0,0,0.92464,-37.808,-3.9886)"
y1="21"
x1="24.875">
<stop
stop-color="#fffac7"
offset="0"
id="stop57" />
<stop
stop-color="#fff8b2"
offset="1"
id="stop59" />
</linearGradient>
<radialGradient
id="ad"
xlink:href="#ab"
gradientUnits="userSpaceOnUse"
cy="20.312"
cx="15.938"
gradientTransform="matrix(1,0,0,0.58491,0,8.4316)"
r="3.3125" />
<linearGradient
id="ab">
<stop
offset="0"
id="stop63" />
<stop
stop-opacity="0"
offset="1"
id="stop65" />
</linearGradient>
<linearGradient
id="au"
y2="20.094"
gradientUnits="userSpaceOnUse"
x2="34"
gradientTransform="translate(-38.777,11.701)"
y1="20.094"
x1="17.188">
<stop
offset="0"
id="stop68" />
<stop
stop-opacity=".17172"
offset=".5"
id="stop70" />
<stop
offset="1"
id="stop72" />
</linearGradient>
<filter
id="ah"
height="4.0437999"
width="1.2829"
color-interpolation-filters="sRGB"
y="-1.5219001"
x="-0.14144">
<feGaussianBlur
stdDeviation="1.1889706"
id="feGaussianBlur75" />
</filter>
<linearGradient
id="ak"
y2="17.469999"
gradientUnits="userSpaceOnUse"
x2="27.191999"
gradientTransform="translate(0,-1.9263)"
y1="2.9137001"
x1="10.651">
<stop
stop-color="#cad0c6"
offset="0"
id="stop78" />
<stop
stop-color="#eaece9"
offset=".5"
id="stop80" />
<stop
stop-color="#c5cbc0"
offset="1"
id="stop82" />
</linearGradient>
<linearGradient
id="aw"
y2="14.85"
xlink:href="#ab"
gradientUnits="userSpaceOnUse"
x2="33.004002"
gradientTransform="translate(1.6824,1.125)"
y1="14.85"
x1="35.005001" />
<filter
id="ac"
height="1.0951999"
width="1.4849"
color-interpolation-filters="sRGB"
y="-0.047579002"
x="-0.24243">
<feGaussianBlur
stdDeviation="0.24444548"
id="feGaussianBlur86" />
</filter>
<linearGradient
id="ax"
y2="13.789"
xlink:href="#ab"
gradientUnits="userSpaceOnUse"
x2="35.021"
gradientTransform="translate(-19.533,1.7437)"
y1="13.789"
x1="32.127998" />
<filter
id="ae"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="0.8362597"
id="feGaussianBlur90" />
</filter>
<linearGradient
id="aj"
y2="18.038"
gradientUnits="userSpaceOnUse"
x2="21.941999"
gradientTransform="matrix(0.6374,0,0,0.58679,-37.794,3.1212)"
y1="21.551001"
x1="21.941999">
<stop
stop-color="#fff"
offset="0"
id="stop93" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop95" />
</linearGradient>
<filter
id="af"
height="1.1647"
width="1.9881999"
color-interpolation-filters="sRGB"
y="-0.082353003"
x="-0.49412">
<feGaussianBlur
stdDeviation="0.69878785"
id="feGaussianBlur98" />
</filter>
<radialGradient
id="az"
gradientUnits="userSpaceOnUse"
cy="6.2807002"
cx="18.031"
r="3.1819999">
<stop
stop-color="#fff"
offset="0"
id="stop101" />
<stop
stop-color="#fff"
stop-opacity="0"
offset="1"
id="stop103" />
</radialGradient>
<filter
id="ai"
height="1.8271"
width="1.1702"
color-interpolation-filters="sRGB"
y="-0.41356999"
x="-0.085115999">
<feGaussianBlur
stdDeviation="0.42546784"
id="feGaussianBlur106" />
</filter>
</defs>
<path
style="fill:none;stroke:#6e8c6e;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 25,12 0,-4 c 0,0 0.5,-5 -5,-5 -5.5,0 -5,5 -5,5 l 0,4"
id="path3944"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cczcc" />
<path
style="fill:none;stroke:#906e6e;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 15,12 V 8 C 15,8 15.5,3 10,3 4.5,3 5,8 5,8 v 4"
id="path3944-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cczcc" />
<rect
style="fill:#292b2b;fill-opacity:1;stroke:none"
id="rect3169"
width="17.999996"
height="13"
x="1"
y="12"
rx="1.5"
ry="1.5" />
<path
sodipodi:type="arc"
style="fill:#ececec;fill-opacity:1;stroke:none"
id="path3971"
sodipodi:cx="13"
sodipodi:cy="16"
sodipodi:rx="2"
sodipodi:ry="2"
d="m 15,16 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z"
transform="translate(-3,1)" />
<path
style="fill:none;stroke:#ececec;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 10,17 0,4"
id="path3973"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

+7 -7
View File
@@ -12,7 +12,7 @@
width="26"
version="1.0"
id="svg2"
inkscape:version="0.48.4 r9939"
inkscape:version="0.92.0 r15299"
sodipodi:docname="locked.svg">
<metadata
id="metadata188">
@@ -34,15 +34,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-width="1920"
inkscape:window-height="1033"
id="namedview186"
showgrid="true"
inkscape:zoom="30.731949"
inkscape:cx="11.296694"
inkscape:cx="5.4721366"
inkscape:cy="9.6647768"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
@@ -454,7 +454,7 @@
rx="1.5"
ry="1.5" />
<path
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#826465;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 18,12 18,8 C 18,8 18.5,3 13,3 7.5,3 8,8 8,8 l 0,4"
id="path3944"
inkscape:connector-curvature="0"

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

+102
View File
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="26"
width="26"
version="1.1"
id="svg2"
inkscape:version="0.92.0 r15299"
sodipodi:docname="options_generic.svg">
<metadata
id="metadata223">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1033"
id="namedview221"
showgrid="true"
inkscape:zoom="21.730769"
inkscape:cx="4.6477875"
inkscape:cy="8.352213"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid3013"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="0.5"
spacingy="0.5"
originx="0"
originy="0" />
</sodipodi:namedview>
<defs
id="defs4">
<linearGradient
id="linearGradient3846">
<stop
style="stop-color:#d2d2d2;stop-opacity:1"
offset="0"
id="stop3848" />
<stop
id="stop3793"
offset="0.61904764"
style="stop-color:#c3c3c3;stop-opacity:1" />
<stop
style="stop-color:#d2d2d2;stop-opacity:1"
offset="1"
id="stop3850" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3846"
id="radialGradient4223"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.875,0,0,0.875,12.585545,1097.5149)"
cx="13"
cy="13"
fx="13"
fy="13"
r="12" />
</defs>
<g
id="g4219"
transform="translate(-10.960545,-1095.8894)"
style="stroke:#000000">
<path
inkscape:connector-curvature="0"
style="fill:url(#radialGradient4223);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 23.960545,1097.3899 c -0.313616,0 -0.630223,0.038 -0.9375,0.062 l -0.75,3.5937 c -0.95747,0.2036 -1.827822,0.6124 -2.625,1.125 l -3.125,-2.0312 c -0.471052,0.401 -0.911514,0.8414 -1.3125,1.3125 l 2.03125,3.125 c -0.512591,0.7972 -0.921386,1.6675 -1.125,2.625 l -3.59375,0.75 c -0.02463,0.3073 -0.0625,0.6239 -0.0625,0.9375 0,0.3136 0.03787,0.6302 0.0625,0.9375 l 3.59375,0.75 c 0.203614,0.9574 0.612409,1.8278 1.125,2.625 l -2.03125,3.125 c 0.400986,0.471 0.841448,0.9115 1.3125,1.3125 l 3.125,-2.0313 c 0.797178,0.5126 1.66753,0.9214 2.625,1.125 l 0.75,3.5938 c 0.307277,0.025 0.623884,0.062 0.9375,0.062 0.313616,0 0.630223,-0.038 0.9375,-0.062 l 0.75,-3.5938 c 0.95747,-0.2036 1.827822,-0.6124 2.625,-1.125 l 3.125,2.0313 c 0.471052,-0.401 0.911514,-0.8415 1.3125,-1.3125 l -2.03125,-3.125 c 0.51259,-0.7972 0.921386,-1.6676 1.125,-2.625 l 3.59375,-0.75 c 0.02463,-0.3073 0.0625,-0.6239 0.0625,-0.9375 0,-0.3136 -0.03787,-0.6302 -0.0625,-0.9375 l -3.59375,-0.75 c -0.203614,-0.9575 -0.61241,-1.8278 -1.125,-2.625 l 2.03125,-3.125 c -0.400986,-0.4711 -0.841448,-0.9115 -1.3125,-1.3125 l -3.125,2.0312 c -0.797178,-0.5126 -1.66753,-0.9214 -2.625,-1.125 l -0.75,-3.5937 c -0.307277,-0.025 -0.623884,-0.062 -0.9375,-0.062 z m 0,8 c 1.932997,0 3.5,1.567 3.5,3.5 0,1.933 -1.567003,3.5 -3.5,3.5 -1.932997,0 -3.5,-1.567 -3.5,-3.5 0,-1.933 1.567003,-3.5 3.5,-3.5 z"
id="path4215" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

+61 -19
View File
@@ -11,8 +11,11 @@
width="26"
version="1.1"
id="svg2"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="polar_coord.svg">
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="polar_coord.svg"
inkscape:export-filename="/Users/jeff/kicad_dev/kicad/bitmaps_png/png_26/polar_coord.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<metadata
id="metadata39">
<rdf:RDF>
@@ -21,7 +24,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -34,15 +37,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="849"
inkscape:window-width="1440"
inkscape:window-height="800"
id="namedview37"
showgrid="true"
inkscape:zoom="26.666667"
inkscape:cx="11.220709"
inkscape:cy="12.00265"
showgrid="false"
inkscape:zoom="23.434245"
inkscape:cx="13.246822"
inkscape:cy="12.489107"
inkscape:window-x="0"
inkscape:window-y="29"
inkscape:window-y="1"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-grids="false"
@@ -191,11 +194,11 @@
id="path19"
d="M 3.4889441,22.442933 21.656486,4.1948239" />
<g
transform="matrix(1.0578651,0,0,0.94530011,-1.65,-0.3)"
style="font-size:10.34677601px;font-weight:bold;line-height:125%;fill:#493d3d;fill-opacity:1;font-family:Century Schoolbook"
transform="matrix(1.0578651,0,0,0.94530011,-1.8206903,0.63879705)"
style="font-weight:bold;font-size:10.34677601px;line-height:125%;font-family:'Century Schoolbook';fill:#493d3d;fill-opacity:1"
id="text21">
<path
d="M 14.42271,4.703743 C 14.22468,4.611056 14.026656,4.5436439 13.828638,4.5015058 13.634822,4.4551648 13.438905,4.4319918 13.240887,4.4319868 12.65945,4.4319922 12.210737,4.6194827 11.894746,4.9944589 11.58296,5.3652315 11.08788,5.9380908 11.072584,6.6330662 l -0.0709,3.2214041 -1.8371429,0 0,-7.0783001 1.9434889,-0.03967 0,1.1628636 c 0.290712,-0.4634538 0.9426,-0.7608454 1.317585,-0.9715158 0.37919,-0.2148699 0.832116,-0.3223082 1.358781,-0.3223155 0.07583,7.3e-6 0.157992,0.00422 0.246476,0.01264 0.08847,0.00422 0.216978,0.01686 0.385515,0.037919 l 0.0063,2.0476511"
d="M 14.42271,4.703743 C 14.22468,4.611056 14.026656,4.5436439 13.828638,4.5015058 13.634822,4.4551648 13.438905,4.4319918 13.240887,4.4319868 12.65945,4.4319922 12.210737,4.6194827 11.894746,4.9944589 11.58296,5.3652315 11.08788,5.9380908 11.072584,6.6330662 l -0.0709,3.2214041 H 9.1645411 V 2.7761702 l 1.9434889,-0.03967 v 1.1628636 c 0.290712,-0.4634538 0.9426,-0.7608454 1.317585,-0.9715158 0.37919,-0.2148699 0.832116,-0.3223082 1.358781,-0.3223155 0.07583,7.3e-6 0.157992,0.00422 0.246476,0.01264 0.08847,0.00422 0.216978,0.01686 0.385515,0.037919 l 0.0063,2.0476511"
style="font-size:12.94317722px;fill:#493d3d"
id="path4866"
inkscape:connector-curvature="0"
@@ -210,12 +213,51 @@
transform="scale(1.320342,0.75737952)"
style="font-size:8.10237503px;line-height:125%;fill:#493d3d;fill-opacity:1;font-family:Bitstream Vera Sans"
id="text29">
<path
d="m 17.091728,15.617771 c -0.249954,7e-6 -0.374928,0.327796 -0.374924,0.983369 l 0,4.652352 c 0.365305,10e-7 0.730614,-0.235103 1.095929,-0.705313 0.32685,-0.420472 0.490278,-1.134827 0.490284,-2.143066 -6e-6,-0.940412 -0.165356,-1.66381 -0.496052,-2.170193 -0.269181,-0.411426 -0.507593,-0.617142 -0.715237,-0.617149 m 0,-1.064751 c 0.538345,8e-6 1.0517,0.298409 1.540068,0.895205 0.526807,0.637501 1.045831,1.623128 1.045838,2.956888 -7e-6,1.225257 -0.519031,2.201844 -1.045838,2.929761 -0.496058,0.687227 -1.134388,1.030842 -1.914992,1.030842 l 0,2.726306 -1.055552,0 0,-2.719524 c -0.76523,0 -1.405482,-0.345875 -1.920758,-1.037624 -0.522971,-0.705311 -0.898062,-1.679637 -0.898061,-2.922978 -10e-7,-1.29307 0.37509,-2.269656 0.898061,-2.929762 0.392225,-0.492808 0.907503,-0.802512 1.545835,-0.929114 l 0,1.105442 c -0.253796,0.10399 -0.492208,0.332317 -0.715237,0.684968 -0.330703,0.519948 -0.524455,1.258949 -0.524454,2.117979 -10e-7,0.913291 0.193751,1.580394 0.524454,2.100334 0.296091,0.465688 0.659476,0.698531 1.09016,0.69853 l 0,-4.659133 c -3e-6,-1.365407 0.476821,-2.048112 1.430476,-2.04812"
style="font-size:11.60540199px;fill:#493d3d"
id="path4869"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccsccccsccsc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="30.1875"
y="12.575"
id="text38"
transform="scale(0.75737953,1.320342)"><tspan
sodipodi:role="line"
id="tspan36"
x="30.1875"
y="47.965626" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="29.700125"
y="10.680539"
id="text42"
transform="scale(0.75737953,1.320342)"><tspan
sodipodi:role="line"
id="tspan40"
x="29.700125"
y="46.071163" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:37.62418747px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#493d3d;fill-opacity:1;stroke:#493d3d;stroke-width:0.47030237;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="17.408667"
y="18.426802"
id="text46"
transform="scale(0.75047264,1.3324936)"><tspan
sodipodi:role="line"
id="tspan44"
x="17.408667"
y="18.426802"
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:11.28719997px;font-family:Palatino;-inkscape-font-specification:'Palatino, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#493d3d;fill-opacity:1;stroke:#493d3d;stroke-width:0.47030237;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">θ</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="30.872232"
y="16.521296"
id="text50"
transform="scale(0.75737953,1.320342)"><tspan
sodipodi:role="line"
id="tspan48"
x="30.872232"
y="51.911919" /></text>
</g>
<path
style="fill:#ff0000;stroke:#ff0000;stroke-width:0.10395694"

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" version="1.1" width="16px" height="16px">
<g id="surface1">
<path style=" fill-rule:evenodd;" d="M 15.324219 4.445313 C 13.496094 3.640625 11.433594 3.515625 9.515625 4.121094 C 5.871094 5.269531 3.507813 8.726563 3.753906 12.53125 L 1.265625 12.695313 C 0.945313 7.738281 4.027344 3.238281 8.765625 1.742188 C 11.539063 0.867188 14.546875 1.171875 17.097656 2.550781 L 19.484375 0 L 20.121094 7.074219 L 12.628906 7.324219 Z M 15.230469 22.257813 C 14.179688 22.585938 13.089844 22.753906 12.007813 22.753906 C 10.242188 22.753906 8.488281 22.296875 6.90625 21.445313 L 4.515625 24 L 3.882813 16.925781 L 11.371094 16.675781 L 8.679688 19.554688 C 10.5 20.355469 12.5625 20.484375 14.480469 19.878906 C 18.125 18.726563 20.492188 15.265625 20.246094 11.46875 L 22.730469 11.304688 C 23.058594 16.253906 19.972656 20.757813 15.230469 22.257813 Z "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1005 B

+10 -32
View File
@@ -12,8 +12,8 @@
width="26"
version="1.0"
id="svg2"
inkscape:version="0.48.4 r9939"
sodipodi:docname="locked.svg">
inkscape:version="0.92.0 r15299"
sodipodi:docname="unlocked.svg">
<metadata
id="metadata188">
<rdf:RDF>
@@ -22,7 +22,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -35,15 +35,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-width="1920"
inkscape:window-height="1033"
id="namedview186"
showgrid="true"
inkscape:zoom="15.365974"
inkscape:cx="16.18766"
inkscape:cx="-7.1105702"
inkscape:cy="11.395488"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
@@ -56,18 +56,6 @@
</sodipodi:namedview>
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient3975">
<stop
style="stop-color:#333333;stop-opacity:1;"
offset="0"
id="stop3977" />
<stop
style="stop-color:#585858;stop-opacity:1"
offset="1"
id="stop3979" />
</linearGradient>
<linearGradient
id="an"
y2="13.849"
@@ -426,25 +414,15 @@
stdDeviation="0.42546784"
id="feGaussianBlur106" />
</filter>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3975"
id="linearGradient3981"
x1="10"
y1="21"
x2="5"
y2="13"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-3,0)" />
</defs>
<path
style="fill:none;stroke:#808080;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#607a63;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 25,12 0,-4 c 0,0 0.5,-5 -5,-5 -5.5,0 -5,5 -5,5 l 0,4"
id="path3944"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cczcc" />
<rect
style="fill:url(#linearGradient3981);fill-opacity:1;stroke:none"
style="fill:#333333;fill-opacity:1;stroke:none"
id="rect3169"
width="17.999996"
height="13"

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+42 -17
View File
@@ -14,7 +14,7 @@
height="26"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.4 r9939"
inkscape:version="0.92.1 r15371"
version="1.0"
sodipodi:docname="zoom_area.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
@@ -55,30 +55,32 @@
borderopacity="1"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="21.730769"
inkscape:cx="10.126443"
inkscape:cy="16.164211"
inkscape:zoom="22.627417"
inkscape:cx="6.990496"
inkscape:cy="13.132928"
inkscape:document-units="px"
inkscape:current-layer="layer3"
inkscape:current-layer="g8823"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-width="1920"
inkscape:window-height="1051"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-to-guides="true"
inkscape:snap-grids="true">
<sodipodi:guide
orientation="0,1"
position="26.278146,128"
id="guide2385" />
id="guide2385"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="128,54.082119"
id="guide2387" />
id="guide2387"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid3672"
@@ -89,7 +91,8 @@
<sodipodi:guide
orientation="0.70710678,0.70710678"
position="26,0"
id="guide3780" />
id="guide3780"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -99,7 +102,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -121,16 +124,16 @@
ry="0" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#333333;stroke-width:1.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
id="path3766"
sodipodi:cx="10"
sodipodi:cy="10"
sodipodi:rx="8"
sodipodi:ry="8"
d="M 18,10 A 8,8 0 1 1 2,10 8,8 0 1 1 18,10 z"
d="m 18,10 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z"
transform="translate(3,-1)" />
<path
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 19,19 3,3"
id="path3782"
inkscape:connector-curvature="0"
@@ -141,7 +144,29 @@
inkscape:connector-curvature="0"
id="path3784"
d="M 26,26 22,22"
style="fill:none;stroke:#333333;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:4.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
</g>
<g
transform="translate(0,4)"
style="display:inline"
inkscape:label="Display"
id="g8823"
inkscape:groupmode="layer">
<rect
ry="0"
rx="0"
transform="translate(0,-4)"
y="0.5"
x="11.5"
height="14"
width="14"
id="rect8815"
style="fill:#cccccc;fill-opacity:1;stroke:#333333;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 2;stroke-dashoffset:3" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 13 4 C 8.0412819 4 4 8.0412819 4 13 C 4 17.958718 8.0412819 22 13 22 C 15.04799 22 16.934285 21.303147 18.449219 20.144531 L 19.830078 21.525391 A 2.20022 2.20022 0 0 0 20.445312 23.554688 L 24.445312 27.554688 A 2.20022 2.20022 0 1 0 27.554688 24.445312 L 23.554688 20.445312 A 2.20022 2.20022 0 0 0 21.976562 19.777344 A 2.20022 2.20022 0 0 0 21.521484 19.826172 L 20.144531 18.449219 C 21.303147 16.934285 22 15.04799 22 13 C 22 8.0412819 17.958718 4 13 4 z M 13 6 C 16.877838 6 20 9.1221621 20 13 C 20 16.877838 16.877838 20 13 20 C 9.1221621 20 6 16.877838 6 13 C 6 9.1221621 9.1221621 6 13 6 z "
transform="translate(0,-4)"
id="path8817" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

+45 -23
View File
@@ -14,7 +14,7 @@
height="26"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.4 r9939"
inkscape:version="0.92.1 r15371"
version="1.0"
sodipodi:docname="zoom_fit_in_page.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
@@ -56,29 +56,31 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="21.730769"
inkscape:cx="13"
inkscape:cy="13"
inkscape:cx="5.7752212"
inkscape:cy="12.700885"
inkscape:document-units="px"
inkscape:current-layer="layer3"
inkscape:current-layer="g8133"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-width="1920"
inkscape:window-height="1051"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-to-guides="true"
inkscape:snap-grids="true">
<sodipodi:guide
orientation="0,1"
position="26.278146,128"
id="guide2385" />
id="guide2385"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="128,54.082119"
id="guide2387" />
id="guide2387"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid3672"
@@ -89,11 +91,13 @@
<sodipodi:guide
orientation="0.70710678,0.70710678"
position="26,0"
id="guide3780" />
id="guide3780"
inkscape:locked="false" />
<sodipodi:guide
orientation="-0.70710678,0.70710678"
position="26,26"
id="guide3824" />
id="guide3824"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -103,7 +107,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -114,25 +118,24 @@
style="display:inline"
transform="translate(0,4)">
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:#666666;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:3"
style="fill:#f2f2f2;fill-opacity:1;stroke:#666666;stroke-width:0.94;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:3;stroke-opacity:1"
id="rect3869"
width="9"
height="9"
x="8.5"
y="8.5"
transform="translate(0,-4)" />
width="8.46"
height="8.46"
x="8.7700005"
y="4.77" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#333333;stroke-width:1.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
id="path3766"
sodipodi:cx="10"
sodipodi:cy="10"
sodipodi:rx="8"
sodipodi:ry="8"
d="M 18,10 A 8,8 0 1 1 2,10 8,8 0 1 1 18,10 z"
d="m 18,10 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z"
transform="translate(3,-1)" />
<path
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 19,19 3,3"
id="path3782"
inkscape:connector-curvature="0"
@@ -143,7 +146,26 @@
inkscape:connector-curvature="0"
id="path3784"
d="M 26,26 22,22"
style="fill:none;stroke:#333333;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:4.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
</g>
<g
transform="translate(0,4)"
style="display:inline"
inkscape:label="Display"
id="g8133"
inkscape:groupmode="layer">
<rect
y="4.77"
x="8.7700005"
height="8.46"
width="8.46"
id="rect8125"
style="fill:#f2f2f2;fill-opacity:1;stroke:#666666;stroke-width:0.94;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:3;stroke-opacity:1" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 13 4 C 8.0412819 4 4 8.0412819 4 13 C 4 17.958718 8.0412819 22 13 22 C 15.04799 22 16.934285 21.303147 18.449219 20.144531 L 19.830078 21.525391 A 2.20022 2.20022 0 0 0 20.445312 23.554688 L 24.445312 27.554688 A 2.20022 2.20022 0 1 0 27.554688 24.445312 L 23.554688 20.445312 A 2.20022 2.20022 0 0 0 21.976562 19.777344 A 2.20022 2.20022 0 0 0 21.521484 19.826172 L 20.144531 18.449219 C 21.303147 16.934285 22 15.04799 22 13 C 22 8.0412819 17.958718 4 13 4 z M 13 6 C 16.877838 6 20 9.1221621 20 13 C 20 16.877838 16.877838 20 13 20 C 9.1221621 20 6 16.877838 6 13 C 6 9.1221621 9.1221621 6 13 6 z "
transform="translate(0,-4)"
id="path8127" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

+41 -20
View File
@@ -14,9 +14,9 @@
height="26"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.4 r9939"
inkscape:version="0.92.1 r15371"
version="1.0"
sodipodi:docname="zoom_fit_in_page.svg"
sodipodi:docname="zoom_in.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
@@ -56,29 +56,31 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="21.730769"
inkscape:cx="13"
inkscape:cx="4.9238937"
inkscape:cy="13"
inkscape:document-units="px"
inkscape:current-layer="layer3"
inkscape:current-layer="g7454"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-width="1920"
inkscape:window-height="1051"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-to-guides="true"
inkscape:snap-grids="true">
<sodipodi:guide
orientation="0,1"
position="26.278146,128"
id="guide2385" />
id="guide2385"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="128,54.082119"
id="guide2387" />
id="guide2387"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid3672"
@@ -88,12 +90,14 @@
snapvisiblegridlinesonly="true" />
<sodipodi:guide
orientation="0.70710678,0.70710678"
position="26,0"
id="guide3780" />
position="20,6"
id="guide3780"
inkscape:locked="false" />
<sodipodi:guide
orientation="-0.70710678,0.70710678"
position="26,26"
id="guide3824" />
id="guide3824"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -103,7 +107,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -115,16 +119,16 @@
transform="translate(0,4)">
<path
sodipodi:type="arc"
style="fill:none;stroke:#333333;stroke-width:1.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
id="path3766"
sodipodi:cx="10"
sodipodi:cy="10"
sodipodi:rx="8"
sodipodi:ry="8"
d="M 18,10 A 8,8 0 1 1 2,10 8,8 0 1 1 18,10 z"
d="m 18,10 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z"
transform="translate(3,-1)" />
<path
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 19,19 3,3"
id="path3782"
inkscape:connector-curvature="0"
@@ -135,10 +139,10 @@
inkscape:connector-curvature="0"
id="path3784"
d="M 26,26 22,22"
style="fill:none;stroke:#333333;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:4.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 8,13 10,0"
id="path3958"
inkscape:connector-curvature="0"
@@ -147,6 +151,23 @@
inkscape:connector-curvature="0"
id="path3960"
d="m 13,4 0,10"
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#333333;stroke-width:2.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<g
transform="translate(0,4)"
style="display:inline"
inkscape:label="Display"
id="g7454"
inkscape:groupmode="layer">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 13 4 C 8.0412819 4 4 8.0412819 4 13 C 4 17.958718 8.0412819 22 13 22 C 15.04799 22 16.934285 21.303147 18.449219 20.144531 L 19.830078 21.525391 A 2.20022 2.20022 0 0 0 20.445312 23.554688 L 24.445312 27.554688 A 2.20022 2.20022 0 1 0 27.554688 24.445312 L 23.554688 20.445312 A 2.20022 2.20022 0 0 0 21.976562 19.777344 A 2.20022 2.20022 0 0 0 21.521484 19.826172 L 20.144531 18.449219 C 21.303147 16.934285 22 15.04799 22 13 C 22 8.0412819 17.958718 4 13 4 z M 13 6 C 16.877838 6 20 9.1221621 20 13 C 20 16.877838 16.877838 20 13 20 C 9.1221621 20 6 16.877838 6 13 C 6 9.1221621 9.1221621 6 13 6 z "
transform="translate(0,-4)"
id="path7444" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 11.800781 8 L 11.800781 11.800781 L 8 11.800781 L 8 14.199219 L 11.800781 14.199219 L 11.800781 18 L 14.199219 18 L 14.199219 14.199219 L 18 14.199219 L 18 11.800781 L 14.199219 11.800781 L 14.199219 8 L 11.800781 8 z "
transform="translate(0,-4)"
id="path7450" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

+40 -19
View File
@@ -14,9 +14,9 @@
height="26"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.4 r9939"
inkscape:version="0.92.1 r15371"
version="1.0"
sodipodi:docname="zoom_in.svg"
sodipodi:docname="zoom_out.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
<defs
id="defs4">
@@ -56,29 +56,31 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="21.730769"
inkscape:cx="13"
inkscape:cy="13"
inkscape:cx="4.8548672"
inkscape:cy="13.253097"
inkscape:document-units="px"
inkscape:current-layer="layer3"
inkscape:current-layer="g6812"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-width="1920"
inkscape:window-height="1051"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-to-guides="true"
inkscape:snap-grids="true">
<sodipodi:guide
orientation="0,1"
position="26.278146,128"
id="guide2385" />
id="guide2385"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="128,54.082119"
id="guide2387" />
id="guide2387"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid3672"
@@ -89,11 +91,13 @@
<sodipodi:guide
orientation="0.70710678,0.70710678"
position="26,0"
id="guide3780" />
id="guide3780"
inkscape:locked="false" />
<sodipodi:guide
orientation="-0.70710678,0.70710678"
position="26,26"
id="guide3824" />
id="guide3824"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -103,7 +107,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -115,16 +119,16 @@
transform="translate(0,4)">
<path
sodipodi:type="arc"
style="fill:none;stroke:#333333;stroke-width:1.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
id="path3766"
sodipodi:cx="10"
sodipodi:cy="10"
sodipodi:rx="8"
sodipodi:ry="8"
d="M 18,10 A 8,8 0 1 1 2,10 8,8 0 1 1 18,10 z"
d="m 18,10 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z"
transform="translate(3,-1)" />
<path
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 19,19 3,3"
id="path3782"
inkscape:connector-curvature="0"
@@ -135,13 +139,30 @@
inkscape:connector-curvature="0"
id="path3784"
d="M 26,26 22,22"
style="fill:none;stroke:#333333;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:4.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:none;stroke:#333333;stroke-width:2.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 8,13 10,0"
id="path3958"
inkscape:connector-curvature="0"
transform="translate(0,-4)" />
</g>
<g
transform="translate(0,4)"
style="display:inline"
inkscape:label="Display"
id="g6812"
inkscape:groupmode="layer">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#fffff6;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 13 4 C 8.0412819 4 4 8.0412819 4 13 C 4 17.958718 8.0412819 22 13 22 C 15.083949 22 17.001289 21.279643 18.529297 20.083984 L 19.855469 21.410156 A 2.20022 2.20022 0 0 0 20.445312 23.554688 L 24.445312 27.554688 A 2.20022 2.20022 0 1 0 27.554688 24.445312 L 23.554688 20.445312 A 2.20022 2.20022 0 0 0 21.976562 19.777344 A 2.20022 2.20022 0 0 0 21.410156 19.855469 L 20.083984 18.529297 C 21.279643 17.001289 22 15.083949 22 13 C 22 8.0412819 17.958718 4 13 4 z M 13 6 C 16.877838 6 20 9.1221621 20 13 C 20 16.877838 16.877838 20 13 20 C 9.1221621 20 6 16.877838 6 13 C 6 9.1221621 9.1221621 6 13 6 z "
transform="translate(0,-4)"
id="path6804" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 8,7.849609 v 2.300782 H 18 V 7.849609 Z"
id="path6810"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

+50 -32
View File
@@ -9,11 +9,11 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="26"
height="26"
width="27.733334"
height="27.733334"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.4 r9939"
inkscape:version="0.92.1 r15371"
version="1.0"
sodipodi:docname="zoom_redraw.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape">
@@ -21,10 +21,10 @@
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 13 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="26 : 13 : 1"
inkscape:persp3d-origin="13 : 8.6666667 : 1"
inkscape:vp_x="0 : 13.866667 : 1"
inkscape:vp_y="0 : 1066.6667 : 0"
inkscape:vp_z="27.733333 : 13.866667 : 1"
inkscape:persp3d-origin="13.866667 : 9.2444445 : 1"
id="perspective13" />
</defs>
<sodipodi:namedview
@@ -35,40 +35,47 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="21.730769"
inkscape:cx="4.0955751"
inkscape:cy="13"
inkscape:cx="-3.6353984"
inkscape:cy="13.046018"
inkscape:document-units="px"
inkscape:current-layer="layer3"
inkscape:current-layer="g6799"
showgrid="true"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1366"
inkscape:window-height="744"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-width="1920"
inkscape:window-height="1051"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-to-guides="false"
inkscape:snap-grids="true">
<sodipodi:guide
orientation="0,1"
position="26.278146,128"
id="guide2385" />
position="28.030022,136.53333"
id="guide2385"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="128,54.082119"
id="guide2387" />
position="136.53333,57.687594"
id="guide2387"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="78.156291,0"
id="guide2389" />
position="83.36671,0"
id="guide2389"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid3672"
visible="true"
enabled="true"
empspacing="2"
snapvisiblegridlinesonly="true" />
snapvisiblegridlinesonly="true"
originx="0"
originy="0"
spacingx="1.0666667"
spacingy="1.0666667" />
</sodipodi:namedview>
<metadata
id="metadata7">
@@ -87,25 +94,36 @@
id="layer3"
inkscape:label="Cross"
style="display:inline"
transform="translate(0,4)">
transform="translate(0,4.2666667)">
<path
sodipodi:type="arc"
style="fill:none;stroke:#333333;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
style="fill:none;stroke:#333333;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path2989"
sodipodi:cx="13"
sodipodi:cy="13"
sodipodi:rx="8"
sodipodi:ry="8"
d="M 13.967775,20.941247 C 9.5819454,21.475735 5.5932401,18.353605 5.0587526,13.967775 4.524265,9.5819454 7.6463948,5.5932401 12.032225,5.0587526 c 4.38583,-0.5344876 8.374535,2.5876422 8.909022,6.9734724 0.09744,0.799532 0.07357,1.609195 -0.07079,2.401601"
transform="translate(4.0563627e-4,-4)"
sodipodi:cx="13.8671"
sodipodi:cy="9.6000004"
sodipodi:rx="8.5333338"
sodipodi:ry="8.5333338"
d="M 14.899393,18.070665 A 8.5333338,8.5333338 0 0 1 6.1414719,13.223874 8.5333338,8.5333338 0 0 1 8.0135153,3.3908672 8.5333338,8.5333338 0 0 1 17.939713,2.1012266 8.5333338,8.5333338 0 0 1 22.262258,11.129414"
sodipodi:start="1.4495274"
sodipodi:end="6.4633872"
sodipodi:end="0.18020189"
sodipodi:open="true" />
<path
style="fill:#333333;stroke:none"
d="m 20.5,16 -3.2,-8 7,0 z"
style="fill:#333333;stroke:none;stroke-width:1.06666672"
d="M 21.866667,17.066667 18.453333,8.5333336 H 25.92 Z"
id="path3768"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
</g>
<g
transform="translate(0,4.2666667)"
style="display:inline"
inkscape:label="Display"
id="g6799"
inkscape:groupmode="layer">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 14.107422 4.3378906 C 13.61583 4.325751 13.125186 4.3528063 12.638672 4.4160156 C 10.692615 4.668853 8.8252467 5.5202474 7.328125 6.9316406 C 4.3338816 9.7544269 3.4887799 14.190469 5.2363281 17.916016 C 6.9838763 21.641561 10.934705 23.827883 15.019531 23.330078 A 1.0001 1.0001 0 1 0 14.779297 21.345703 C 11.544494 21.739918 8.4307708 20.016692 7.046875 17.066406 C 5.6629792 14.11612 6.3280561 10.622103 8.6992188 8.3867188 C 11.070381 6.1513343 14.599236 5.6927851 17.462891 7.2480469 C 19.599021 8.4081877 20.994269 10.488339 21.324219 12.800781 L 18.453125 12.800781 L 21.867188 21.333984 L 25.919922 12.800781 L 23.333984 12.800781 C 22.989917 9.7632943 21.199095 7.0017357 18.416016 5.4902344 C 17.059959 4.7537551 15.582197 4.3743096 14.107422 4.3378906 z "
transform="translate(0,-4.2666667)"
id="path6795" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

+7 -2
View File
@@ -17,6 +17,8 @@ include_directories(
../pcbnew
../polygon
${INC_AFTER}
${OCE_INCLUDE_DIRS}
${OCC_INCLUDE_DIR}
)
@@ -155,14 +157,15 @@ set( COMMON_DLG_SRCS
dialogs/dialog_env_var_config.cpp
dialogs/dialog_env_var_config_base.cpp
dialogs/dialog_exit_base.cpp
dialogs/dialog_get_component.cpp
dialogs/dialog_get_component_base.cpp
dialogs/dialog_file_dir_picker.cpp
dialogs/dialog_hotkeys_editor.cpp
dialogs/dialog_hotkeys_editor_base.cpp
dialogs/dialog_image_editor.cpp
dialogs/dialog_image_editor_base.cpp
dialogs/dialog_list_selector_base.cpp
dialogs/dialog_page_settings_base.cpp
dialogs/dialog_text_entry_base.cpp
dialogs/dialog_text_entry.cpp
dialogs/wx_html_report_panel.cpp
dialogs/wx_html_report_panel_base.cpp
)
@@ -296,6 +299,7 @@ set( COMMON_SRCS
settings.cpp
status_popup.cpp
systemdirsappend.cpp
trace_helpers.cpp
trigo.cpp
undo_redo_container.cpp
utf8.cpp
@@ -350,6 +354,7 @@ set( COMMON_SRCS
tool/zoom_tool.cpp
geometry/convex_hull.cpp
geometry/geometry_utils.cpp
geometry/seg.cpp
geometry/shape.cpp
geometry/shape_collisions.cpp
+4 -4
View File
@@ -245,8 +245,8 @@ int BASE_SCREEN::SetGrid( const wxRealPoint& size )
m_Grid = nearest_grid;
wxLogWarning( wxT( "Grid size( %f, %f ) not in grid list, falling back " ) \
wxT( "to grid size( %f, %f )." ),
wxLogWarning( _( "Grid size( %f, %f ) not in grid list, falling back "
"to grid size( %f, %f )." ),
size.x, size.y, m_Grid.m_Size.x, m_Grid.m_Size.y );
return gridIdx;
@@ -268,8 +268,8 @@ int BASE_SCREEN::SetGrid( int aCommandId )
m_Grid = m_grids[0];
wxLogWarning( wxT( "Grid ID %d not in grid list, falling back to " ) \
wxT( "grid size( %g, %g )." ), aCommandId,
wxLogWarning( _( "Grid ID %d not in grid list, falling back to "
"grid size( %g, %g )." ), aCommandId,
m_Grid.m_Size.x, m_Grid.m_Size.y );
return m_grids[0].m_CmdId - ID_POPUP_GRID_LEVEL_1000;
+2 -3
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -36,6 +36,7 @@
#include <class_drawpanel.h>
#include <base_screen.h>
#include <bitmaps.h>
#include <trace_helpers.h>
#include "../eeschema/dialogs/dialog_schematic_find.h"
@@ -55,8 +56,6 @@ static const unsigned char dummy_png[] = {
static const BITMAP_OPAQUE dummy_xpm[1] = {{ dummy_png, sizeof( dummy_png ), "dummy_xpm" }};
const wxString traceFindReplace = "KICAD_TRACE_FIND_REPLACE";
enum textbox {
ID_TEXTBOX_LIST = 8010
+6 -5
View File
@@ -156,11 +156,12 @@ wxString LengthDoubleToString( double aValue, bool aConvertToMils )
}
text.Printf( format, value );
text += " ";
if( g_UserUnit == INCHES )
text += ( aConvertToMils ) ? _( " mils" ) : _( " in" );
text += ( aConvertToMils ) ? _( "mils" ) : _( "in" );
else
text += _( " mm" );
text += _( "mm" );
return text;
}
@@ -243,15 +244,15 @@ wxString StringFromValue( EDA_UNITS_T aUnit, int aValue, bool aAddUnitSymbol )
switch( aUnit )
{
case INCHES:
stringValue += _( " \"" );
stringValue += " " + _( "\"" );
break;
case MILLIMETRES:
stringValue += _( " mm" );
stringValue += " " + _( "mm" );
break;
case DEGREES:
stringValue += _( " deg" );
stringValue += " " + _( "deg" );
break;
case UNSCALED_UNITS:
+2 -2
View File
@@ -97,7 +97,7 @@ void BASIC_GAL::DrawPolyline( const std::deque<VECTOR2D>& aPointList )
for( unsigned ii = 1; ii < polyline_corners.size(); ii++ )
{
m_callback( polyline_corners[ii-1].x, polyline_corners[ii-1].y,
polyline_corners[ii].x, polyline_corners[ii].y );
polyline_corners[ii].x, polyline_corners[ii].y, m_callbackData );
}
}
}
@@ -129,6 +129,6 @@ void BASIC_GAL::DrawLine( const VECTOR2D& aStartPoint, const VECTOR2D& aEndPoint
else if( m_callback )
{
m_callback( startVector.x, startVector.y,
endVector.x, endVector.y );
endVector.x, endVector.y, m_callbackData );
}
}
+5 -3
View File
@@ -68,7 +68,8 @@ void BEZIER_POLY::GetPoly( std::vector<wxPoint>& aOutput )
}
void BEZIER_POLY::recursiveBezier( int x1, int y1, int x2, int y2, int x3, int y3, unsigned int level )
void BEZIER_POLY::recursiveBezier( int x1, int y1, int x2, int y2,
int x3, int y3, unsigned int level )
{
if( level > recursion_limit )
return;
@@ -154,11 +155,12 @@ void BEZIER_POLY::recursiveBezier( int x1, int y1, int x2, int y2, int x3, int y
// Continue subdivision
//----------------------
recursiveBezier( x1, y1, x12, y12, x123, y123, level + 1 );
recursiveBezier( x123, y123, x23, y23, x3, y3, -(level + 1) );
recursiveBezier( x123, y123, x23, y23, x3, y3, level + 1 );
}
void BEZIER_POLY::recursiveBezier( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, unsigned int level )
void BEZIER_POLY::recursiveBezier( int x1, int y1, int x2, int y2,
int x3, int y3, int x4, int y4, unsigned int level )
{
if( level > recursion_limit )
return;
+1 -1
View File
@@ -61,7 +61,7 @@ namespace std {
{
static const bool sz64 = sizeof( uintptr_t ) == 8;
static const size_t mask = sz64 ? 0xF000000000000000uLL : 0xF0000000uL;
static const size_t offset = sz64 ? 28 : 60;
static const size_t offset = sz64 ? 60 : 28;
// The hash only needs to be fast and simple, not necessarily accurate - a collision
// only makes things slower, not broken. BITMAP_DEF is a pointer, so the most
+1
View File
@@ -217,6 +217,7 @@ void COLORS_DESIGN_SETTINGS::setupConfigParams()
Add( "Color4DPadBackEx", ITEM_COLOR( LAYER_PAD_BK ), GREEN );
Add( "Color4DAnchorEx", ITEM_COLOR( LAYER_ANCHOR ), BLUE );
Add( "Color4DPadFrontEx", ITEM_COLOR( LAYER_PAD_FR ), RED );
Add( "Color4DPadThruHoleEx", ITEM_COLOR( LAYER_PADS_TH ), YELLOW );
Add( "Color4DNonPlatedEx", ITEM_COLOR( LAYER_NON_PLATEDHOLES ), YELLOW );
Add( "Color4DPCBBackground", ITEM_COLOR( LAYER_PCB_BACKGROUND ), BLACK );
Add( "Color4DPCBCursor", ITEM_COLOR( LAYER_CURSOR ), WHITE );
+3
View File
@@ -141,7 +141,10 @@ COMMIT& COMMIT::createModified( EDA_ITEM* aItem, EDA_ITEM* aCopy, int aExtraFlag
auto entryIt = m_changedItems.find( parent );
if( entryIt != m_changedItems.end() )
{
delete aCopy;
return *this; // item has been already modified once
}
makeEntry( parent, CHT_MODIFY | aExtraFlags, aCopy );
+48 -22
View File
@@ -2,8 +2,8 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2008-2015 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2008 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -39,6 +39,7 @@
#include <wx/config.h>
#include <wx/utils.h>
#include <wx/stdpaths.h>
#include <wx/url.h>
#include <pgm_base.h>
@@ -57,14 +58,6 @@ EDA_UNITS_T g_UserUnit;
COLOR4D g_GhostColor;
/* Class LOCALE_IO
* is a class that can be instantiated within a scope in which you are expecting
* exceptions to be thrown. Its constructor sets a "C" locale, to read/print files
* with fp numbers.
* Its destructor insures that the default locale is restored if an exception
* is thrown, or not.
*/
std::atomic<unsigned int> LOCALE_IO::m_c_count(0);
LOCALE_IO::LOCALE_IO()
@@ -79,6 +72,7 @@ LOCALE_IO::LOCALE_IO()
}
}
LOCALE_IO::~LOCALE_IO()
{
// use thread safe, atomic operation
@@ -218,29 +212,36 @@ wxString GetKicadConfigPath()
{
wxFileName cfgpath;
// From the wxWidgets wxStandardPaths::GetUserConfigDir() help:
// Unix: ~ (the home directory)
// Windows: "C:\Documents and Settings\username\Application Data"
// Mac: ~/Library/Preferences
// http://docs.wxwidgets.org/3.0/classwx_standard_paths.html#a7c7cf595d94d29147360d031647476b0
cfgpath.AssignDir( wxStandardPaths::Get().GetUserConfigDir() );
#if !defined( __WINDOWS__ ) && !defined( __WXMAC__ )
// GetUserConfigDir() does not default to ~/.config which is the current standard
// configuration file location on Linux. This has been fixed in later versions of wxWidgets.
#if !defined( __WXMSW__ ) && !defined( __WXMAC__ )
wxArrayString dirs = cfgpath.GetDirs();
if( dirs.Last() != ".config" )
cfgpath.AppendDir( ".config" );
#endif
wxString envstr;
if( !wxGetEnv( wxT( "XDG_CONFIG_HOME" ), &envstr ) || envstr.IsEmpty() )
{
// XDG_CONFIG_HOME is not set, so use the fallback
cfgpath.AppendDir( wxT( ".config" ) );
}
else
// This shouldn't cause any issues on Windows or MacOS.
if( wxGetEnv( wxT( "XDG_CONFIG_HOME" ), &envstr ) && !envstr.IsEmpty() )
{
// Override the assignment above with XDG_CONFIG_HOME
cfgpath.AssignDir( envstr );
}
#endif
cfgpath.AppendDir( wxT( "kicad" ) );
// Use KICAD_CONFIG_HOME to allow the user to force a specific configuration path.
if( wxGetEnv( wxT( "KICAD_CONFIG_HOME" ), &envstr ) && !envstr.IsEmpty() )
{
// Override the assignment above with KICAD_CONFIG_HOME
cfgpath.AssignDir( envstr );
}
if( !cfgpath.DirExists() )
{
cfgpath.Mkdir( wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL );
@@ -264,6 +265,20 @@ const wxString ExpandEnvVarSubstitutions( const wxString& aString )
return wxExpandEnvVars( aString );
}
const wxString ResolveUriByEnvVars( const wxString& aUri )
{
// URL-like URI: return as is.
wxURL url( aUri );
if( url.GetError() == wxURL_NOERR )
return aUri;
// Otherwise, the path points to a local file. Resolve environment
// variables if any.
return ExpandEnvVarSubstitutions( aUri );
}
bool EnsureFileDirectoryExists( wxFileName* aTargetFullFileName,
const wxString& aBaseFilename,
REPORTER* aReporter )
@@ -371,3 +386,14 @@ size_t std::hash<wxString>::operator()( const wxString& s ) const
return std::hash<std::wstring>{}( s.ToStdWstring() );
}
#endif
#ifdef USE_KICAD_WXPOINT_LESS
bool std::less<wxPoint>::operator()( const wxPoint& aA, const wxPoint& aB ) const
{
if( aA.x == aB.x )
return aA.y < aB.y;
return aA.x < aB.x;
}
#endif
+102 -233
View File
@@ -42,166 +42,110 @@
static std::unordered_map<unsigned long, int> doNotShowAgainDlgs;
KI_DIALOG::KI_DIALOG( wxWindow* aParent, const wxString& aMessage )
: wxDialog( aParent, wxID_ANY, wxEmptyString ),
m_btnSizer( nullptr ), m_cbDoNotShow( nullptr ), m_icon( nullptr )
KIDIALOG::KIDIALOG( wxWindow* aParent, const wxString& aMessage,
const wxString& aCaption, long aStyle )
: wxRichMessageDialog( aParent, aMessage, aCaption, aStyle | wxCENTRE )
{
SetSizeHints( wxDefaultSize, wxDefaultSize );
m_sizerMain = new wxBoxSizer( wxVERTICAL );
m_sizerUpper = new wxBoxSizer( wxHORIZONTAL );
wxStaticText* message = new wxStaticText( this, wxID_ANY, aMessage );
message->Wrap( -1 );
//message->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
m_sizerUpper->Add( message, 1, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, 5 );
m_sizerMain->Add( m_sizerUpper, 1, wxALL | wxEXPAND, 5 );
Type( KD_NONE );
Buttons( wxOK );
SetSizer( m_sizerMain );
Connect( wxEVT_BUTTON, wxCommandEventHandler( KI_DIALOG::onButtonClick ), NULL, this );
setHash();
}
KI_DIALOG& KI_DIALOG::Type( KD_TYPE aType )
KIDIALOG::KIDIALOG( wxWindow* aParent, const wxString& aMessage,
KD_TYPE aType, const wxString& aCaption )
: wxRichMessageDialog( aParent, aMessage, getCaption( aType, aCaption ), getStyle( aType ) )
{
m_type = aType;
const std::unordered_map<int, wxString> stdTitle = {
{ KD_NONE, _( "Message" ) }, { KD_INFO, _( "Information" ) }, { KD_QUESTION, _( "Question" ) },
{ KD_WARNING, _( "Warning" ) }, { KD_ERROR, _( "Error" ) }
};
const std::unordered_map<int, wxArtID> icons = {
{ KD_INFO, wxART_INFORMATION }, { KD_QUESTION, wxART_QUESTION },
{ KD_WARNING, wxART_WARNING }, { KD_ERROR, wxART_ERROR }
};
if( m_icon )
{
m_sizerUpper->Remove( 0 );
m_icon->Destroy();
m_icon = nullptr;
}
if( aType != KD_NONE )
{
m_icon = new wxStaticBitmap( this, wxID_ANY,
wxArtProvider::GetBitmap( icons.at( aType ), wxART_CMN_DIALOG ) );
m_sizerUpper->Prepend( m_icon, 0, wxALL, 5 );
}
if( !m_customTitle )
SetTitle( stdTitle.at( aType ) );
return *this;
setHash();
}
KI_DIALOG& KI_DIALOG::Title( const wxString& aTitle )
bool KIDIALOG::DoNotShowAgain() const
{
m_customTitle = aTitle;
SetTitle( aTitle );
return *this;
return doNotShowAgainDlgs.count( m_hash ) > 0;
}
KI_DIALOG& KI_DIALOG::Buttons( long aButtons )
void KIDIALOG::ForceShowAgain()
{
wxASSERT( aButtons );
if( !aButtons )
aButtons = wxOK;
const std::map<long, long> btnTypes = { { wxOK, wxID_OK }, { wxCANCEL, wxID_CANCEL },
{ wxYES, wxID_YES }, { wxNO, wxID_NO }, { wxAPPLY, wxID_APPLY }, { wxCLOSE, wxID_CLOSE },
{ wxHELP, wxID_HELP } };
if( m_btnSizer )
{
m_sizerMain->Remove( m_btnSizer ); // also deletes m_btnSizer
for( auto btn : m_buttons )
btn->Destroy();
}
m_btnSizer = new wxBoxSizer( wxHORIZONTAL );
for( auto type : btnTypes )
{
if( !( aButtons & type.first ) )
continue;
wxButton* btn = new wxButton( this, type.second );
m_btnSizer->Add( btn, 1, wxALL | wxEXPAND | wxALIGN_RIGHT );
m_buttons.push_back( btn );
}
m_sizerMain->Add( m_btnSizer, 0, wxALL | wxALIGN_RIGHT, 5 );
return *this;
doNotShowAgainDlgs.erase( m_hash );
}
KI_DIALOG& KI_DIALOG::DoNotShowCheckbox()
{
if( !m_cbDoNotShow )
{
m_cbDoNotShow = new wxCheckBox( this, wxID_ANY, _( "Do not show again" ) );
m_sizerMain->Insert( 1, m_cbDoNotShow, 1, wxALL | wxEXPAND, 5 );
}
return *this;
}
bool KI_DIALOG::DoNotShowAgain() const
{
return doNotShowAgainDlgs.count( hash() ) > 0;
}
void KI_DIALOG::ForceShowAgain()
{
doNotShowAgainDlgs.erase( hash() );
}
int KI_DIALOG::ShowModal()
bool KIDIALOG::Show( bool aShow )
{
// Check if this dialog should be shown to the user
auto it = doNotShowAgainDlgs.find( hash() );
auto it = doNotShowAgainDlgs.find( m_hash );
if( it != doNotShowAgainDlgs.end() )
return it->second;
Layout();
m_sizerMain->Fit( this );
int ret = wxDialog::ShowModal();
bool ret = wxRichMessageDialog::Show();
// Has the user asked not to show the dialog again
if( m_cbDoNotShow && m_cbDoNotShow->IsChecked() )
doNotShowAgainDlgs[hash()] = ret;
if( IsCheckBoxChecked() )
doNotShowAgainDlgs[m_hash] = ret;
return ret;
}
void KI_DIALOG::onButtonClick( wxCommandEvent& aEvent )
int KIDIALOG::ShowModal()
{
EndModal( aEvent.GetId() );
// Check if this dialog should be shown to the user
auto it = doNotShowAgainDlgs.find( m_hash );
if( it != doNotShowAgainDlgs.end() )
return it->second;
int ret = wxRichMessageDialog::ShowModal();
// Has the user asked not to show the dialog again
if( IsCheckBoxChecked() )
doNotShowAgainDlgs[m_hash] = ret;
return ret;
}
unsigned long KI_DIALOG::hash() const
void KIDIALOG::setHash()
{
std::size_t h1 = std::hash<wxString>{}( m_message );
std::size_t h2 = std::hash<wxString>{}( m_customTitle );
std::size_t h3 = std::hash<int>{}( m_type );
std::size_t h1 = std::hash<wxString>{}( GetMessage() );
std::size_t h2 = std::hash<wxString>{}( GetTitle() );
m_hash = h1 ^ ( h2 << 1 );
}
return h1 ^ ( h2 << 1 ) ^ ( h3 << 2 );
wxString KIDIALOG::getCaption( KD_TYPE aType, const wxString& aCaption )
{
if( !aCaption.IsEmpty() )
return aCaption;
switch( aType )
{
case KD_NONE: /* fall through */
case KD_INFO: return _( "Message" );
case KD_QUESTION: return _( "Question" );
case KD_WARNING: return _( "Warning" );
case KD_ERROR: return _( "Error" );
}
return wxEmptyString;
}
long KIDIALOG::getStyle( KD_TYPE aType )
{
long style = wxOK | wxCENTRE;
switch( aType )
{
case KD_NONE: break;
case KD_INFO: style |= wxICON_INFORMATION; break;
case KD_QUESTION: style |= wxICON_QUESTION; break;
case KD_WARNING: style |= wxICON_WARNING; break;
case KD_ERROR: style |= wxICON_ERROR; break;
}
return style;
}
@@ -304,12 +248,12 @@ public:
const wxString& aYesButtonText = wxEmptyString,
const wxString& aNoButtonText = wxEmptyString,
const wxString& aCancelButtonText = wxEmptyString ) :
DIALOG_EXIT( aParent, aSecondaryMessage )
DIALOG_EXIT( aParent, aPrimaryMessage )
{
m_TextInfo->SetLabel( aPrimaryMessage );
if( aSecondaryMessage.IsEmpty() )
m_staticText2->Hide();
else
m_staticText2->SetLabel( aSecondaryMessage );
m_buttonSaveAndExit->SetLabel( aYesButtonText.IsEmpty() ? wxGetStockLabel( wxID_YES ) :
aYesButtonText );
@@ -339,126 +283,56 @@ int YesNoCancelDialog( wxWindow* aParent,
int SelectSingleOption( wxWindow* aParent, const wxString& aTitle, const wxString& aMessage, const wxArrayString& aOptions )
{
int ret = -1;
wxDialog* dlg = new wxDialog( aParent, wxID_ANY, aTitle );
wxSingleChoiceDialog dlg( aParent, aMessage, aTitle, aOptions );
wxBoxSizer* boxSizer = new wxBoxSizer( wxVERTICAL );
if( dlg.ShowModal() != wxID_OK )
return -1;
if( !aMessage.IsEmpty() )
boxSizer->Add( new wxStaticText( dlg, wxID_ANY, aMessage ), 0, wxEXPAND | wxALL, 5 );
std::vector<wxRadioButton*> radioButtons;
radioButtons.reserve( aOptions.Count() );
for( const wxString& option : aOptions )
{
radioButtons.emplace_back( new wxRadioButton( dlg, wxID_ANY, _( option ) ) );
boxSizer->Add( radioButtons.back(), 0, wxEXPAND | wxALL, 5 );
}
wxStdDialogButtonSizer* m_sdboxSizer = new wxStdDialogButtonSizer();
wxButton* btnOk = new wxButton( dlg, wxID_OK );
m_sdboxSizer->AddButton( btnOk );
m_sdboxSizer->AddButton( new wxButton( dlg, wxID_CANCEL ) );
m_sdboxSizer->Realize();
btnOk->SetDefault();
boxSizer->Add( m_sdboxSizer, 1, wxEXPAND | wxALL, 5 );
dlg->SetSizer( boxSizer );
dlg->Layout();
boxSizer->Fit( dlg );
boxSizer->SetSizeHints( dlg );
dlg->Centre( wxBOTH );
if( dlg->ShowModal() == wxID_OK )
{
for( unsigned int i = 0; i < radioButtons.size(); ++i )
{
if( radioButtons[i]->GetValue() )
{
ret = i;
break;
}
}
}
else
{
ret = -1;
}
dlg->Destroy();
return ret;
return dlg.GetSelection();
}
class DIALOG_MULTI_OPTIONS : public wxDialog
class DIALOG_MULTI_OPTIONS : public wxMultiChoiceDialog
{
public:
DIALOG_MULTI_OPTIONS( wxWindow* aParent, const wxString& aTitle, const wxString& aMessage,
const wxArrayString& aOptions )
: wxDialog( aParent, wxID_ANY, aTitle )
: wxMultiChoiceDialog( aParent, aMessage, aTitle, aOptions ),
m_optionsCount( aOptions.GetCount() )
{
SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* boxSizer = new wxBoxSizer( wxVERTICAL );
if( !aMessage.IsEmpty() )
boxSizer->Add( new wxStaticText( this, wxID_ANY, aMessage ), 0, wxEXPAND | wxALL, 5 );
m_checklist = new wxCheckListBox( this, wxID_ANY );
for( const wxString& option : aOptions )
m_checklist->Append( option );
boxSizer->Add( m_checklist, 1, wxEXPAND | wxALL, 5 );
wxBoxSizer* btnSizer = new wxBoxSizer( wxHORIZONTAL );
wxButton* selectAll = new wxButton( this, wxID_ANY, _( "Select All" ) );
btnSizer->Add( selectAll, 1, wxEXPAND | wxALL, 5 );
wxButton* unselectAll = new wxButton( this, wxID_ANY, _( "Unselect All" ) );
btnSizer->Add( unselectAll, 1, wxEXPAND | wxALL, 5 );
boxSizer->Add( btnSizer, 0, wxEXPAND | wxALL, 5 );
auto sizer = GetSizer();
sizer->Insert( sizer->GetItemCount() - 1, btnSizer, 0, wxEXPAND | wxALL, 0 );
wxStdDialogButtonSizer* m_sdboxSizer = new wxStdDialogButtonSizer();
wxButton* btnOk = new wxButton( this, wxID_OK );
m_sdboxSizer->AddButton( btnOk );
m_sdboxSizer->AddButton( new wxButton( this, wxID_CANCEL ) );
m_sdboxSizer->Realize();
btnOk->SetDefault();
boxSizer->Add( m_sdboxSizer, 0, wxEXPAND | wxALL, 5 );
SetSizer( boxSizer );
Layout();
boxSizer->Fit( this );
boxSizer->SetSizeHints( this );
sizer->Fit( this );
sizer->SetSizeHints( this );
Centre( wxBOTH );
selectAll->Bind( wxEVT_COMMAND_BUTTON_CLICKED, &DIALOG_MULTI_OPTIONS::selectAll, this );
unselectAll->Bind( wxEVT_COMMAND_BUTTON_CLICKED, &DIALOG_MULTI_OPTIONS::unselectAll, this );
}
std::vector<int> GetSelection() const
{
std::vector<int> ret;
for( unsigned int i = 0; i < m_checklist->GetCount(); ++i )
{
if( m_checklist->IsChecked( i ) )
ret.push_back( i );
}
return ret;
}
void SetCheckboxes( bool aValue )
{
for( unsigned int i = 0; i < m_checklist->GetCount(); ++i )
m_checklist->Check( i, aValue );
wxArrayInt selIdxs;
if( aValue ) // select all indices
{
for( int i = 0; i < m_optionsCount; ++i )
selIdxs.Add( i );
}
SetSelections( selIdxs );
}
protected:
wxCheckListBox* m_checklist;
///> Number of displayed options
int m_optionsCount;
void selectAll( wxCommandEvent& aEvent )
{
@@ -472,29 +346,24 @@ protected:
};
std::pair<bool, std::vector<int>> SelectMultipleOptions( wxWindow* aParent, const wxString& aTitle,
std::pair<bool, wxArrayInt> SelectMultipleOptions( wxWindow* aParent, const wxString& aTitle,
const wxString& aMessage, const wxArrayString& aOptions, bool aDefaultState )
{
std::vector<int> ret;
bool clickedOk;
DIALOG_MULTI_OPTIONS dlg( aParent, aTitle, aMessage, aOptions );
dlg.Layout();
dlg.SetCheckboxes( aDefaultState );
if( dlg.ShowModal() == wxID_OK )
{
ret = dlg.GetSelection();
clickedOk = true;
}
else
{
clickedOk = false;
}
wxArrayInt ret;
bool clickedOk = ( dlg.ShowModal() == wxID_OK );
if( clickedOk )
ret = dlg.GetSelections();
return std::make_pair( clickedOk, ret );
}
std::pair<bool, std::vector<int>> SelectMultipleOptions( wxWindow* aParent, const wxString& aTitle,
std::pair<bool, wxArrayInt> SelectMultipleOptions( wxWindow* aParent, const wxString& aTitle,
const wxString& aMessage, const std::vector<std::string>& aOptions, bool aDefaultState )
{
wxArrayString array;
+9 -9
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2010 Rafael Sokolowski <Rafael.Sokolowski@web.de>
* Copyright (C) 2010-2018 KiCad Developers, see CHANGELOG.TXT for contributors.
* Copyright (C) 2010-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -129,17 +129,17 @@ static void buildKicadAboutBanner( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aInf
// bullet-ed list with some http links
description << "<ul>";
description << "<li>"
<< "The official KiCad website - "
<< _( "The official KiCad website - " )
<< HtmlHyperlink( "http://www.kicad-pcb.org" )
<< "</li>";
description << "<li>"
<< "Developer website on Launchpad - "
<< _( "Developer website on Launchpad - " )
<< HtmlHyperlink( "https://launchpad.net/kicad" )
<< "</li>";
description << "<li>"
<< "Official KiCad library repositories - "
<< HtmlHyperlink( "https://github.com/KiCad/" )
<< _("Official KiCad library repositories - " )
<< HtmlHyperlink( "https://kicad.github.io" )
<< "</li>";
description << "</ul></p>";
@@ -151,7 +151,7 @@ static void buildKicadAboutBanner( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aInf
// bullet-ed list with some http links
description << "<ul>";
description << "<li>"
<< "Report or examine bugs - "
<< _( "Report or examine bugs - " )
<< HtmlHyperlink( "https://bugs.launchpad.net/kicad/+bugs?orderby=-id&start=0",
"https://bugs.launchpad.net/kicad" )
<< "</li>";
@@ -163,12 +163,12 @@ static void buildKicadAboutBanner( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aInf
description << "<ul>";
description << "<li>"
<< "KiCad forum - "
<< _( "KiCad forum - " )
<< HtmlHyperlink( "https://forum.kicad.info" )
<< "</li>";
description << "<li>"
<< "KiCad user's group - "
<<_( "KiCad user's group - " )
<< HtmlHyperlink( "https://groups.yahoo.com/neo/groups/kicad-users/info" )
<< "</li>";
@@ -221,7 +221,7 @@ static void buildKicadAboutBanner( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aInf
aInfo.AddDeveloper( new CONTRIBUTOR( "Lorenzo Marcantonio" ) );
aInfo.AddDeveloper( new CONTRIBUTOR( "Marco Mattila" ) );
aInfo.AddDeveloper( new CONTRIBUTOR( "Russell Oliver" ) );
aInfo.AddDeveloper( new CONTRIBUTOR( "Chris Pavlina" ) );
aInfo.AddDeveloper( new CONTRIBUTOR( "Alexis Lockwood" ) );
aInfo.AddDeveloper( new CONTRIBUTOR( "Miguel Angel Ajo Pelayo" ) );
aInfo.AddDeveloper( new CONTRIBUTOR( "Jacobo Aragunde Perez" ) );
aInfo.AddDeveloper( new CONTRIBUTOR( "Simon Richter" ) );
+18
View File
@@ -35,6 +35,9 @@
extern std::string GetKicadCurlVersion();
extern std::string GetCurlLibVersion();
#endif
#if defined( KICAD_USE_OCC ) | defined( KICAD_USE_OCE )
#include <Standard_Version.hxx>
#endif
#include <boost/version.hpp>
#include <wx/clipbrd.h>
@@ -473,6 +476,14 @@ void DIALOG_ABOUT::buildVersionInfoData( wxString& aMsg, bool aFormatHtml )
<< ( BOOST_VERSION / 100 % 1000 ) << wxT( "." )
<< ( BOOST_VERSION % 100 ) << eol;
#ifdef KICAD_USE_OCC
aMsg << indent4 << "OpenCASCADE Technology: " << OCC_VERSION_COMPLETE << eol;
#endif
#ifdef KICAD_USE_OCE
aMsg << indent4 << "OpenCASCADE Community Edition: " << OCC_VERSION_COMPLETE << eol;
#endif
#ifdef BUILD_GITHUB_PLUGIN
aMsg << indent4 << "Curl: " << GetCurlLibVersion() << eol;
#endif
@@ -557,6 +568,13 @@ void DIALOG_ABOUT::buildVersionInfoData( wxString& aMsg, bool aFormatHtml )
aMsg << OFF;
#endif
aMsg << indent4 << "KICAD_USE_OCC=";
#ifdef KICAD_USE_OCC
aMsg << ON;
#else
aMsg << OFF;
#endif
aMsg << indent4 << "KICAD_SPICE=";
#ifdef KICAD_SPICE
aMsg << ON;
+9 -3
View File
@@ -27,7 +27,7 @@
#include <wx/evtloop.h>
#include <pgm_base.h>
#include <eda_rect.h>
#include <wx/display.h>
/// Toggle a window's "enable" status to disabled, then enabled on destruction.
class WDO_ENABLE_DISABLE
@@ -178,6 +178,12 @@ bool DIALOG_SHIM::Show( bool show )
std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
0 );
}
// Be sure that the dialog appears in a visible area
// (the dialog position might have been stored at the time when it was
// shown on another display)
if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
Centre();
}
else
{
@@ -597,6 +603,8 @@ int DIALOG_SHIM::ShowQuasiModal()
event_loop.Run();
m_qmodal_showing = false;
return GetReturnCode();
}
@@ -616,8 +624,6 @@ void DIALOG_SHIM::EndQuasiModal( int retCode )
return;
}
m_qmodal_showing = false;
if( m_qmodal_loop )
{
if( m_qmodal_loop->IsRunning() )
+33 -7
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2015 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 2015-2017 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -65,6 +65,11 @@ public:
protected:
void OnSelectPath( wxCommandEvent& event ) override;
void onHelpClick( wxCommandEvent& event ) override;
// Currently, only upper case variable names are accepted. onVarNameChange
// changes on the fly any lower case char by the corresponding upper case
void onVarNameChange( wxCommandEvent& event ) override;
bool TransferDataFromWindow() override;
};
@@ -280,6 +285,7 @@ void DIALOG_ENV_VAR_CONFIG::EditSelectedEntry()
}
}
void DIALOG_ENV_VAR_CONFIG::OnHelpButton( wxCommandEvent& event )
{
wxString msg = _( "Enter the name and value for each environment variable. Grey entries "
@@ -291,10 +297,12 @@ void DIALOG_ENV_VAR_CONFIG::OnHelpButton( wxCommandEvent& event )
msg << _( "To ensure environment variable names are valid on all platforms, the name field "
"will only accept upper case letters, digits, and the underscore characters." );
msg << wxT( "</b><br><br>" );
msg << _( "<b>KICAD_SYMBOL_DIR</b> is the base path of the locally installed symbol libraries." );
msg << _( "<b>KICAD_SYMBOL_DIR</b> is the base path of the locally installed symbol "
"libraries." );
msg << wxT( "<br><br>" );
msg << _( "<b>KIGITHUB</b> is used by KiCad to define the URL of the repository "
"of the official KiCad footprint libraries." );
"of the official KiCad footprint libraries. This is only required if the "
"Github plugin is used to access footprint libraries" );
msg << wxT( "<br><br>" );
msg << _( "<b>KISYS3DMOD</b> is the base path of system footprint 3D "
"shapes (.3Dshapes folders)." );
@@ -308,8 +316,11 @@ void DIALOG_ENV_VAR_CONFIG::OnHelpButton( wxCommandEvent& event )
"project. For instance, ${KIPRJMOD}/libs/footprints.pretty can be defined as a "
"folder containing a project specific footprint library named footprints.pretty." );
msg << wxT( "<br><br>" );
msg << _( "<b>KICAD_PTEMPLATES</b> is optional and can be defined if you want to "
"create your own project templates folder." );
msg << _( "<b>KICAD_TEMPLATE_DIR</b> is required and is the path containing the project "
"templates installed with KiCad." );
msg << wxT( "<br><br>" );
msg << _( "<b>KICAD_USER_TEMPLATE_DIR</b> is required and is the path containing any user "
"specific project templates." );
HTML_MESSAGE_BOX dlg( GetParent(), _( "Environment Variable Help" ) );
dlg.SetDialogSizeInDU( 400, 350 );
@@ -332,8 +343,9 @@ bool DIALOG_ENV_VAR_CONFIG::IsEnvVarImmutable( const wxString aEnvVar )
"KISYS3DMOD",
"KISYSMOD",
"KIPRJMOD",
"KICAD_PTEMPLATES",
"KICAD_SYMBOL_DIR"
"KICAD_SYMBOL_DIR",
"KICAD_TEMPLATE_DIR",
"KICAD_USER_TEMPLATE_DIR"
};
for( unsigned int ii=0; ii<6; ii++ )
@@ -427,6 +439,20 @@ void DIALOG_ENV_VAR_SINGLE::OnSelectPath( wxCommandEvent& event )
}
void DIALOG_ENV_VAR_SINGLE::onVarNameChange( wxCommandEvent& event )
{
wxString upper_var = m_envVarName->GetValue().Upper();
if( upper_var != m_envVarName->GetValue() )
{
int pos = m_envVarName->GetInsertionPoint();
m_envVarName->ChangeValue( upper_var );
m_envVarName->SetInsertionPoint( pos );
}
}
bool DIALOG_ENV_VAR_SINGLE::TransferDataFromWindow()
{
// The user pressed the OK button, test data validity
@@ -1,8 +1,8 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Nov 22 2017)
// C++ code generated with wxFormBuilder (version Aug 4 2017)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_env_var_config_base.h"
@@ -61,7 +61,7 @@ DIALOG_ENV_VAR_CONFIG_BASE::DIALOG_ENV_VAR_CONFIG_BASE( wxWindow* parent, wxWind
m_sdbSizer->AddButton( m_sdbSizerHelp );
m_sdbSizer->Realize();
mainSizer->Add( m_sdbSizer, 0, wxBOTTOM|wxEXPAND, 5 );
mainSizer->Add( m_sdbSizer, 0, wxBOTTOM|wxALIGN_RIGHT, 5 );
this->SetSizer( mainSizer );
@@ -142,7 +142,7 @@ DIALOG_ENV_VAR_SINGLE_BASE::DIALOG_ENV_VAR_SINGLE_BASE( wxWindow* parent, wxWind
m_sdbSizer2->AddButton( m_sdbSizer2Cancel );
m_sdbSizer2->Realize();
bSizerMain->Add( m_sdbSizer2, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
bSizerMain->Add( m_sdbSizer2, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_RIGHT, 5 );
this->SetSizer( bSizerMain );
@@ -152,6 +152,7 @@ DIALOG_ENV_VAR_SINGLE_BASE::DIALOG_ENV_VAR_SINGLE_BASE( wxWindow* parent, wxWind
this->Centre( wxBOTH );
// Connect Events
m_envVarName->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onVarNameChange ), NULL, this );
m_buttonHelp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onHelpClick ), NULL, this );
m_selectPathButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::OnSelectPath ), NULL, this );
}
@@ -159,6 +160,7 @@ DIALOG_ENV_VAR_SINGLE_BASE::DIALOG_ENV_VAR_SINGLE_BASE( wxWindow* parent, wxWind
DIALOG_ENV_VAR_SINGLE_BASE::~DIALOG_ENV_VAR_SINGLE_BASE()
{
// Disconnect Events
m_envVarName->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onVarNameChange ), NULL, this );
m_buttonHelp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onHelpClick ), NULL, this );
m_selectPathButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::OnSelectPath ), NULL, this );

Some files were not shown because too many files have changed in this diff Show More