Compare commits

..

138 Commits

Author SHA1 Message Date
Wayne Stambaugh 9c9252e8a3 Tag release version 5.1.2. 2019-04-22 17:14:54 -04:00
John Beard 3a744ad72f Use old-style boost includes
The Boost::boost style library dependencies don't work
on some CMake versions (couldn't find library -lBoost::boost)

Use ${Boost_INCLUDE_DIRS} in the target_include_dirs() instead.

Cherry-picked (with changes) from: 1a9aa2e92d
2019-04-22 01:10:50 +01:00
jean-pierre charras 554e2a4bce qfn_wizard.py fixes. 2019-04-21 14:08:01 +02:00
Jeff Young 6e8979d8d8 Add try/catch block around writing a new library.
Fixes: lp:1825203
* https://bugs.launchpad.net/kicad/+bug/1825203

(cherry picked from commit 2bcf38d2b6)
2019-04-18 22:02:24 +01:00
jean-pierre charras 583d416640 DIALOG_CONFIGURE_PATHS: do not allow users to define the env var KIPRJMOD It always defines the project path, and should never be defined by users.
Fixes: lp:1824912
https://bugs.launchpad.net/kicad/+bug/1824912
2019-04-17 14:55:14 +02:00
jean-pierre charras 03b50b4f85 BOARD_NETLIST_UPDATER: fix 2 serious issues in dry run (memory leak and incorrect single pad nets deletion) Single pad nets deletion in dry run was incorrect when a new footprint was added, because in dry run it is not actually added, and the single pad nets deletion does not see these new pads, and can (incorrectly) delete some nets. 2019-04-17 14:55:13 +02:00
John Beard 440e135e3a QA: Remove expected failure from fixed tests
Commit 55fcbddde8 fixed a couple of
failures in the SHAPE_POLY_SET tests, so these no longer
need the expected failure markers.

(cherry picked from commit 371149756d)
2019-04-17 11:48:11 +01:00
John Beard ab39f06003 SHAPE_ARC: fix polyline conversion when radius=0
Prevent a divide-by-zero bug in SHAPE_ARC::ConvertToPolyline.

When the radius is zero, just use the initial angle (it makes
no different anyway, the result is the centre point, which is
the start point.

(cherry picked from commit e312e2b286)
2019-04-17 11:29:28 +01:00
John Beard 98f78f534c QA: Test arc to polylines - this has a bug
Add unit test of SHAPE_ARC::ConvertToPolyline.

This function has a bug when the arc is of zero radius. This
test shows the bug, but does not fix it yet.

(cherry picked from commit ce84c19a38)
2019-04-17 11:29:28 +01:00
Jon Evans d18b12c1a3 Hide simulator settings tabs that aren't implemented yet
Calling Hide() is apparently not enough in Windows

(cherry picked from commit 895d4c9e1a)
2019-04-15 23:21:31 -04:00
Simon Richter 6a7b1aa39a List Boost as a dependency for kicad2step
This is not technically correct (the Boost dependency is introduced through
libcommon), but less invasive as it doesn't pull in libcommon on the linker
command line.
2019-04-15 23:43:42 +01:00
Seth Hillbrand c4be74a9d0 eeschema: Prevent invalid '0' element in components
In the component, an m_unit/m_convert element is 1-indexed as opposed to
the library where they are 0-indexed.  The 0-index in the library is
reserved for those elements that are shared across all conversion/unit
whereas it is invalid for the component.

Fixes: lp:1824764
* https://bugs.launchpad.net/kicad/+bug/1824764
2019-04-15 12:32:29 -07:00
John Beard 9092048dbc Kicad2Step: handle quoted layers
More recent Kicad_pcb files have quoted layer names (i.e.
strings, not symbols). The importer in K2S doesn't handle that,
so it chokes on elements like (layer "Edge.Cuts").

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

(cherry picked from commit c135158364)
2019-04-15 15:01:57 +01:00
Wayne Stambaugh bb419f1201 Begin version 5.1.2 development. 2019-04-14 15:36:47 -04:00
Wayne Stambaugh d505fd2b60 Tag release version 5.1.1. 2019-04-14 15:32:40 -04:00
Jon Evans a771e0eccb Set new module parent early enough to allow pad clearance to be shown
Fixes: lp:1824587
* https://bugs.launchpad.net/kicad/+bug/1824587
2019-04-14 14:26:15 -04:00
Jon Evans 593a5181d7 Fix rotation of global and hierarchical labels
Fixes: lp:1824432
* https://bugs.launchpad.net/kicad/+bug/1824432
2019-04-13 17:02:33 -04:00
Jon Evans c29274e760 Fix ngspice nested DC sweep command
Fixes: lp:1824336
* https://bugs.launchpad.net/kicad/+bug/1824336
2019-04-13 16:38:31 -04:00
Jon Evans 216573bf48 Fix ngspice netlisting when net names contain '/'
Fixes: lp:1821502
* https://bugs.launchpad.net/kicad/+bug/1821502
2019-04-13 15:35:00 -04:00
Jon Evans 1c235a5c89 Properly initialize sheets when loading them from ERC dialog
When displaying a sheet from this path, it's possible the sheet will
not have been initialized yet.  Call DisplayCurrentSheet() to make sure
it is initialized, and then call RedrawScreen to update the zoom level.

Fixes: lp:1824362
* https://bugs.launchpad.net/kicad/+bug/1824362
2019-04-13 12:25:06 -04:00
Jon Evans f90049dd9e Veto mouse warping from DRC dialog
Fixes: lp:1824630
* https://bugs.launchpad.net/kicad/+bug/1824630

(cherry picked from commit dec5d80180)
2019-04-13 11:30:21 -04:00
Jeff Young 90787e84bf Allow dialogs to veto mouse-warping when called from context menu.
Fixes: lp:1745731
* https://bugs.launchpad.net/kicad/+bug/1745731

(cherry picked from commit adf3637476)
2019-04-13 11:30:09 -04:00
John Beard c36c80a077 Fix GAL option spin button layout
These need to not be wxEXPAND and to be vertically centred
to match the adjacent text controls.

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

(cherry picked from commit 203019d959)
2019-04-12 23:36:56 +01:00
Jon Evans 227333239f Improve selection behavior of DRC markers in DRC dialog list 2019-04-12 12:58:47 -04:00
John Beard 2d43fcf9ee GAL opts: move config reading into GAL_DISPLAY_OPTIONS
Move repeated GAL config reading routines into GAL_DISPLAY_OPTIONS.
THe app-level config is in here already, do the same for the
common config.

This means that the configs are loaded consistently, which fixes
the symbol-chooser preview window, which previously didn't use the
same config routine as other GAL canvases.

Future work could move these functions to free functions that
act on the public interface of GAL_DISPLAY_OPTIONS to avoid
GAL_DISPLAY_OPTIONS having to know about wxConfig and wxWindow.

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

(cherry picked from commit ab2281d26f)
2019-04-12 16:48:50 +01:00
Jeff Young 3edad56e6b Refocus control after doing our little raise/raise dance.
Fixes: lp:1821451
* https://bugs.launchpad.net/kicad/+bug/1821451

(cherry picked from commit 4020b5689b)
2019-04-12 00:30:50 +01:00
John Beard 4e2d900775 Pcbnew: FOOTPRINT_PREVIEW_PANEL passes reference to local
Previously, the GAL_DISPLAY_OPTIONS object in FOOTPRINT_PREVIEW_PANEL::New
was passed by reference in the ctor, down to EDA_DRAW_PANEL_GAL, which stored
it as a reference. The object in New() then goes out of scope, so the
referencing panel outlives the options.

Fix this by making a copy in a std::unique_ptr of the options, and giving
ownership to the panel.

There is another issue here: when the Pcbnew options are copies, the
OBSERVABLE subscriber list is copied too. This means if the panel called
NotifyChanged() on the options, Pcbnew would get updates, even though a copy
of the options changed. However, the panel doesn't change the options or
notify, so it's OK for now.

(cherry picked from commit 17e88d0944)
2019-04-11 17:14:07 +01:00
Jeff Young 4dae82054e Increase GervView layers to 51.
This also makes its use of LSET consistent with PCBNew.

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

(cherry picked from commit b7c12b238f)
2019-04-10 21:23:29 +01:00
Jeff Young cb5948d3a5 When checking for duplicate aliases look in the dialog not the symbol.
Fixes: lp:1821543
* https://bugs.launchpad.net/kicad/+bug/1821543

(cherry picked from commit e90452d0e2)
2019-04-10 21:23:14 +01:00
jean-pierre charras 9fc7281fab Zone filler: fix missing calculation of filled polygons when fill mode is ZFM::SEGMENTS 2019-04-10 18:13:15 +02:00
Seth Hillbrand bb779b237a 3d-viewer: Refresh raytracing on rotate
(cherry picked from commit 89d2e67e45)
2019-04-09 15:18:48 -07:00
Seth Hillbrand 1294b4fec8 3d-viewer: Force canvas refresh before screenshot
In some linux configurations, the canvas refresh must be posted before
being handled.  Simply requesting the refresh can queue the event,
preventing an up to date GL canvas from being saved.

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

(cherry picked from commit 707e7b4b65)
2019-04-09 14:47:54 -07:00
Seth Hillbrand 0b754562f6 pcbnew: Handle missing footprint wizards
When we do not have any footprint wizards to display, we cannot select
the grid rows.

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

(cherry picked from commit 7cf394e34f)
2019-04-09 12:07:08 -07:00
Jeff Young 15cb032ab7 Readjust Edit Symbol Properties when symbol references changes.
The new reference may contain different numbers of units and/or
different deMorgan conversion settings.

Fixes: lp:1822316
* https://bugs.launchpad.net/kicad/+bug/1822316
2019-04-09 17:02:29 +01:00
jean-pierre charras c85d2fd3bf Pcbnew: fix a serious issue in ZONE_FILLER. 2019-04-09 16:34:38 +02:00
Wayne Stambaugh bc821ff47d Eeschema: fix schematic text object plotting issue.
Save and restore text thickness in SCH_TEXT::Plot() function to prevent
the plotting default thickness value from stepping on the original text
thickness and causing all of the text objects to magically change to bold.

Fixes lp:1823165

https://bugs.launchpad.net/kicad/+bug/1823165
(cherry picked from commit 3d33cba574)
2019-04-09 10:18:08 -04:00
Jeff Young 42d9f42807 Allow no-connects to be dragged.
Fixes: lp:1821342
* https://bugs.launchpad.net/kicad/+bug/1821342

(cherry picked from commit c78c3c8198)
2019-04-09 11:20:03 +01:00
Jeff Young 7ceff4cf5d Trim zone fills to board outline.
Fixes: lp:1820306
* https://bugs.launchpad.net/kicad/+bug/1820306

(cherry picked from commit 52e3a1d7c4)
2019-04-09 11:20:03 +01:00
Jeff Young 4147da312b Adjust justified text for rotation.
Fixes: lp:1823090
* https://bugs.launchpad.net/kicad/+bug/1823090

(cherry picked from commit a81512ca96)
2019-04-09 00:36:17 +01:00
Jeff Young 439891c31f Adjust left- or right-justified text for mirroring.
(cherry picked from commit 97063440bb)
2019-04-09 00:36:06 +01:00
John Beard 322524101d Libeval: consistent formatting for NaN
On some platforms like MSVC, NaN prints as "-nan(ind)". This
is a bit needlessly ugly, so print "NaN" on all platforms
consistently.

This fixes a test failure on MSVC.

(cherry picked from commit dd17f24c04)
2019-04-08 16:29:24 +01:00
John Beard fd698653d9 QA: numeric evaluator: add a context to tests
This allows a failing test to report which case failed more clearly.

Add a quick helper to make an "in -> out" context string.

(cherry picked from commit 3f32dc9a64)
2019-04-08 15:58:59 +01:00
John Beard 8b503a06fa 3D viewer: update icons from common settings
Use the icon scaling logic and call a toolbar rebuild when the
common settings change (echos the handling in Pcbnew and friends).

Remove an unused function.

(cherry picked from commit 8548e69382)
2019-04-08 14:30:26 +01:00
John Beard 4a201df556 3D viewer: use hi-DPI settings for canvases
The 3D viewer also uses OpenGL, so it also needs to
adjust based on DPI scale factors.

This patch moves the 3D viewer common config code solely
within the 3D viewer, and adds handling of the DPI scale. This
also avoids duplicated logic in PCB_BASE_FRAME::CommonSettingsChanged.

For now, as EDA_3D_VIEWER is not included in the Kiway settings
dispatch, still manually invoke the settings update from
PCB_BASE_FRAME.

The PANEL_3D_PREV gets a similar function to read the config, but
it doesn't have a listener for the update, so it's set just once
at dialog init, just like the existing pan settings.

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

(cherry picked from commit 124dd5e59a)
2019-04-08 14:30:26 +01:00
Seth Hillbrand 577b9f478b pcbnew: Show clearance when editing tracks
When requested by display options, we should show the track clearance
when dragging tracks.

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

(cherry picked from commit cf63ae7ae2)
2019-04-07 21:26:06 -07:00
Seth Hillbrand f5a2eb1ab0 pcbnew: Allow click+drag of tracks
This behavior existed in 5.0.x but did not properly exit the edit tool
in 5.1.  This removes stops the edit tool when we begin dragging a track
using the interactive router.

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

(cherry picked from commit c8118e3ce4)
2019-04-07 20:59:38 -07:00
Michael Kavanagh 4379480d4b Change "Switch track width to previous" default hotkey from Ctrl+W to Shift+W
Tiny improvement in consistency.

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

(cherry picked from commit 27e6f5b9e8)
2019-04-07 10:52:15 -07:00
Seth Hillbrand dfa4afa826 pcbnew: Freeze the netclasses dialog on init
Prevents the size events from firing on Mac when we set up the netclass
panel

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

(cherry picked from commit a300ae105d)
2019-04-07 07:08:35 -07:00
Wayne Stambaugh a533514763 Minor symbol library rescue dialog fixes.
Adjust the sizer proportions slightly to eliminate the reported bug.
This may not be the ideal way to do this and there could be some issues
on other platforms but it does resolve the issue on gtk3.

Fixes lp:1820084

https://bugs.launchpad.net/kicad/+bug/1820084

(cherry picked from commit 615c49315f)
2019-04-06 08:19:06 -04:00
Wayne Stambaugh 952aaef52a Minor drill file dialog improvements.
(cherry picked from commit b6a0bf1142)
2019-04-05 16:49:51 -04:00
Wayne Stambaugh a54016a6f7 Minor footprint position dialog improvements.
(cherry picked from commit dfee7bddd3)
2019-04-05 16:17:00 -04:00
Michael Kavanagh 0c8a95c44b Invert maximum and minimum endpoints on color picker sliders
Put the maximum values at the "top" of the sliders.

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

(cherry picked from commit 1ccef6dc80)
2019-04-05 14:38:48 +01:00
John Beard 403633d21f Regenerate DIALOG_COLOR_PICKER_BASE wxFB files
This avoids the wxFB automatic changes hiding substantive changes
to be made in later commits.

(cherry picked from commit 0f39d4907f)
2019-04-05 14:38:48 +01:00
jean-pierre charras cc6f1d784d DIALOG_COPPER_ZONE: fix bug that prevent to convert a zone filled by segments to a zone filled by solid polygons 2019-04-05 10:21:16 +02:00
Wayne Stambaugh e07ef3be9c Minor schematic formatter fix.
Apparently at some point in KiCad's development, a '~' character was
prefixed to the symbol name to indicate that it was not visible.  The
visibility state is now saved in the name field so remove the prefix.
The parser was kept unchanged.

Fixes lp:1632048

https://bugs.launchpad.net/kicad/+bug/1632048

(cherry picked from commit ee14da3093)
2019-04-04 10:50:23 -04:00
jean-pierre charras f35f534ff4 DIALOG_PAD_PROPERTIES: Fix incorrect calculation of Round Rect Radius Ratio, when inches are selected.
Fix from master branch.
2019-04-04 15:56:06 +02:00
Jeff Young 3899ec136b Use a bigger hammer when refreshing fields in table.
Fixes: lp:1823050
* https://bugs.launchpad.net/kicad/+bug/1823050
2019-04-04 12:27:29 +01:00
Seth Hillbrand 91ee809558 pcbnew: Prevent aux axis after-image
Grid helper in the router tool is persistent, so remember to turn off
the aux axes after setting.

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

(cherry picked from commit 428e7a900b)
2019-04-03 16:27:37 -07:00
jean-pierre charras 4c94e2729f geometry/geometry_utils.cpp: Fix a minimal value (6) to calculate the segments by circle count to approximate a circle.
Use also this minimal value to calculate  the circle to poly correction factor
Also, remove a useless code.

(cherry picked from commit 0d2dd48cad)
2019-04-03 16:25:52 -07:00
Seth Hillbrand 2a5a207148 pcbnew: Update points before refresh
When removing a point from the polygon, the vertex is removed before it
is tested for validity.  If it fails validation, the edit is reverted
and the point count doesn't change, so the view update only modifies the
existing points.  But the revert may also have changed the shared
pointer to the point array, invalidating the view's copy.

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

(cherry picked from commit 940aef77af)
2019-04-03 16:13:20 -07:00
Seth Hillbrand c75bd89d63 GAL: Deal with thick circles
Both Cairo and OpenGL had issues (different, though) with circles that are
thicker in line width than they have radius.  This corrects the OpenGL
implementation (radius is calculated to the outer edge) as well as Cairo
(line width needs to be clamped to twice the radius)

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

(cherry picked from commit db0523626c)
2019-04-03 16:03:49 -07:00
Seth Hillbrand f58844bf8b pcbnew: Allow Missing legacy option
LEGACY is disabled for GTK3, so we may not find the menu item

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

(cherry picked from commit ce254d1061)
2019-04-03 16:03:21 -07:00
Wayne Stambaugh 07ac3499f3 Remove debugging code added in commit d2cb0ca7.
(cherry picked from commit 75366bce74)
2019-04-03 12:20:37 -04:00
Wayne Stambaugh 050b64b822 Pcbnew: fix DXF import line width bug.
There is a circular dependency between the GRAPHICS_IMPORTER object and
the GRAPHICS_IMPORT_PLUGIN object which makes sharing the settings in
the GRAPHICS_IMPORTER unwieldy.  This fix is a ugly hack that resolves
the issue.  The underlying issue will require some major refactoring.

Fixes lp:1821234

https://bugs.launchpad.net/kicad/+bug/1821234

(cherry picked from commit 120ab06db4)
2019-04-03 11:32:30 -04:00
Wayne Stambaugh 43aa94dcfc Pcbnew: fix import graphics dialog issues.
Improve padding, spacing and alignment of dialog layout.

Fix title capitalization.

Make file dialog wildcard string translatable.

Remove fixed initial dialog size to allow sizers to work their magic.

Replace OK button event handler with TransferDataFromWindow.

Remember last line width units between dialog instances and sessions.

Save configuration file settings in a separate group and remove GfxImport
prefix from the entry names.

Add fencing to dialog header file to prevent nested includes.

Fixes lp:1822568

https://bugs.launchpad.net/kicad/+bug/1822568

(cherry picked from commit d2cb0ca75f)
2019-04-03 11:32:09 -04:00
John Beard b2e54a432b QA: Use own unit test headers for eagle test
These include the appropriate "polyfills" for things like
Boost versions.

(cherry picked from commit 20d36c18350fcccb1bee835553a68da8a0c96b0b)
2019-04-02 23:31:33 +01:00
John Beard e766732020 QA: Eagle test: look up test data in the source tree
Also provide a utility function to get this path, and
a way to override at run time to quickly sub in alternative
data.

The test itself is still broken, as this plugin won't accept
a call to Load() without a KiWay.

(cherry picked from commit 88faac309f)
2019-04-02 19:08:26 +01:00
John Beard 3a5e01c44a QA: Enable eeschema tests
Redesignate the eagle test as eeschema tests and build
more like the other unit tests.

Enable as a test in Ctest now that the test executes without
crashing.

The loading of the file with the hardocded part is still
not enabled, as this needs more infrastructure to support it.

(cherry picked from commit 4eb30f6b85)
2019-04-02 19:08:26 +01:00
John Beard d4883da98b Eeschema: construct simulator cursors on demand
Statically constructing wxCursors as used for the probe
and tune cursors crashes the qa_eagle_plugin test
instantly.

Fix this by introducing a new class CURSOR_STORE,
which allows to abstract the platform wierdness of wxCursors
and allow the simulator to laziliy init its own cursors
at runtime.

This code isn't properly tested, as these cursors are never
actually used. However, it does allow the eeschema unit test
to run.

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

(cherry picked from commit 6f1c3f5ef8)
2019-04-02 19:08:26 +01:00
Michael Kavanagh 7cc3e9a16d Add Ctrl+, hotkey to preferences dialog
Also change interactive router settings from Ctrl+, to Ctrl+Shift+,

(cherry picked from commit b0674b8802)
2019-04-02 13:17:37 -04:00
Michael Kavanagh 9ad352d4bd Fix 'hokey' -> 'hotkey' typo
(cherry picked from commit fe6bc411dd)
2019-04-02 13:17:18 -04:00
Seth Hillbrand 031173bc47 pcbnew: Handle old stable translated layers
This inserts a translation map in the layer names so that the old stable
files with Italian/French layer names get updated to the standard
English layer names (instead of not opening).

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

(cherry picked from commit 6f4d1345f3)
2019-04-01 14:25:27 -07:00
Seth Hillbrand 658820a25e pcbnew: Ensure DRC circles have at least 4 points
This prevents invalid outline errors for small circles.

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

(cherry picked from commit 5eb2a33498)
2019-04-01 14:25:27 -07:00
Wayne Stambaugh 17fdce01a9 GerbView: remember last open gerber file dialog wildcard.
This is only for the current GerbView session.  When GerbView is closed,
the last open gerber file dialog wildcard setting is lost.

(cherry picked from commit f20a1314ff)
2019-04-01 12:47:45 -04:00
Jeff Young bc4cc00332 Update description when tree item is in editor.
Fixes: lp:1820298
* https://bugs.launchpad.net/kicad/+bug/1820298
2019-04-01 13:47:40 +01:00
Jeff Young b57e9492b1 Disable alias controls when no alias is selected.
Fixes: lp:1821698
* https://bugs.launchpad.net/kicad/+bug/1821698
2019-04-01 13:47:31 +01:00
Jeff Young 712bdc9d8d Set initial focus to track width / via size.
Fixes: lp:1822177
* https://bugs.launchpad.net/kicad/+bug/1822177
2019-04-01 13:47:22 +01:00
Jeff Young 33a7c95455 Remove angle brackets from indeterminate string.
They don't really help any, and they confuse some users into
thinking they need angle brackets around real values.

Fixes: lp:1821601
* https://bugs.launchpad.net/kicad/+bug/1821601
2019-04-01 13:47:13 +01:00
Jeff Young f054dcc77d Allow save after importing footprint.
Fixes: lp:1819777
* https://bugs.launchpad.net/kicad/+bug/1819777
2019-04-01 13:47:02 +01:00
Jeff Young 95858b77c1 Ignore BRIGHTENED state when printing.
Fixes: lp:1788480
* https://bugs.launchpad.net/kicad/+bug/1788480
2019-04-01 13:46:46 +01:00
Jeff Young 4afbce5ad6 Fixes for importing board setup properties.
Save/restore default netclass.
Read layers back in with correct syntax ('.' between keyword and layer name).
Write layers to project file.
Read/write layer enablement bits.
Don't set solder paste margin min to 0 (most of them are negative).

Fixes: lp:1811990
* https://bugs.launchpad.net/kicad/+bug/1811990
2019-04-01 13:46:33 +01:00
Wayne Stambaugh 93956002ac Tag version 5.1.0-dev. 2019-04-01 13:32:55 +01:00
Wayne Stambaugh 006dd290e9 Revert "appdata.xml: Remove additional license metadata"
This reverts commit 8a7e501fe6.
2019-03-31 14:35:26 -04:00
Michael Kavanagh fb875145aa Read Footprint Library Browser grid settings from Footprint Editor.
Implements commit 3a0dbf48c8 for Footprint Library Browser/Editor.

Fixes: lp:1822401
https://bugs.launchpad.net/kicad/+bug/1822401
(cherry picked from commit a611269975)
2019-03-31 07:07:52 -07:00
jean-pierre charras 77993ced7e Symbol editor, DIALOG_LIB_EDIT_PIN_TABLE: fix crash when trying to delete a pin when the table is empty.
Fixes: lp:1822406
https://bugs.launchpad.net/kicad/+bug/1822406
2019-03-30 09:32:32 +01:00
jean-pierre charras e1f64d6283 Kicad and Gerbview: add .nc and .xnc file ext to files seen as drill files. .nc is an other usual Excellon drill file ext, and .xnc will be soon also in use. 2019-03-30 09:32:32 +01:00
John Beard 2b60ce484e Formatting: prefer a Git config variable to env var
The keeps all the formatting config together in the Git ecosystem
and keeps the config on a per-repo basis, unless the user explicitly
sets it --global.

Keep the old env var behaviour for now for backwards compatibility.

(cherry picked from commit a7270f8c1c)
2019-03-29 15:12:36 +00:00
John Beard a21b336138 Formatting: exclude generated files from git formatting hook
Add a .gitattributes files to provide a place to store file
attributes. Add a custom attribute for files that should be under
KiCad style guidelines.

Exclude generated files from the style enforcement. So far:

* bitmap .cpp files
* wxFormBuilder base classes
* Lemon grammars

It's now trivial to add the 'generated' attribute to any such
file.

Putting this into .gitattributes also means it can be retreived
programmatically, by other scripts, git alaises or on the command
line.

Use the attributes to provide a utility script to show or apply
formatting to controlled files (plain git clang-format won't
pick up our custom git attributes). Add details for the script in
the dev docs.

Also modiify the check-format hook to follow the .gitattributes
and only apply to cached (staged for commit) changes. Then you
won't be stopped committing because of bad formatting in unstaged
changed, or uncontrolled files.

Concept and some aspects of the implementation inspired by
CMake commit d5f39a56 [1].

[1]: https://gitlab.kitware.com/cmake/cmake/commit/d5f39a56a44fe061018c6acc15e1c3aa7337ff54

tool

(cherry picked from commit a69cdf1793)
2019-03-29 15:12:36 +00:00
John Beard 0655280f2c QA: nullptr_t -> std::nullptr_t
This fixes a build failure on some systems.

(cherry picked from commit 49d75e2383)
2019-03-29 12:49:16 +00:00
John Beard 2793578dcb QA: Allow BOOST_CHECKing of nullptr_t
Before Boost 1.64, there was no test logging function
for std::nullptr_t.

Add a logging struct to Boost to deal with this, and some
macros to assist in similar cases. These macros are bit
untidy-looking, but due to GCC bug #56480, we can't use
namespace aliasing to solve this. From Boost 1.64 onwards,
these namespaces are not needed at all.

Remove some code added to work around lack of nullptr printing
in the past.

These macros, and the nullptr printer, can be removed when
the Boost min version is 1.64 or greater.

(cherry picked from commit ad76ebd82a)
2019-03-29 10:11:19 +00:00
Wayne Stambaugh f1a70662c5 Eeschema: do not merge graphical lines with different attributes.
Fixes lp:1821728

https://bugs.launchpad.net/kicad/+bug/1821728

(cherry picked from commit 2447933b54)
2019-03-28 13:47:58 -04:00
Carsten Schoenert 8a7e501fe6 appdata.xml: Remove additional license metadata
The extra field metadata is not really needed nor helpful as various
other additional licenses are used within the KiCad project.
All used licenses are documented with the file LICENSE.README within top
root folder of the source.

(cherry picked from commit e5de787f88)
2019-03-27 14:50:23 -04:00
Carsten Schoenert 86fc2dc2ba Adding license text for CC-BY-SA-4.0 for completeness
As for the other used licenses adding also the license content for the
CC-BY-SA-4.0 license.

(cherry picked from commit 54aed9b17e)
2019-03-27 14:50:05 -04:00
Carsten Schoenert 9cff42b4ed Adding license information for demo files
The demo files are covered by the CC-BY-SA-4.0 license.
Please note some discussion about this on the developers mailing list:

https://lists.launchpad.net/kicad-developers/msg39174.html
(cherry picked from commit 444050c7d5)
2019-03-27 14:49:44 -04:00
John Beard 55546126a1 Clang-format: break after templates
Enforce the following format:

template<>
void function<TYPE>()

Rather than:

template<> void function<TYPE>()

This is the more common format in KiCad (about 8:1) and agrees
with the uncrustify.cfg rules.

(cherry picked from commit 3536840f52)
2019-03-27 14:38:52 +00:00
John Beard 5a11dacd9e Pcbnew: Improve tab traversal in text properties dialog
Tab through the grid vertically, then horizontally, as the fields
are laid out with "related" fields (like the co-ords) vertically.

Also neaten headers.

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

(cherry picked from commit d6b8e9e037)
2019-03-27 14:06:16 +00:00
John Beard bb5873bf20 Pcbnew: Align right margins in text properties dialog
(cherry picked from commit b7017167f0)
2019-03-27 14:06:16 +00:00
John Beard 20eda54349 Pcbnew: update text properties dialog wxFB version
No actual changes, but this keeps the diffs clean(er).

(cherry picked from commit dd3252445d)
2019-03-27 14:06:16 +00:00
Michael Kavanagh c98461f59e Open drill file in gerbview from KiCad manager tree
Fixes lp:1819754
https://bugs.launchpad.net/kicad/+bug/1819754

(cherry picked from commit b681e4a68e)
2019-03-27 09:13:23 -04:00
jean-pierre charras b154c9a5c4 Eeschema: Force time stamp to 32 bits unsigned values, and make it
tolerant to files using 64 bits values. define timestamp_t as uint32_t.

This fix is adapted from master, commit 175a2bc0b (bug fix lp:1821476)
2019-03-27 13:17:54 +01:00
jean-pierre charras 12255e3680 Eeschema: fix incorrect handling of Escape key. Key events do not have to be skipped after they are handled. 2019-03-27 13:17:54 +01:00
John Beard 473c41ddbf Eeschema: internal tidying of field editor ApplyData
Make a few things const (specficially the reference into
m_fieldStore - we should commit to not modifying that in this
function.

Also avoid a couple of needless string copies.

Also explicitly dereference the into a (non-const) reference at the outset.
For the whole if this function, comp is the same object and may not
be null (as it is used unchecked).

(cherry picked from commit edd94ce2d6)
2019-03-27 10:29:36 +00:00
Baranovskiy Konstantin b93382831c Eeschema: place new field near parent component
For now fields created in Fields Editor are placed at
position (0, 0).
Every new field must be placed at the origin of
the parent component.

(cherry picked from commit 11f03c8551)
2019-03-27 10:29:36 +00:00
Michael Kavanagh 5ee61f5ae7 Fix mnemonic typo in pcbnew menubar
(cherry picked from commit bbcea3c98d)
2019-03-26 19:19:11 -04:00
Seth Hillbrand 082bbd49e7 sim: Prevent stepping
Introduced by 416e64a334.  The code
appears to have been stepped on purpose but this would be incorrect for
most applications.  There remains a good deal of cleanup in mathplot
available for the motivated dev.

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

(cherry picked from commit c1c4a0925d)
2019-03-26 14:59:18 -07:00
John Beard 4e2e69c9cb Fix MSYS2 build breakage
wxPlatformInfo::Get() causes a linker error on Msys2.

Fix this by making common link wx explicitly, rather
than implicity via it's dependencies, which cause
wrong-order linker command lines on windows.

(cherry picked from commit aef369f4af)
2019-03-26 10:53:31 +00:00
John Beard 6f78bb6960 Add configuration of Hi-DPI canvas scaling in OpenGL
First, add automatic detection of toolkit DPI scaling options. For now, this
is, in order,

* Check the GDK_SCALE option under GTK+ (users can set this to force the scaling)
* Check the value from WX's GetContentScalingFactor(). This will start to work
  correctly from WX 3.1 and GTK+ 3.10.

Then, add a user-settable override in the main prefs panel, next to the icon
scaling. This is independent of the icon scaling options.

DPI handling is performed in a standalone class, so they can be shared between
the prefs UI and the OpenGL backend easily. Also means Cairo could use the same
interface in future.

Also adjust the OpenGL grid drawing code to use the computed scale factor,
which avoids over-thick grids in scaled environments (the user can manually
thicken the grid if wanted).

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

Cherry-pick of: 567bdd9b9 (master)
2019-03-25 15:16:18 +00:00
jean-pierre charras a00caac789 Gerbview: fix crash when reading a .gbrjob, and when a file given by the .gbrjob is not found. A incorrect gerber image was created, creating crash on exit or when enable the layer view. 2019-03-24 17:40:16 +01:00
Brian Henning 4e8f191f43 Added an include to tell the compiler where to find wxIsdigit 2019-03-24 15:38:59 +01:00
jean-pierre charras b1c5afd72f Drc dialog: make track to copper zones test optional, because it can be really very time consuming 2019-03-24 15:38:59 +01:00
jean-pierre charras aa5a2225e7 Fix incorrect detection of filled zones changes in DRC check.
Commit 6006703798 fixed a crash but broke the filled zones changes detection.
Filled zones were always seen as not up to date due to the fact the filled areas were cleared too early.

The up to date detection is also optimized: the old filled polygons are no longer stored.
Instead of, the MD5_HASH is calculated and stored before clearing the filled polygons.
2019-03-24 15:38:59 +01:00
jean-pierre charras 4c7672b581 Cvpcb: cosmetic enhancement in toolbar: add a text. 2019-03-24 15:38:59 +01:00
Jon Evans 5f9fa05e21 Fix loading of components with convert parameter set to zero
(cherry picked from commit ab74445df4)
2019-03-23 18:58:17 -04:00
Wayne Stambaugh ee92fa51bc Symbol editor: improve tooltip in symbol properties dialog.
Make the "Define as power symbol" checkbox tooltip more descriptive so
the user has a better understanding of enabling this option.

Fixes lp:1804932

https://bugs.launchpad.net/kicad/+bug/1804932

(cherry picked from commit a7c8df5666)
2019-03-20 15:58:11 -04:00
Simon Richter 63b3960120 Update/regenerate pcb_calculator_frame_base.fbp
(cherry picked from commit 4896daaae5)
2019-03-19 15:21:38 -04:00
Simon Richter e5c76ddf3e Fix line endings in pcb_calculator_frame_base.fbp
No text changes

(cherry picked from commit e286ca170d)
2019-03-19 15:21:19 -04:00
Simon Richter 4b07979008 Add a few dielectric values
- Isola FR408
   https://www.isola-group.com/wp-content/uploads/data-sheets/fr408.pdf
 - Isola 370HR
   https://www.isola-group.com/wp-content/uploads/data-sheets/370hr.pdf
 - Rogers RO4003C
   https://www.rogerscorp.com/documents/726/acm/RO4000-Laminates---Data-sheet.pdf
 - Rogers RO4350B
   (as above)

(cherry picked from commit 432e12effd)
2019-03-19 10:38:43 -04:00
Seth Hillbrand 168fa09f5f Unify and correct Autosave functions
Autosave was not working correctly, partly due to different
implementations in eeschema and pcbnew and partly due to a mistaken
refactor at some point during v5 development.  This unifies the expected
autosave prefix to _autosave- for both pcbnew and eeschema.  It also
unifies the expected suffix for the backup files to -bak.

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

(cherry picked from commit 078320e2fb)
2019-03-18 10:27:09 -07:00
Seth Hillbrand 4facd57cb7 libedit: Don't move the field below the last item
There needs to be at least one item below the one we want to move down
in order to allow the action.

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

(cherry picked from commit 0943c176a3)
2019-03-18 10:27:09 -07:00
Wayne Stambaugh e999636048 Symbol editor: fix superfluous dialog display.
Call base object TransferDataFromWindow() to prevent Validate() from
being called twice.  Validation is handled completely under the hood
so there is no need to call Validate() directly.

Fixes lp:1820301

https://bugs.launchpad.net/kicad/+bug/1820301
2019-03-18 11:46:03 -04:00
Seth Hillbrand 5bd769ea40 Remove global library from pspice simulation 2019-03-17 20:56:24 +01:00
jean-pierre charras bd693f97a1 Print on Linux: use 600 DPI instead of the default 72 DPI (noticeable in Pcbnew) 2019-03-17 20:52:42 +01:00
jean-pierre charras af0cb68c1b Eeschema: do not draw dangling symbol (circle) for PIN_NC pin types. These pins are never connected, so a dangling symbol makes no sense.
Fix also a fex minor coding style issues.
2019-03-17 20:52:42 +01:00
jean-pierre charras 761d7fd438 Demo pic_programmer: remove unused schematic library from list. 2019-03-17 08:52:00 +01:00
jean-pierre charras c537e8a892 Eeschema: shows the opened sheet info in title bar.
Fixes: lp:1819564
https://bugs.launchpad.net/kicad/+bug/1819564
2019-03-17 08:52:00 +01:00
jean-pierre charras 702e85cd96 Pcbnew: disable commit 3692c511 on non Windows platforms A zone refill display progress bar is shown when deselecting the zone after geometry changes. However, on Linux, there are some artifact between the progress bar refresh and the board view refresh: the filled areas are incorrectly shown: the insulated islands remain displayed, although they are removed from the actual filled areas list So it is disabled until a fix is found. 2019-03-17 08:52:00 +01:00
Wayne Stambaugh c93e0b6c5e Minor board editor menu fixes.
Correct menu string capitalization.

Remove duplicate mnemonic characters.

Fixes lp:1818906

https://bugs.launchpad.net/kicad/+bug/1818906
2019-03-16 10:37:35 -04:00
Wayne Stambaugh f7b4a20066 Replace isdigit() with wxIsdigit() when testing wxString characters.
This is a continuation of commit 8a03025a.  All known instances of
using isdigit() to test a character in a wxString have been replaced
by wxIsdigit().
2019-03-15 15:54:49 -04:00
Seth Hillbrand 49ac89bfed pcbnew: Don't refresh S_CURVE in bbox()
The bounding box calculation needs to be fast and is threaded in many
places in pcbnew.  We cannot invalidate items (the function is const but
this wasn't caught at compile-time for some reason) when getting the
bbox. This shouldn't be an issue as the m_BezierPoints is rebuilt each
time the curve is updated, so rebuilding during the bbox seems extra.

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

(cherry picked from commit ec24981cc8)
2019-03-14 05:49:30 -07:00
jean-pierre charras 16e62b29f9 Zone fill: display progress bar when refilling a zone after edition.
Previously, refilling a zone after edition was made silently,
thus creating not understandable but very noticeable freeze time for complex zones.

(cherry picked from commit 3692c511d0)
2019-03-14 05:49:30 -07:00
jean-pierre charras b8180b0459 PROF_COUNTER: add a helper method.
(cherry picked from commit 3fc681c1b7)
2019-03-14 05:49:30 -07:00
Seth Hillbrand 37f250b384 pcbnew: Remove fills prior to updates
Removing existing fills will prevent re-drawing invalid polygons before
they are ready.  This seems to happen on Macs more easily due to redraw
timing.

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

(cherry picked from commit 6006703798)
2019-03-11 16:29:02 -07:00
Seth Hillbrand 5685ec525b GAL: Handle negative line widths
When displaying negative line width elements, the outline of the item
should be hidden rather than displayed.

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

(cherry picked from commit c61ec8ee3b)
2019-03-11 12:38:26 -07:00
Seth Hillbrand 5be59ea8dd eeschema: Fix plot line width for negative lines
Negative width lines are used to hide the outline of shapes in eeschema.
Plot should not show these lines.

(cherry picked from commit 94fa734c61)
2019-03-11 12:38:19 -07:00
Seth Hillbrand 5855f2d909 Ensure LIB_ALIAS elements are always drawn
We add LIB_ALIAS to the VIEW rtree when choosing a new symbol or
browsing.  The actual display element may change based on the unit or
demorgan representation but there will only ever be a single one drawn.
This will set the view bbox to maximum to ensure it is always checked
for drawing.

 Related to lp:1796960
 https://bugs.launchpad.net/kicad/+bug/1796960

(cherry picked from commit d25d62295a)
2019-03-10 20:18:12 -07:00
jean-pierre charras 5424223949 Thermal reliefs: fix a corner case that wrongly removes a stub in a thermal shape.
This was due to the stub removal tests if a stub end is outside a solid area to remove it.
There is a corner case: is the stub end is exactly on a solid area outline extra segment
created by Fracture() used in calculations.

The stub removal tests are now made before fracturing.

Fixes: lp:1819317
https://bugs.launchpad.net/kicad/+bug/1819317
(cherry picked from commit b9944e2c06)
2019-03-10 11:50:33 -07:00
Seth Hillbrand de22148b44 Move env var substitution into GetAssociatedDocument
We always want the documents to have their variables replaced when
opening the associated file.

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

(cherry picked from commit 9bfce26ce7)
2019-03-10 10:44:23 -07:00
Wayne Stambaugh 73664e610b Begin version 5.1.1 development. 2019-03-08 13:11:03 -05:00
1660 changed files with 230883 additions and 183720 deletions
-19
View File
@@ -59,16 +59,6 @@ demos/**/*-bak
demos/**/_autosave-*
demos/**/fp-info-cache
# MacOS package info created by CMake
bitmap2component/Info.plist
cvpcb/Info.plist
eeschema/Info.plist
gerbview/Info.plist
kicad/Info.plist
pagelayout_editor/Info.plist
pcb_calculator/Info.plist
pcbnew/Info.plist
# editor/OS fluff
.*.swp
*~
@@ -86,12 +76,3 @@ pcbnew/Info.plist
*.gch
*.orig
*.patch
# These CMake files are wanted
!CMakeModules/*.cmake
# Eclipse IDE
.project
.cproject
.pydevproject
__pycache__
-6
View File
@@ -40,12 +40,6 @@ CACHE_WRAPPER::~CACHE_WRAPPER()
}
FILENAME_RESOLVER* PROJECT::Get3DFilenameResolver()
{
return Get3DCacheManager()->GetResolver();
}
S3D_CACHE* PROJECT::Get3DCacheManager( bool updateProjDir )
{
wxCriticalSectionLocker lock( lock3D_wrapper );
@@ -221,7 +221,7 @@ void DLG_SELECT_3DMODEL::OnFileActivated( wxTreeEvent& event )
void DLG_SELECT_3DMODEL::SetRootDir( wxCommandEvent& event )
{
if( m_FileTree && dirChoices->GetSelection() > 0 )
if( m_FileTree )
m_FileTree->SetPath( dirChoices->GetString( dirChoices->GetSelection() ) );
return;
@@ -263,31 +263,21 @@ void DLG_SELECT_3DMODEL::updateDirChoiceList( void )
if( !cl.empty() )
{
unsigned int choice = 0;
dirChoices->Clear();
dirChoices->Append( "" ); //Insert a blank string at the beginning to allow selection
if( !prjDir.empty() )
{
dirChoices->Append( prjDir );
if( prjDir == m_FileTree->GetPath() )
choice = 1;
}
std::set< wxString >::const_iterator sI = cl.begin();
std::set< wxString >::const_iterator eI = cl.end();
while( sI != eI )
{
if( *sI == m_FileTree->GetPath() )
choice = dirChoices->GetCount();
dirChoices->Append( *sI );
++sI;
}
dirChoices->Select( choice );
dirChoices->Select( 0 );
}
return;
@@ -24,12 +24,20 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file panel_prev_model.cpp
*/
#include "panel_prev_model.h"
#include <3d_canvas/eda_3d_canvas.h>
#include <common_ogl/cogl_att_list.h>
#include <class_board.h>
#include <base_units.h>
#include <bitmaps.h>
#include <class_drawpanel.h>
#include <dpi_scaling.h>
#include <pgm_base.h>
#include <project.h>
@@ -44,7 +52,7 @@ PANEL_PREV_3D::PANEL_PREV_3D( wxWindow* aParent, PCB_BASE_FRAME* aFrame, MODULE*
initPanel();
// Initialize the color settings to draw the board and the footprint
m_dummyBoard->SetGeneralSettings( &aFrame->Settings() );
m_dummyBoard->SetColorsSettings( &aFrame->Settings().Colors() );
m_parentModelList = aParentModelList;
@@ -100,8 +108,8 @@ void PANEL_PREV_3D::initPanel()
m_spinXoffset,m_spinYoffset, m_spinZoffset
};
for( wxSpinButton* button : spinButtonList )
button->SetRange(INT_MIN, INT_MAX );
for( int ii = 0; ii < 9; ii++ )
spinButtonList[ii]->SetRange( INT_MIN, INT_MAX );
}
@@ -50,8 +50,8 @@
#define SCALE_INCREMENT_FINE 0.02
#define SCALE_INCREMENT 0.1
#define ROTATION_INCREMENT 90 // in degrees, for spin button command
#define ROTATION_INCREMENT_WHEEL 90 // in degrees, for mouse wheel command
#define ROTATION_INCREMENT 5 // in degrees, for spin button command
#define ROTATION_INCREMENT_WHEEL 15 // in degrees, for mouse wheel command
#define ROTATION_INCREMENT_WHEEL_FINE 1 // in degrees, for mouse wheel command
#define OFFSET_INCREMENT_MM 0.5
+5 -2
View File
@@ -65,7 +65,8 @@ CINFO3D_VISU::CINFO3D_VISU() :
m_boardSize = wxSize();
m_boardCenter = SFVEC3F( 0.0f );
m_boardBoundingBox.Reset();
m_boardBoudingBox.Reset();
m_board2dBBox3DU.Reset();
m_layers_container2D.clear();
m_layers_holes2D.clear();
@@ -415,7 +416,7 @@ void CINFO3D_VISU::InitSettings( REPORTER *aStatusTextReporter )
boardMin.z = m_layerZcoordTop[B_Adhes];
boardMax.z = m_layerZcoordTop[F_Adhes];
m_boardBoundingBox = CBBOX( boardMin, boardMax );
m_boardBoudingBox = CBBOX( boardMin, boardMax );
#ifdef PRINT_STATISTICS_3D_VIEWER
unsigned stats_startCreateBoardPolyTime = GetRunningMicroSecs();
@@ -461,6 +462,8 @@ void CINFO3D_VISU::createBoardPolygon()
errmsg.append( _( "Cannot determine the board outline." ) );
wxLogMessage( errmsg );
}
Polygon_Calc_BBox_3DU( m_board_poly, m_board2dBBox3DU, m_biuTo3Dunits );
}
+16 -7
View File
@@ -144,7 +144,7 @@ class CINFO3D_VISU
* @brief GetBBox3DU - Get the bbox of the pcb board
* @return the board bbox in 3d units
*/
const CBBOX &GetBBox3DU() const { return m_boardBoundingBox; }
const CBBOX &GetBBox3DU() const { return m_boardBoudingBox; }
/**
* @brief GetEpoxyThickness3DU - Get the current epoxy thickness
@@ -425,6 +425,10 @@ class CINFO3D_VISU
// Helper functions to create the board
COBJECT2D *createNewTrack( const TRACK* aTrack , int aClearanceValue ) const;
void createNewPad( const D_PAD* aPad,
CGENERICCONTAINER2D *aDstContainer,
wxSize aInflateValue ) const;
void createNewPadWithClearance( const D_PAD *aPad,
CGENERICCONTAINER2D *aDstContainer,
wxSize aClearanceValue ) const;
@@ -478,7 +482,7 @@ class CINFO3D_VISU
SHAPE_POLY_SET &aCornerBuffer,
int aWidth) const;
void transformPadsShapesWithClearanceToPolygon( const PADS &aPads,
void transformPadsShapesWithClearanceToPolygon( const DLIST<D_PAD> &aPads,
PCB_LAYER_ID aLayer,
SHAPE_POLY_SET &aCornerBuffer,
int aInflateValue,
@@ -490,10 +494,12 @@ class CINFO3D_VISU
void buildPadShapePolygon( const D_PAD *aPad,
SHAPE_POLY_SET &aCornerBuffer,
wxSize aInflateValue ) const;
wxSize aInflateValue,
int aSegmentsPerCircle,
double aCorrectionFactor ) const;
public:
public:
SFVEC3D m_BgColorBot; ///< background bottom color
SFVEC3D m_BgColorTop; ///< background top color
SFVEC3D m_BoardBodyColor; ///< in realistic mode: FR4 board color
@@ -503,7 +509,7 @@ public:
SFVEC3D m_CopperColor; ///< in realistic mode: copper color
private:
private:
/// Current board
BOARD *m_board;
@@ -541,8 +547,11 @@ private:
// Pcb board bounding boxes
/// 3d bounding box of the pcb board in 3d units
CBBOX m_boardBoundingBox;
/// 3d bouding box of the pcb board in 3d units
CBBOX m_boardBoudingBox;
/// 2d bouding box of the pcb board in 3d units
CBBOX2D m_board2dBBox3DU;
/// It contains polygon contours for each layer
MAP_POLY m_layers_poly;
@@ -50,7 +50,7 @@
#include <class_text_mod.h>
#include <convert_basic_shapes_to_polygon.h>
#include <trigo.h>
#include <gr_text.h>
#include <draw_graphic_text.h>
#include <utility>
#include <vector>
@@ -62,11 +62,13 @@
static int s_textWidth;
static CGENERICCONTAINER2D *s_dstcontainer = NULL;
static float s_biuTo3Dunits;
static const CBBOX2D *s_boardBBox3DU = NULL;
static const BOARD_ITEM *s_boardItem = NULL;
// This is a call back function, used by GRText to draw the 3D text shape:
// 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* aData )
{
wxASSERT( s_boardBBox3DU != NULL );
wxASSERT( s_dstcontainer != NULL );
const SFVEC2F start3DU( x0 * s_biuTo3Dunits, -y0 * s_biuTo3Dunits );
@@ -74,7 +76,7 @@ void addTextSegmToContainer( int x0, int y0, int xf, int yf, void* aData )
if( Is_segment_a_circle( start3DU, end3DU ) )
s_dstcontainer->Add( new CFILLEDCIRCLE2D( start3DU,
( s_textWidth / 2 ) * s_biuTo3Dunits,
s_textWidth * s_biuTo3Dunits,
*s_boardItem) );
else
s_dstcontainer->Add( new CROUNDSEGMENT2D( start3DU,
@@ -87,46 +89,52 @@ void addTextSegmToContainer( int x0, int y0, int xf, int yf, void* aData )
// Based on
// void TEXTE_PCB::TransformShapeWithClearanceToPolygonSet
// board_items_to_polygon_shape_transform.cpp
void CINFO3D_VISU::AddShapeWithClearanceToContainer( const TEXTE_PCB* aText,
void CINFO3D_VISU::AddShapeWithClearanceToContainer( const TEXTE_PCB* aTextPCB,
CGENERICCONTAINER2D *aDstContainer,
PCB_LAYER_ID aLayerId,
int aClearanceValue )
{
wxSize size = aText->GetTextSize();
wxSize size = aTextPCB->GetTextSize();
if( aText->IsMirrored() )
if( aTextPCB->IsMirrored() )
size.x = -size.x;
s_boardItem = (const BOARD_ITEM *) &aText;
s_boardItem = (const BOARD_ITEM *)&aTextPCB;
s_dstcontainer = aDstContainer;
s_textWidth = aText->GetThickness() + ( 2 * aClearanceValue );
s_textWidth = aTextPCB->GetThickness() + ( 2 * aClearanceValue );
s_biuTo3Dunits = m_biuTo3Dunits;
s_boardBBox3DU = &m_board2dBBox3DU;
// not actually used, but needed by GRText
// not actually used, but needed by DrawGraphicText
const COLOR4D dummy_color = COLOR4D::BLACK;
if( aText->IsMultilineAllowed() )
if( aTextPCB->IsMultilineAllowed() )
{
wxArrayString strings_list;
wxStringSplit( aText->GetShownText(), strings_list, '\n' );
wxStringSplit( aTextPCB->GetShownText(), strings_list, '\n' );
std::vector<wxPoint> positions;
positions.reserve( strings_list.Count() );
aText->GetPositionsOfLinesOfMultilineText( positions, strings_list.Count() );
aTextPCB->GetPositionsOfLinesOfMultilineText( positions,
strings_list.Count() );
for( unsigned ii = 0; ii < strings_list.Count(); ++ii )
{
wxString txt = strings_list.Item( ii );
GRText( NULL, positions[ii], dummy_color, txt, aText->GetTextAngle(), size,
aText->GetHorizJustify(), aText->GetVertJustify(), aText->GetThickness(),
aText->IsItalic(), true, addTextSegmToContainer );
DrawGraphicText( NULL, NULL, positions[ii], dummy_color,
txt, aTextPCB->GetTextAngle(), size,
aTextPCB->GetHorizJustify(), aTextPCB->GetVertJustify(),
aTextPCB->GetThickness(), aTextPCB->IsItalic(),
true, addTextSegmToContainer );
}
}
else
{
GRText( NULL, aText->GetTextPos(), dummy_color, aText->GetShownText(),
aText->GetTextAngle(), size, aText->GetHorizJustify(), aText->GetVertJustify(),
aText->GetThickness(), aText->IsItalic(), true, addTextSegmToContainer );
DrawGraphicText( NULL, NULL, aTextPCB->GetTextPos(), dummy_color,
aTextPCB->GetShownText(), aTextPCB->GetTextAngle(), size,
aTextPCB->GetHorizJustify(), aTextPCB->GetVertJustify(),
aTextPCB->GetThickness(), aTextPCB->IsItalic(),
true, addTextSegmToContainer );
}
}
@@ -176,7 +184,9 @@ void CINFO3D_VISU::AddGraphicsShapesWithClearanceToContainer( const MODULE* aMod
std::vector<TEXTE_MODULE *> texts; // List of TEXTE_MODULE to convert
EDGE_MODULE* outline;
for( auto item : aModule->GraphicalItems() )
for( EDA_ITEM* item = aModule->GraphicalItemsList();
item != NULL;
item = item->Next() )
{
switch( item->Type() )
{
@@ -218,18 +228,22 @@ void CINFO3D_VISU::AddGraphicsShapesWithClearanceToContainer( const MODULE* aMod
s_boardItem = (const BOARD_ITEM *)&aModule->Value();
s_dstcontainer = aDstContainer;
s_biuTo3Dunits = m_biuTo3Dunits;
s_boardBBox3DU = &m_board2dBBox3DU;
for( TEXTE_MODULE* text : texts )
for( unsigned ii = 0; ii < texts.size(); ++ii )
{
s_textWidth = text->GetThickness() + ( 2 * aInflateValue );
wxSize size = text->GetTextSize();
TEXTE_MODULE *textmod = texts[ii];
s_textWidth = textmod->GetThickness() + ( 2 * aInflateValue );
wxSize size = textmod->GetTextSize();
if( text->IsMirrored() )
if( textmod->IsMirrored() )
size.x = -size.x;
GRText( NULL, text->GetTextPos(), BLACK, text->GetShownText(), text->GetDrawRotation(),
size, text->GetHorizJustify(), text->GetVertJustify(), text->GetThickness(),
text->IsItalic(), true, addTextSegmToContainer );
DrawGraphicText( NULL, NULL, textmod->GetTextPos(), BLACK,
textmod->GetShownText(), textmod->GetDrawRotation(), size,
textmod->GetHorizJustify(), textmod->GetVertJustify(),
textmod->GetThickness(), textmod->IsItalic(),
true, addTextSegmToContainer );
}
}
@@ -477,25 +491,6 @@ void CINFO3D_VISU::createNewPadWithClearance( const D_PAD* aPad,
}
break;
case PAD_SHAPE_CHAMFERED_RECT:
{
wxSize shapesize( aPad->GetSize() );
shapesize.x += aClearanceValue.x * 2;
shapesize.y += aClearanceValue.y * 2;
SHAPE_POLY_SET polyList; // Will contain the pad outlines in board coordinates
int corner_radius = aPad->GetRoundRectCornerRadius( shapesize );
TransformRoundChamferedRectToPolygon( polyList, PadShapePos, shapesize, aPad->GetOrientation(),
corner_radius, aPad->GetChamferRectRatio(),
aPad->GetChamferPositions(), ARC_HIGH_DEF );
// Add the PAD polygon
Convert_shape_line_polygon_to_triangles( polyList, *aDstContainer, m_biuTo3Dunits, *aPad );
}
break;
case PAD_SHAPE_CUSTOM:
{
SHAPE_POLY_SET polyList; // Will contain the pad outlines in board coordinates
@@ -568,15 +563,59 @@ COBJECT2D *CINFO3D_VISU::createNewPadDrill( const D_PAD* aPad, int aInflateValue
}
// This function pretends to be like the
// void D_PAD::BuildPadShapePolygon(
// board_items_to_polygon_shape_transform.cpp
void CINFO3D_VISU::createNewPad( const D_PAD* aPad,
CGENERICCONTAINER2D *aDstContainer,
wxSize aInflateValue ) const
{
switch( aPad->GetShape() )
{
case PAD_SHAPE_CIRCLE:
case PAD_SHAPE_OVAL:
case PAD_SHAPE_ROUNDRECT:
case PAD_SHAPE_CUSTOM:
createNewPadWithClearance( aPad, aDstContainer, aInflateValue );
break;
case PAD_SHAPE_TRAPEZOID:
case PAD_SHAPE_RECT:
wxPoint corners[4];
aPad->BuildPadPolygon( corners, aInflateValue, aPad->GetOrientation() );
// Note: for pad having a shape offset,
// the pad position is NOT the shape position
for( unsigned int ii = 0; ii < 4; ++ii )
corners[ii] += aPad->ShapePos(); // Shift origin to position
aDstContainer->Add( new CPOLYGON4PTS2D(
SFVEC2F( corners[0].x * m_biuTo3Dunits,
-corners[0].y * m_biuTo3Dunits ),
SFVEC2F( corners[1].x * m_biuTo3Dunits,
-corners[1].y * m_biuTo3Dunits ),
SFVEC2F( corners[2].x * m_biuTo3Dunits,
-corners[2].y * m_biuTo3Dunits ),
SFVEC2F( corners[3].x * m_biuTo3Dunits,
-corners[3].y * m_biuTo3Dunits ),
*aPad ) );
break;
}
}
void CINFO3D_VISU::AddPadsShapesWithClearanceToContainer( const MODULE* aModule,
CGENERICCONTAINER2D *aDstContainer,
PCB_LAYER_ID aLayerId,
int aInflateValue,
bool aSkipNPTHPadsWihNoCopper )
{
const D_PAD* pad = aModule->PadsList();
wxSize margin;
for( auto pad : aModule->Pads() )
for( ; pad != NULL; pad = pad->Next() )
{
if( !pad->IsOnLayer( aLayerId ) )
continue;
@@ -625,7 +664,7 @@ void CINFO3D_VISU::AddPadsShapesWithClearanceToContainer( const MODULE* aModule,
break;
}
createNewPadWithClearance( pad, aDstContainer, margin );
createNewPad( pad, aDstContainer, margin );
}
}
@@ -724,13 +763,14 @@ void CINFO3D_VISU::AddShapeWithClearanceToContainer( const DRAWSEGMENT* aDrawSeg
const SFVEC2F center3DU( aDrawSegment->GetCenter().x * m_biuTo3Dunits,
-aDrawSegment->GetCenter().y * m_biuTo3Dunits );
float inner_radius = ( aDrawSegment->GetRadius() - linewidth / 2 ) * m_biuTo3Dunits;
float outer_radius = ( aDrawSegment->GetRadius() + linewidth / 2 ) * m_biuTo3Dunits;
const float inner_radius =
std::max<float>( (aDrawSegment->GetRadius() - linewidth / 2) * m_biuTo3Dunits, 0.0 );
const float outter_radius = (aDrawSegment->GetRadius() + linewidth / 2) * m_biuTo3Dunits;
if( inner_radius < 0 )
inner_radius = 0;
aDstContainer->Add( new CRING2D( center3DU, inner_radius, outer_radius, *aDrawSegment ) );
aDstContainer->Add( new CRING2D( center3DU,
inner_radius,
outter_radius,
*aDrawSegment ) );
}
break;
@@ -776,9 +816,12 @@ void CINFO3D_VISU::AddShapeWithClearanceToContainer( const DRAWSEGMENT* aDrawSeg
case S_CURVE:
case S_POLYGON:
{
const int segcountforcircle = ARC_APPROX_SEGMENTS_COUNT_HIGH_DEF;
const double correctionFactor = GetCircleCorrectionFactor( segcountforcircle );
SHAPE_POLY_SET polyList;
aDrawSegment->TransformShapeWithClearanceToPolygon( polyList, aClearanceValue );
aDrawSegment->TransformShapeWithClearanceToPolygon( polyList, aClearanceValue,
segcountforcircle, correctionFactor );
polyList.Simplify( SHAPE_POLY_SET::PM_FAST );
@@ -807,16 +850,13 @@ void CINFO3D_VISU::AddSolidAreasShapesToContainer( const ZONE_CONTAINER* aZoneCo
SHAPE_POLY_SET polyList = SHAPE_POLY_SET( aZoneContainer->GetFilledPolysList(), true );
// This convert the poly in outline and holes
Convert_shape_line_polygon_to_triangles( polyList, *aDstContainer, m_biuTo3Dunits,
Convert_shape_line_polygon_to_triangles( polyList,
*aDstContainer,
m_biuTo3Dunits,
*aZoneContainer );
// add filled areas outlines, which are drawn with thick lines segments
// but only if filled polygons outlines have thickness
if( !aZoneContainer->GetFilledPolysUseThickness() )
return;
float line_thickness = aZoneContainer->GetMinThickness() * m_biuTo3Dunits;
// /////////////////////////////////////////////////////////////////////////
for( int i = 0; i < polyList.OutlineCount(); ++i )
{
// Add outline
@@ -832,15 +872,17 @@ void CINFO3D_VISU::AddSolidAreasShapesToContainer( const ZONE_CONTAINER* aZoneCo
if( Is_segment_a_circle( start3DU, end3DU ) )
{
float radius = line_thickness/2;
float radius = (aZoneContainer->GetMinThickness() / 2) * m_biuTo3Dunits;
if( radius > 0.0 ) // degenerated circles crash 3D viewer
aDstContainer->Add( new CFILLEDCIRCLE2D( start3DU, radius,
aDstContainer->Add( new CFILLEDCIRCLE2D( start3DU, radius ,
*aZoneContainer ) );
}
else
{
aDstContainer->Add( new CROUNDSEGMENT2D( start3DU, end3DU, line_thickness,
aDstContainer->Add( new CROUNDSEGMENT2D( start3DU, end3DU,
aZoneContainer->GetMinThickness() *
m_biuTo3Dunits,
*aZoneContainer ) );
}
}
@@ -860,7 +902,7 @@ void CINFO3D_VISU::AddSolidAreasShapesToContainer( const ZONE_CONTAINER* aZoneCo
if( Is_segment_a_circle( start3DU, end3DU ) )
{
float radius = line_thickness/2;
float radius = (aZoneContainer->GetMinThickness() / 2) * m_biuTo3Dunits;
if( radius > 0.0 ) // degenerated circles crash 3D viewer
aDstContainer->Add(
@@ -870,7 +912,9 @@ void CINFO3D_VISU::AddSolidAreasShapesToContainer( const ZONE_CONTAINER* aZoneCo
else
{
aDstContainer->Add(
new CROUNDSEGMENT2D( start3DU, end3DU, line_thickness,
new CROUNDSEGMENT2D( start3DU, end3DU,
aZoneContainer->GetMinThickness() *
m_biuTo3Dunits,
*aZoneContainer ) );
}
}
@@ -890,17 +934,28 @@ void CINFO3D_VISU::buildPadShapeThickOutlineAsSegments( const D_PAD* aPad,
-aPad->ShapePos().y * m_biuTo3Dunits );
const int radius = aPad->GetSize().x / 2;
const float inner_radius = ( radius - aWidth / 2 ) * m_biuTo3Dunits;
const float outer_radius = ( radius + aWidth / 2 ) * m_biuTo3Dunits;
const float inner_radius = (radius - aWidth / 2) * m_biuTo3Dunits;
const float outter_radius = (radius + aWidth / 2) * m_biuTo3Dunits;
aDstContainer->Add( new CRING2D( center3DU, inner_radius, outer_radius, *aPad ) );
aDstContainer->Add( new CRING2D( center3DU,
inner_radius,
outter_radius,
*aPad ) );
return;
}
// For other shapes, draw polygon outlines
SHAPE_POLY_SET corners;
aPad->BuildPadShapePolygon( corners, wxSize( 0, 0 ) );
const int segcountforcircle = GetNrSegmentsCircle( glm::min( aPad->GetSize().x,
aPad->GetSize().y) );
const double correctionFactor = GetCircleCorrectionFactor( segcountforcircle );
aPad->BuildPadShapePolygon( corners, wxSize( 0, 0 ),
// This two factors are only expected to be used if render an oval
segcountforcircle, correctionFactor );
// Add outlines as thick segments in polygon buffer
@@ -917,13 +972,15 @@ void CINFO3D_VISU::buildPadShapeThickOutlineAsSegments( const D_PAD* aPad,
if( Is_segment_a_circle( start3DU, end3DU ) )
{
aDstContainer->Add(
new CFILLEDCIRCLE2D( start3DU, ( aWidth / 2 ) * m_biuTo3Dunits, *aPad ) );
aDstContainer->Add( new CFILLEDCIRCLE2D( start3DU,
(aWidth / 2) * m_biuTo3Dunits,
*aPad ) );
}
else
{
aDstContainer->Add(
new CROUNDSEGMENT2D( start3DU, end3DU, aWidth * m_biuTo3Dunits, *aPad ) );
aDstContainer->Add( new CROUNDSEGMENT2D( start3DU, end3DU,
aWidth * m_biuTo3Dunits,
*aPad ) );
}
}
}
+141 -49
View File
@@ -140,6 +140,17 @@ void CINFO3D_VISU::destroyLayers()
void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
{
// Number of segments to draw a circle using segments (used on countour zones
// and text copper elements )
const int segcountforcircle = 12;
const double correctionFactor = GetCircleCorrectionFactor( segcountforcircle );
// segments to draw a circle to build texts. Is is used only to build
// the shape of each segment of the stroke font, therefore no need to have
// many segments per circle.
const int segcountInStrokeFont = 12;
const double correctionFactorStroke = GetCircleCorrectionFactor( segcountInStrokeFont );
destroyLayers();
// Build Copper layers
@@ -166,9 +177,9 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// /////////////////////////////////////////////////////////////////////////
std::vector< const TRACK *> trackList;
trackList.clear();
trackList.reserve( m_board->Tracks().size() );
trackList.reserve( m_board->m_Track.GetCount() );
for( auto track : m_board->Tracks() )
for( const TRACK* track = m_board->m_Track; track; track = track->Next() )
{
if( !Is3DLayerEnabled( track->GetLayer() ) ) // Skip non enabled layers
continue;
@@ -382,7 +393,7 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Add VIA hole contourns
// /////////////////////////////////////////////////////////
// Add outer holes of VIAs
// Add outter holes of VIAs
SHAPE_POLY_SET *layerOuterHolesPoly = NULL;
SHAPE_POLY_SET *layerInnerHolesPoly = NULL;
@@ -414,11 +425,15 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
const int holediameter = via->GetDrillValue();
const int hole_outer_radius = (holediameter / 2) + GetCopperThicknessBIU();
TransformCircleToPolygon( *layerOuterHolesPoly, via->GetStart(),
hole_outer_radius, ARC_HIGH_DEF );
TransformCircleToPolygon( *layerOuterHolesPoly,
via->GetStart(),
hole_outer_radius,
GetNrSegmentsCircle( hole_outer_radius * 2 ) );
TransformCircleToPolygon( *layerInnerHolesPoly, via->GetStart(),
holediameter / 2, ARC_HIGH_DEF );
TransformCircleToPolygon( *layerInnerHolesPoly,
via->GetStart(),
holediameter / 2,
GetNrSegmentsCircle( holediameter ) );
}
else if( lIdx == 0 ) // it only adds once the THT holes
{
@@ -427,16 +442,22 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Add through hole contourns
// /////////////////////////////////////////////////////////
TransformCircleToPolygon( m_through_outer_holes_poly, via->GetStart(),
hole_outer_radius, ARC_HIGH_DEF );
TransformCircleToPolygon( m_through_outer_holes_poly,
via->GetStart(),
hole_outer_radius,
GetNrSegmentsCircle( hole_outer_radius * 2 ) );
TransformCircleToPolygon( m_through_inner_holes_poly, via->GetStart(),
holediameter / 2, ARC_HIGH_DEF );
TransformCircleToPolygon( m_through_inner_holes_poly,
via->GetStart(),
holediameter / 2,
GetNrSegmentsCircle( holediameter ) );
// Add samething for vias only
TransformCircleToPolygon( m_through_outer_holes_vias_poly, via->GetStart(),
hole_outer_radius, ARC_HIGH_DEF );
TransformCircleToPolygon( m_through_outer_holes_vias_poly,
via->GetStart(),
hole_outer_radius,
GetNrSegmentsCircle( hole_outer_radius * 2 ) );
//TransformCircleToPolygon( m_through_inner_holes_vias_poly,
// via->GetStart(),
@@ -476,7 +497,13 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
continue;
// Add the track contour
track->TransformShapeWithClearanceToPolygon( *layerPoly, 0 );
int nrSegments = GetNrSegmentsCircle( track->GetWidth() );
track->TransformShapeWithClearanceToPolygon(
*layerPoly,
0,
nrSegments,
GetCircleCorrectionFactor( nrSegments ) );
}
}
}
@@ -488,9 +515,11 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Add holes of modules
// /////////////////////////////////////////////////////////////////////////
for( auto module : m_board->Modules() )
for( const MODULE* module = m_board->m_Modules; module; module = module->Next() )
{
for( auto pad : module->Pads() )
const D_PAD* pad = module->PadsList();
for( ; pad; pad = pad->Next() )
{
const wxSize padHole = pad->GetDrillSize();
@@ -520,9 +549,11 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Add contours of the pad holes (pads can be Circle or Segment holes)
// /////////////////////////////////////////////////////////////////////////
for( auto module : m_board->Modules() )
for( const MODULE* module = m_board->m_Modules; module; module = module->Next() )
{
for( auto pad : module->Pads() )
const D_PAD* pad = module->PadsList();
for( ; pad; pad = pad->Next() )
{
const wxSize padHole = pad->GetDrillSize();
@@ -532,16 +563,28 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// The hole in the body is inflated by copper thickness.
const int inflate = GetCopperThicknessBIU();
// we use the hole diameter to calculate the seg count.
// for round holes, padHole.x == padHole.y
// for oblong holes, the diameter is the smaller of (padHole.x, padHole.y)
const int diam = std::min( padHole.x, padHole.y );
if( pad->GetAttribute () != PAD_ATTRIB_HOLE_NOT_PLATED )
{
pad->BuildPadDrillShapePolygon( m_through_outer_holes_poly, inflate );
pad->BuildPadDrillShapePolygon( m_through_outer_holes_poly,
inflate,
GetNrSegmentsCircle( diam ) );
pad->BuildPadDrillShapePolygon( m_through_inner_holes_poly, 0 );
pad->BuildPadDrillShapePolygon( m_through_inner_holes_poly,
0,
GetNrSegmentsCircle( diam ) );
}
else
{
// If not plated, no copper.
pad->BuildPadDrillShapePolygon( m_through_outer_holes_poly_NPTH, inflate );
pad->BuildPadDrillShapePolygon( m_through_outer_holes_poly_NPTH,
inflate,
GetNrSegmentsCircle( diam ) );
}
}
}
@@ -562,7 +605,7 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
CBVHCONTAINER2D *layerContainer = m_layers_container2D[curr_layer_id];
// ADD PADS
for( auto module : m_board->Modules() )
for( const MODULE* module = m_board->m_Modules; module; module = module->Next() )
{
// Note: NPTH pads are not drawn on copper layers when the pad
// has same shape as its hole
@@ -599,22 +642,25 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
SHAPE_POLY_SET *layerPoly = m_layers_poly[curr_layer_id];
// ADD PADS
for( auto module : m_board->Modules() )
for( const MODULE* module = m_board->m_Modules; module; module = module->Next() )
{
// Construct polys
// /////////////////////////////////////////////////////////////
// Note: NPTH pads are not drawn on copper layers when the pad
// has same shape as its hole
transformPadsShapesWithClearanceToPolygon( module->Pads(),
transformPadsShapesWithClearanceToPolygon( module->PadsList(),
curr_layer_id,
*layerPoly,
0,
true );
// Micro-wave modules may have items on copper layers
module->TransformGraphicTextWithClearanceToPolygonSet(
curr_layer_id, *layerPoly, 0 );
module->TransformGraphicTextWithClearanceToPolygonSet( curr_layer_id,
*layerPoly,
0,
segcountforcircle,
correctionFactor );
transformGraphicModuleEdgeToPolygonSet( module, curr_layer_id, *layerPoly );
}
@@ -644,7 +690,7 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
switch( item->Type() )
{
case PCB_LINE_T:
case PCB_LINE_T: // should not exist on copper layers
{
AddShapeWithClearanceToContainer( (DRAWSEGMENT*)item,
layerContainer,
@@ -703,17 +749,31 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
switch( item->Type() )
{
case PCB_LINE_T:
( (DRAWSEGMENT*) item )->TransformShapeWithClearanceToPolygon( *layerPoly, 0 );
break;
{
const int nrSegments =
GetNrSegmentsCircle( item->GetBoundingBox().GetSizeMax() );
( (DRAWSEGMENT*) item )->TransformShapeWithClearanceToPolygon(
*layerPoly,
0,
nrSegments,
GetCircleCorrectionFactor( nrSegments ) );
}
break;
case PCB_TEXT_T:
( (TEXTE_PCB*) item )->TransformShapeWithClearanceToPolygonSet( *layerPoly, 0 );
break;
( (TEXTE_PCB*) item )->TransformShapeWithClearanceToPolygonSet(
*layerPoly,
0,
segcountforcircle,
correctionFactor );
break;
default:
wxLogTrace( m_logTrace, wxT( "createLayers: item type: %d not implemented" ),
item->Type() );
break;
wxLogTrace( m_logTrace,
wxT( "createLayers: item type: %d not implemented" ),
item->Type() );
break;
}
}
}
@@ -786,7 +846,7 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
auto layerContainer = m_layers_poly.find( zone->GetLayer() );
if( layerContainer != m_layers_poly.end() )
zone->TransformSolidAreasShapesToPolygonSet( *layerContainer->second );
zone->TransformSolidAreasShapesToPolygonSet( *layerContainer->second, segcountforcircle, correctionFactor );
}
}
@@ -974,11 +1034,22 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
switch( item->Type() )
{
case PCB_LINE_T:
( (DRAWSEGMENT*) item )->TransformShapeWithClearanceToPolygon( *layerPoly, 0 );
{
const unsigned int nr_segments =
GetNrSegmentsCircle( item->GetBoundingBox().GetSizeMax() );
((DRAWSEGMENT*) item)->TransformShapeWithClearanceToPolygon( *layerPoly,
0,
nr_segments,
0.0 );
}
break;
case PCB_TEXT_T:
( (TEXTE_PCB*) item )->TransformShapeWithClearanceToPolygonSet( *layerPoly, 0 );
((TEXTE_PCB*) item)->TransformShapeWithClearanceToPolygonSet( *layerPoly,
0,
segcountInStrokeFont,
1.0 );
break;
default:
@@ -989,39 +1060,49 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Add modules tech layers - objects
// /////////////////////////////////////////////////////////////////////
for( auto module : m_board->Modules() )
for( MODULE* module = m_board->m_Modules; module; module = module->Next() )
{
if( (curr_layer_id == F_SilkS) || (curr_layer_id == B_SilkS) )
{
D_PAD* pad = module->PadsList();
int linewidth = g_DrawDefaultLineThickness;
for( auto pad : module->Pads() )
for( ; pad; pad = pad->Next() )
{
if( !pad->IsOnLayer( curr_layer_id ) )
continue;
buildPadShapeThickOutlineAsSegments( pad, layerContainer, linewidth );
buildPadShapeThickOutlineAsSegments( pad,
layerContainer,
linewidth );
}
}
else
{
AddPadsShapesWithClearanceToContainer(
module, layerContainer, curr_layer_id, 0, false );
AddPadsShapesWithClearanceToContainer( module,
layerContainer,
curr_layer_id,
0,
false );
}
AddGraphicsShapesWithClearanceToContainer( module, layerContainer, curr_layer_id, 0 );
AddGraphicsShapesWithClearanceToContainer( module,
layerContainer,
curr_layer_id,
0 );
}
// Add modules tech layers - contours
// /////////////////////////////////////////////////////////////////////
for( auto module : m_board->Modules() )
for( MODULE* module = m_board->m_Modules; module; module = module->Next() )
{
if( (curr_layer_id == F_SilkS) || (curr_layer_id == B_SilkS) )
{
D_PAD* pad = module->PadsList();
const int linewidth = g_DrawDefaultLineThickness;
for( auto pad : module->Pads() )
for( ; pad; pad = pad->Next() )
{
if( !pad->IsOnLayer( curr_layer_id ) )
continue;
@@ -1031,12 +1112,20 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
}
else
{
transformPadsShapesWithClearanceToPolygon(
module->Pads(), curr_layer_id, *layerPoly, 0, false );
transformPadsShapesWithClearanceToPolygon( module->PadsList(),
curr_layer_id,
*layerPoly,
0,
false );
}
// On tech layers, use a poor circle approximation, only for texts (stroke font)
module->TransformGraphicTextWithClearanceToPolygonSet( curr_layer_id, *layerPoly, 0 );
module->TransformGraphicTextWithClearanceToPolygonSet( curr_layer_id,
*layerPoly,
0,
segcountInStrokeFont,
correctionFactorStroke,
segcountInStrokeFont );
// Add the remaining things with dynamic seg count for circles
transformGraphicModuleEdgeToPolygonSet( module, curr_layer_id, *layerPoly );
@@ -1066,7 +1155,10 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
if( !zone->IsOnLayer( curr_layer_id ) )
continue;
zone->TransformSolidAreasShapesToPolygonSet( *layerPoly );
zone->TransformSolidAreasShapesToPolygonSet( *layerPoly,
// Use the same segcount as stroke font
segcountInStrokeFont,
correctionFactorStroke );
}
}
+41 -22
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2016 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
@@ -40,7 +40,9 @@
// but it adds the rect/trapezoid shapes with a different winding
void CINFO3D_VISU::buildPadShapePolygon( const D_PAD* aPad,
SHAPE_POLY_SET& aCornerBuffer,
wxSize aInflateValue ) const
wxSize aInflateValue,
int aSegmentsPerCircle,
double aCorrectionFactor ) const
{
wxPoint corners[4];
wxPoint PadShapePos = aPad->ShapePos(); /* Note: for pad having a shape offset,
@@ -50,7 +52,6 @@ void CINFO3D_VISU::buildPadShapePolygon( const D_PAD* aPad,
case PAD_SHAPE_CIRCLE:
case PAD_SHAPE_OVAL:
case PAD_SHAPE_ROUNDRECT:
case PAD_SHAPE_CHAMFERED_RECT:
{
// We are using TransformShapeWithClearanceToPolygon to build the shape.
// Currently, this method uses only the same inflate value for X and Y dirs.
@@ -61,7 +62,8 @@ void CINFO3D_VISU::buildPadShapePolygon( const D_PAD* aPad,
D_PAD dummy( *aPad );
wxSize new_size = aPad->GetSize() + aInflateValue + aInflateValue;
dummy.SetSize( new_size );
dummy.TransformShapeWithClearanceToPolygon( aCornerBuffer, 0 );
dummy.TransformShapeWithClearanceToPolygon( aCornerBuffer, 0,
aSegmentsPerCircle, aCorrectionFactor );
}
break;
@@ -87,17 +89,8 @@ void CINFO3D_VISU::buildPadShapePolygon( const D_PAD* aPad,
case PAD_SHAPE_CUSTOM:
{
SHAPE_POLY_SET polyList; // Will contain the pad outlines in board coordinates
auto inflate_val = std::max( aInflateValue.x, aInflateValue.y );
polyList.Append( aPad->GetCustomShapeAsPolygon() );
aPad->CustomShapeAsPolygonToBoardPosition( &polyList, aPad->ShapePos(), aPad->GetOrientation() );
if( inflate_val > 0 )
{
int numSegs = GetNrSegmentsCircle( inflate_val );
polyList.Inflate( inflate_val, numSegs );
}
aCornerBuffer.Append( polyList );
}
break;
@@ -111,8 +104,11 @@ void CINFO3D_VISU::buildPadShapeThickOutlineAsPolygon( const D_PAD* aPad,
{
if( aPad->GetShape() == PAD_SHAPE_CIRCLE ) // Draw a ring
{
unsigned int nr_sides_per_circle = GetNrSegmentsCircle( ( aPad->GetSize().x / 2 +
aWidth / 2 ) * 2 );
TransformRingToPolygon( aCornerBuffer, aPad->ShapePos(),
aPad->GetSize().x / 2, ARC_HIGH_DEF, aWidth );
aPad->GetSize().x / 2, nr_sides_per_circle, aWidth );
return;
}
@@ -120,7 +116,11 @@ void CINFO3D_VISU::buildPadShapeThickOutlineAsPolygon( const D_PAD* aPad,
// For other shapes, draw polygon outlines
SHAPE_POLY_SET corners;
buildPadShapePolygon( aPad, corners, wxSize( 0, 0 ) );
unsigned int nr_sides_per_circle = GetNrSegmentsCircle( glm::min( aPad->GetSize().x,
aPad->GetSize().y) );
buildPadShapePolygon( aPad, corners, wxSize( 0, 0 ),
nr_sides_per_circle,
GetCircleCorrectionFactor( nr_sides_per_circle ) );
// Add outlines as thick segments in polygon buffer
@@ -131,21 +131,26 @@ void CINFO3D_VISU::buildPadShapeThickOutlineAsPolygon( const D_PAD* aPad,
const VECTOR2I& a = path.CPoint( ii );
const VECTOR2I& b = path.CPoint( ii + 1 );
TransformRoundedEndsSegmentToPolygon( aCornerBuffer, wxPoint( a.x, a.y ),
wxPoint( b.x, b.y ), ARC_HIGH_DEF, aWidth );
TransformRoundedEndsSegmentToPolygon( aCornerBuffer,
wxPoint( a.x, a.y ),
wxPoint( b.x, b.y ),
nr_sides_per_circle,
aWidth );
}
}
// Based on the same function name in board_items_to_polyshape_transform.cpp
// It was implemented here to allow dynamic segments count per pad shape
void CINFO3D_VISU::transformPadsShapesWithClearanceToPolygon( const PADS& aPads, PCB_LAYER_ID aLayer,
void CINFO3D_VISU::transformPadsShapesWithClearanceToPolygon( const DLIST<D_PAD>& aPads, PCB_LAYER_ID aLayer,
SHAPE_POLY_SET& aCornerBuffer,
int aInflateValue,
bool aSkipNPTHPadsWihNoCopper ) const
{
const D_PAD* pad = aPads;
wxSize margin;
for( auto pad : aPads )
for( ; pad != NULL; pad = pad->Next() )
{
if( !pad->IsOnLayer(aLayer) )
continue;
@@ -194,7 +199,11 @@ void CINFO3D_VISU::transformPadsShapesWithClearanceToPolygon( const PADS& aPads,
break;
}
buildPadShapePolygon( pad, aCornerBuffer, margin );
unsigned int aCircleToSegmentsCount = GetNrSegmentsCircle( pad->GetSize().x );
double aCorrectionFactor = GetCircleCorrectionFactor( aCircleToSegmentsCount );
buildPadShapePolygon( pad, aCornerBuffer, margin,
aCircleToSegmentsCount, aCorrectionFactor );
}
}
@@ -202,7 +211,9 @@ void CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet( const MODULE *aModule
PCB_LAYER_ID aLayer,
SHAPE_POLY_SET& aCornerBuffer ) const
{
for( auto item : aModule->GraphicalItems() )
for( const EDA_ITEM* item = aModule->GraphicalItemsList();
item != NULL;
item = item->Next() )
{
switch( item->Type() )
{
@@ -213,7 +224,15 @@ void CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet( const MODULE *aModule
if( outline->GetLayer() != aLayer )
break;
outline->TransformShapeWithClearanceToPolygon( aCornerBuffer, 0 );
unsigned int aCircleToSegmentsCount =
GetNrSegmentsCircle( outline->GetBoundingBox().GetSizeMax() );
double aCorrectionFactor = GetCircleCorrectionFactor( aCircleToSegmentsCount );
outline->TransformShapeWithClearanceToPolygon( aCornerBuffer,
0,
aCircleToSegmentsCount,
aCorrectionFactor );
}
break;
+49 -19
View File
@@ -45,8 +45,6 @@
#include <hotkeys_basic.h>
#include <menus_helpers.h>
#include <widgets/wx_busy_indicator.h>
/**
* Flag to enable 3D canvas debug tracing.
@@ -143,11 +141,6 @@ EDA_3D_CANVAS::EDA_3D_CANVAS( wxWindow *aParent,
wxASSERT( m_3d_render_raytracing != NULL );
wxASSERT( m_3d_render_ogl_legacy != NULL );
auto busy_indicator_factory = []() { return std::make_unique<WX_BUSY_INDICATOR>(); };
m_3d_render_raytracing->SetBusyIndicatorFactory( busy_indicator_factory );
m_3d_render_ogl_legacy->SetBusyIndicatorFactory( busy_indicator_factory );
RenderEngineChanged();
wxASSERT( aBoard != NULL );
@@ -660,42 +653,79 @@ void EDA_3D_CANVAS::OnRightClick( wxMouseEvent &event )
wxPoint pos;
wxMenu PopUpMenu;
wxString msg;
pos.x = event.GetX();
pos.y = event.GetY();
msg = AddHotkeyName( _( "Zoom +" ), GetHotkeyConfig(),
ID_POPUP_ZOOMIN );
AddMenuItem( &PopUpMenu, ID_POPUP_ZOOMIN,
_( "Zoom +\tF1" ), KiBitmap( zoom_in_xpm ) );
msg, KiBitmap( zoom_in_xpm ) );
msg = AddHotkeyName( _( "Zoom -" ), GetHotkeyConfig(),
ID_POPUP_ZOOMOUT );
AddMenuItem( &PopUpMenu, ID_POPUP_ZOOMOUT,
_( "Zoom -\tF2" ), KiBitmap( zoom_out_xpm ) );
msg, KiBitmap( zoom_out_xpm ) );
PopUpMenu.AppendSeparator();
msg = AddHotkeyName( _( "Top View" ), GetHotkeyConfig(),
ID_POPUP_VIEW_ZPOS );
AddMenuItem( &PopUpMenu, ID_POPUP_VIEW_ZPOS,
_( "Top View\tZ" ), KiBitmap( axis3d_top_xpm ) );
msg, KiBitmap( axis3d_top_xpm ) );
msg = AddHotkeyName( _( "Bottom View" ), GetHotkeyConfig(),
ID_POPUP_VIEW_ZNEG );
AddMenuItem( &PopUpMenu, ID_POPUP_VIEW_ZNEG,
_( "Bottom View\tShift+Z" ), KiBitmap( axis3d_bottom_xpm ) );
msg, KiBitmap( axis3d_bottom_xpm ) );
PopUpMenu.AppendSeparator();
msg = AddHotkeyName( _( "Right View" ), GetHotkeyConfig(),
ID_POPUP_VIEW_XPOS );
AddMenuItem( &PopUpMenu, ID_POPUP_VIEW_XPOS,
_( "Right View\tX" ), KiBitmap( axis3d_right_xpm ) );
msg, KiBitmap( axis3d_right_xpm ) );
msg = AddHotkeyName( _( "Left View" ), GetHotkeyConfig(),
ID_POPUP_VIEW_XNEG );
AddMenuItem( &PopUpMenu, ID_POPUP_VIEW_XNEG,
_( "Left View\tShift+X" ), KiBitmap( axis3d_left_xpm ) );
msg, KiBitmap( axis3d_left_xpm ) );
PopUpMenu.AppendSeparator();
msg = AddHotkeyName( _( "Front View" ), GetHotkeyConfig(),
ID_POPUP_VIEW_YPOS );
AddMenuItem( &PopUpMenu, ID_POPUP_VIEW_YPOS,
_( "Front View\tY" ), KiBitmap( axis3d_front_xpm ) );
msg, KiBitmap( axis3d_front_xpm ) );
msg = AddHotkeyName( _( "Back View" ), GetHotkeyConfig(),
ID_POPUP_VIEW_YNEG );
AddMenuItem( &PopUpMenu, ID_POPUP_VIEW_YNEG,
_( "Back View\tShift+Y" ), KiBitmap( axis3d_back_xpm ) );
msg, KiBitmap( axis3d_back_xpm ) );
PopUpMenu.AppendSeparator();
msg = AddHotkeyName( _( "Move Left <-" ), GetHotkeyConfig(),
ID_POPUP_MOVE3D_LEFT );
AddMenuItem( &PopUpMenu, ID_POPUP_MOVE3D_LEFT,
_( "Move Left <-\tLeft" ), KiBitmap( left_xpm ) );
msg, KiBitmap( left_xpm ) );
msg = AddHotkeyName( _( "Move Right ->" ), GetHotkeyConfig(),
ID_POPUP_MOVE3D_RIGHT );
AddMenuItem( &PopUpMenu, ID_POPUP_MOVE3D_RIGHT,
_( "Move Right ->\tRight" ), KiBitmap( right_xpm ) );
msg, KiBitmap( right_xpm ) );
msg = AddHotkeyName( _( "Move Up ^" ), GetHotkeyConfig(),
ID_POPUP_MOVE3D_UP );
AddMenuItem( &PopUpMenu, ID_POPUP_MOVE3D_UP,
_( "Move Up ^\tUp" ), KiBitmap( up_xpm ) );
msg, KiBitmap( up_xpm ) );
msg = AddHotkeyName( _( "Move Down" ), GetHotkeyConfig(),
ID_POPUP_MOVE3D_DOWN );
AddMenuItem( &PopUpMenu, ID_POPUP_MOVE3D_DOWN,
_( "Move Down\tDown" ), KiBitmap( down_xpm ) );
msg, KiBitmap( down_xpm ) );
PopupMenu( &PopUpMenu, pos );
}
+5
View File
@@ -128,6 +128,11 @@ class EDA_3D_CANVAS : public HIDPI_GL_CANVAS
bool IsOpenGLInitialized() const { return m_is_opengl_initialized; }
/**
* Return a structure containing currently used hotkey mapping.
*/
EDA_HOTKEY_CONFIG* GetHotkeyConfig() const;
private:
void OnPaint( wxPaintEvent &event );
@@ -745,7 +745,9 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
// /////////////////////////////////////////////////////////////////////////
// Insert vias holes (vertical cylinders)
for( auto track : m_settings.GetBoard()->Tracks() )
for( const TRACK* track = m_settings.GetBoard()->m_Track;
track;
track = track->Next() )
{
if( track->Type() == PCB_VIA_T )
{
@@ -798,9 +800,11 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
tht_inner_holes_poly.RemoveAllContours();
// Insert pads holes (vertical cylinders)
for( const auto module : m_settings.GetBoard()->Modules() )
for( const MODULE* module = m_settings.GetBoard()->m_Modules;
module;
module = module->Next() )
{
for( auto pad : module->Pads() )
for( const D_PAD* pad = module->PadsList(); pad; pad = pad->Next() )
{
if( pad->GetAttribute() != PAD_ATTRIB_HOLE_NOT_PLATED )
{
@@ -819,10 +823,13 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
double correctionFactor = m_settings.GetCircleCorrectionFactor( nrSegments );
int correction = radius * ( correctionFactor - 1 );
pad->BuildPadDrillShapePolygon(
tht_outer_holes_poly, copperThickness + correction );
pad->BuildPadDrillShapePolygon( tht_outer_holes_poly,
copperThickness + correction,
nrSegments );
pad->BuildPadDrillShapePolygon( tht_inner_holes_poly, correction );
pad->BuildPadDrillShapePolygon( tht_inner_holes_poly,
correction,
nrSegments );
}
}
}
@@ -903,7 +910,8 @@ void C3D_RENDER_OGL_LEGACY::load_3D_models( REPORTER *aStatusTextReporter )
return;
// Go for all modules
for( auto module : m_settings.GetBoard()->Modules() )
for( const MODULE* module = m_settings.GetBoard()->m_Modules;
module; module = module->Next() )
{
if( !module->Models().empty() )
{
@@ -472,7 +472,7 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( bool aIsMoving,
if( m_reloadRequested )
{
std::unique_ptr<BUSY_INDICATOR> busy = CreateBusyIndicator();
wxBusyCursor dummy;
if( aStatusTextReporter )
aStatusTextReporter->Report( _( "Loading..." ) );
@@ -980,13 +980,18 @@ void C3D_RENDER_OGL_LEGACY::render_3D_models( bool aRenderTopOrBot,
bool aRenderTransparentOnly )
{
// Go for all modules
for( auto module : m_settings.GetBoard()->Modules() )
if( m_settings.GetBoard()->m_Modules.GetCount() )
{
if( !module->Models().empty() )
if( m_settings.ShouldModuleBeDisplayed( (MODULE_ATTR_T) module->GetAttributes() ) )
if( ( aRenderTopOrBot && !module->IsFlipped() )
|| ( !aRenderTopOrBot && module->IsFlipped() ) )
render_3D_module( module, aRenderTransparentOnly );
for( const MODULE* module = m_settings.GetBoard()->m_Modules;
module;
module = module->Next() )
{
if( !module->Models().empty() )
if( m_settings.ShouldModuleBeDisplayed( (MODULE_ATTR_T)module->GetAttributes() ) )
if( ( aRenderTopOrBot && !module->IsFlipped()) ||
(!aRenderTopOrBot && module->IsFlipped()) )
render_3D_module( module, aRenderTransparentOnly );
}
}
}
@@ -1076,7 +1076,7 @@ void C3D_RENDER_RAYTRACING::insert3DPadHole( const D_PAD* aPad )
width * m_settings.BiuTo3Dunits(),
*aPad );
CROUNDSEGMENT2D *outerSeg = new CROUNDSEGMENT2D(
CROUNDSEGMENT2D *outterSeg = new CROUNDSEGMENT2D(
SFVEC2F( start.x * m_settings.BiuTo3Dunits(),
-start.y * m_settings.BiuTo3Dunits() ),
SFVEC2F( end.x * m_settings.BiuTo3Dunits(),
@@ -1090,14 +1090,14 @@ void C3D_RENDER_RAYTRACING::insert3DPadHole( const D_PAD* aPad )
std::vector<const COBJECT2D *> *object2d_B = new std::vector<const COBJECT2D *>();
object2d_B->push_back( innerSeg );
CITEMLAYERCSG2D *itemCSG2d = new CITEMLAYERCSG2D( outerSeg,
CITEMLAYERCSG2D *itemCSG2d = new CITEMLAYERCSG2D( outterSeg,
object2d_B,
CSGITEM_FULL,
*aPad );
m_containerWithObjectsToDelete.Add( itemCSG2d );
m_containerWithObjectsToDelete.Add( innerSeg );
m_containerWithObjectsToDelete.Add( outerSeg );
m_containerWithObjectsToDelete.Add( outterSeg );
object2d_A = itemCSG2d;
}
@@ -1171,7 +1171,9 @@ void C3D_RENDER_RAYTRACING::add_3D_vias_and_pads_to_container()
// /////////////////////////////////////////////////////////////////////////
// Insert vias holes (vertical cylinders)
for( auto track : m_settings.GetBoard()->Tracks() )
for( const TRACK* track = m_settings.GetBoard()->m_Track;
track;
track = track->Next() )
{
if( track->Type() == PCB_VIA_T )
{
@@ -1181,9 +1183,11 @@ void C3D_RENDER_RAYTRACING::add_3D_vias_and_pads_to_container()
}
// Insert pads holes (vertical cylinders)
for( auto module : m_settings.GetBoard()->Modules() )
for( const MODULE* module = m_settings.GetBoard()->m_Modules;
module;
module = module->Next() )
{
for( auto pad : module->Pads() )
for( const D_PAD* pad = module->PadsList(); pad; pad = pad->Next() )
if( pad->GetAttribute () != PAD_ATTRIB_HOLE_NOT_PLATED )
{
insert3DPadHole( pad );
@@ -1195,7 +1199,9 @@ void C3D_RENDER_RAYTRACING::add_3D_vias_and_pads_to_container()
void C3D_RENDER_RAYTRACING::load_3D_models()
{
// Go for all modules
for( auto module : m_settings.GetBoard()->Modules() )
for( const MODULE* module = m_settings.GetBoard()->m_Modules;
module;
module = module->Next() )
{
if( (!module->Models().empty() ) &&
m_settings.ShouldModuleBeDisplayed( (MODULE_ATTR_T)module->GetAttributes() ) )
@@ -1,4 +1,4 @@
/*
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
@@ -28,11 +28,10 @@
*/
#include <GL/glew.h>
#include <algorithm>
#include <atomic>
#include <chrono>
#include <climits>
#include <atomic>
#include <thread>
#include <chrono>
#include "c3d_render_raytracing.h"
#include "mortoncodes.h"
@@ -167,7 +166,7 @@ bool C3D_RENDER_RAYTRACING::Redraw( bool aIsMoving, REPORTER *aStatusTextReporte
initialize_block_positions();
}
std::unique_ptr<BUSY_INDICATOR> busy = CreateBusyIndicator();
wxBusyCursor dummy;
// Reload board if it was requested
// /////////////////////////////////////////////////////////////////////////
@@ -2075,13 +2074,6 @@ bool C3D_RENDER_RAYTRACING::initializeOpenGL()
}
static float distance( const SFVEC2UI& a, const SFVEC2UI& b )
{
const float dx = (float) a.x - (float) b.x;
const float dy = (float) a.y - (float) b.y;
return hypotf( dx, dy );
}
void C3D_RENDER_RAYTRACING::initialize_block_positions()
{
@@ -2131,24 +2123,26 @@ void C3D_RENDER_RAYTRACING::initialize_block_positions()
m_postshader_ssao.UpdateSize( m_realBufferSize );
// Calc block positions for regular rendering. Choose an 'inside out'
// style of rendering
// Calc block positions
// /////////////////////////////////////////////////////////////////////
m_blockPositions.clear();
const int blocks_x = m_realBufferSize.x / RAYPACKET_DIM;
const int blocks_y = m_realBufferSize.y / RAYPACKET_DIM;
m_blockPositions.reserve( blocks_x * blocks_y );
m_blockPositions.reserve( (m_realBufferSize.x / RAYPACKET_DIM) *
(m_realBufferSize.y / RAYPACKET_DIM) );
for( int x = 0; x < blocks_x; ++x )
for( int y = 0; y < blocks_y; ++y )
m_blockPositions.push_back( SFVEC2UI( x * RAYPACKET_DIM, y * RAYPACKET_DIM ) );
i = 0;
const SFVEC2UI center( m_realBufferSize.x / 2, m_realBufferSize.y / 2 );
std::sort( m_blockPositions.begin(), m_blockPositions.end(),
[&]( const SFVEC2UI& a, const SFVEC2UI& b ) {
// Sort order: inside out.
return distance( a, center ) < distance( b, center );
} );
while(1)
{
SFVEC2UI blockPos( DecodeMorton2X(i) * RAYPACKET_DIM,
DecodeMorton2Y(i) * RAYPACKET_DIM );
i++;
if( (blockPos.x >= m_realBufferSize.x) && (blockPos.y >= m_realBufferSize.y) )
break;
if( (blockPos.x < m_realBufferSize.x) && (blockPos.y < m_realBufferSize.y) )
m_blockPositions.push_back( blockPos );
}
// Create m_shader buffer
delete[] m_shaderBuffer;
@@ -109,9 +109,9 @@ public:
float *aOutT,
SFVEC2F *aNormalOut ) const = 0;
/**
* Function IsBBoxInside
* @brief Tests if the bounding is out, intersects or is complety inside
/** Function IsBBoxInside
* @brief Tests if the bouding is out, intersects or is complety inside
* @param aBBox - The bounding box to test
* @return INTERSECTION_RESULT
*/
virtual INTERSECTION_RESULT IsBBoxInside( const CBBOX2D &aBBox ) const = 0;
@@ -711,6 +711,35 @@ void Convert_path_polygon_to_polygon_blocks_and_dummy_blocks(
}
void Polygon_Calc_BBox_3DU( const SHAPE_POLY_SET &aPolysList,
CBBOX2D &aOutBBox ,
float aBiuTo3DunitsScale )
{
aOutBBox.Reset();
for( int idx = 0; idx < aPolysList.OutlineCount(); ++idx )
{
// Each polygon in aPolysList is a polygon with holes
const SHAPE_POLY_SET::POLYGON& curr_polywithholes = aPolysList.CPolygon( idx );
for( unsigned ipoly = 0; ipoly < curr_polywithholes.size(); ++ipoly )
{
const SHAPE_LINE_CHAIN& path = curr_polywithholes[ipoly]; // a simple polygon
for( int jj = 0; jj < path.PointCount(); jj++ )
{
const VECTOR2I& a = path.CPoint( jj );
aOutBBox.Union( SFVEC2F( (float) a.x * aBiuTo3DunitsScale,
(float)-a.y * aBiuTo3DunitsScale ) );
}
}
}
aOutBBox.ScaleNextUp();
}
#ifdef DEBUG
static void polygon_Convert( const ClipperLib::Path &aPath,
SEGMENTS &aOutSegment,
@@ -751,7 +780,7 @@ void Polygon2d_TestModule()
aPath[2] = ClipperLib::IntPoint( 2, 2 );
aPath[3] = ClipperLib::IntPoint( -2, 2 );
// It must be an outer polygon
// It must be an outter polygon
wxASSERT( ClipperLib::Orientation( aPath ) );
polygon_Convert( aPath, aSegments, 1.0f );
@@ -86,7 +86,7 @@ typedef struct
class CPOLYGONBLOCK2D : public COBJECT2D
{
private:
/// This is the outer part of the polygon. This list is used to test a ray
/// This is the outter part of the polygon. This list is used to test a ray
/// intersection with the boundaries of this sub polygon.
/// It contains also the interpolated normals that are passed from the main
/// polygon.
@@ -150,6 +150,10 @@ void Convert_path_polygon_to_polygon_blocks_and_dummy_blocks(
float aDivFactor,
const BOARD_ITEM &aBoardItem );
void Polygon_Calc_BBox_3DU( const SHAPE_POLY_SET &aPolysList,
CBBOX2D &aOutBBox,
float aBiuTo3DunitsScale );
void Polygon2d_TestModule();
#endif // _CPOLYGON2D_H_
@@ -88,7 +88,7 @@ bool CPOLYGON4PTS2D::Intersects( const CBBOX2D &aBBox ) const
if( !m_bbox.Intersects( aBBox ) )
return false;
// Check if the bounding box complety have inside the small bounding box
// Check if the bouding box complety have inside the small bouding box
if( (aBBox.Max().x > m_bbox.Max().x) &&
(aBBox.Max().y > m_bbox.Max().x) &&
(aBBox.Min().x < m_bbox.Min().x) &&
@@ -87,15 +87,15 @@ bool CRING2D::Intersect( const RAYSEG2D &aSegRay,
// dd*t^2 + (2*qd)*t + (qq-r^2) = 0
const float discriminantsqr = qd * qd - qq;
const float discriminantsqr_outer = discriminantsqr + m_outer_radius_squared;
const float discriminantsqr_outter = discriminantsqr + m_outer_radius_squared;
// If the discriminant is less than zero, there is no intersection
if( discriminantsqr_outer < FLT_EPSILON )
if( discriminantsqr_outter < FLT_EPSILON )
return false;
// Otherwise check and make sure that the intersections occur on the ray (t
// > 0) and return the closer one
const float discriminant = sqrt( discriminantsqr_outer );
const float discriminant = sqrt( discriminantsqr_outter );
float t = (-qd - discriminant);
if( (t > FLT_EPSILON) && (t < aSegRay.m_Length) )
@@ -85,7 +85,7 @@ public:
bool IsPointInside( const SFVEC2F &aPoint ) const override;
};
static const float s_min_dot = (FLT_EPSILON * 4.0f * FLT_EPSILON * 4.0f) ;
static const float s_min_dot = (FLT_EPSILON * 4.0f) ;
/**
* @brief Segment_is_a_circle - check if segment start and end is very close to each other
@@ -83,7 +83,7 @@ public:
CROUNDSEG( const SFVEC2F &aStart,
const SFVEC2F &aEnd,
float aInnerRadius,
float aOuterRadius,
float aOutterRadius,
float aZmin,
float aZmax );
@@ -102,9 +102,9 @@ private:
float m_inner_radius;
float m_inner_radius_squared;
float m_inner_inv_radius;
float m_outer_radius;
float m_outer_radius_squared;
float m_outer_inv_radius;
float m_outter_radius;
float m_outter_radius_squared;
float m_outter_inv_radius;
float m_width;
float m_seglen_over_two_squared;
};
@@ -54,19 +54,3 @@ C3D_RENDER_BASE::~C3D_RENDER_BASE()
{
}
void C3D_RENDER_BASE::SetBusyIndicatorFactory( BUSY_INDICATOR::FACTORY aNewFactory )
{
m_busyIndicatorFactory = aNewFactory;
}
std::unique_ptr<BUSY_INDICATOR> C3D_RENDER_BASE::CreateBusyIndicator() const
{
std::unique_ptr<BUSY_INDICATOR> busy;
if( m_busyIndicatorFactory )
busy = m_busyIndicatorFactory();
return busy;
}
-19
View File
@@ -35,8 +35,6 @@
#include "../3d_canvas/cinfo3d_visu.h"
#include <reporter.h>
#include <widgets/busy_indicator.h>
/**
* This is a base class to hold data and functions for render targets.
*/
@@ -88,22 +86,9 @@ public:
*/
virtual int GetWaitForEditingTimeOut() = 0;
/**
* Set a new busy indicator factory.
*
* When set, this factory will be used to generate busy indicators when
* suitable. If not set, no busy indicator will be used.
*/
void SetBusyIndicatorFactory( BUSY_INDICATOR::FACTORY aNewFactory );
// Attributes
protected:
/**
* Return a created busy indicator, if a factory has been set, else
* a null pointer.
*/
std::unique_ptr<BUSY_INDICATOR> CreateBusyIndicator() const;
/// settings refrence in use for this render
CINFO3D_VISU &m_settings;
@@ -124,10 +109,6 @@ protected:
* more information.
*/
static const wxChar *m_logTrace;
private:
/// Factory that returns a suitable busy indicator for the context.
BUSY_INDICATOR::FACTORY m_busyIndicatorFactory;
};
#endif // C3D_RENDER_BASE_H
+2 -2
View File
@@ -310,7 +310,7 @@ void CCAMERA::MakeRay( const SFVEC2I &aWindowPos,
case PROJECTION_ORTHO:
aOutOrigin = up_plus_right * 0.5f + m_frustum.nc;
aOutDirection = -m_dir + SFVEC3F( FLT_EPSILON );
aOutDirection = -m_dir;
break;
}
}
@@ -341,7 +341,7 @@ void CCAMERA::MakeRay( const SFVEC2F &aWindowPos, SFVEC3F &aOutOrigin, SFVEC3F &
case PROJECTION_ORTHO:
aOutOrigin = up_plus_right * 0.5f + m_frustum.nc;
aOutDirection = -m_dir + SFVEC3F( FLT_EPSILON );
aOutDirection = -m_dir;
break;
}
}
@@ -1,7 +1,10 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2019 KiCad Developers, see CHANGELOG.TXT for contributors.
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2016 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
@@ -21,18 +24,22 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef GERBVIEW_SELECTION_H
#define GERBVIEW_SELECTION_H
/**
* @file 3d_viewer.h
* @brief Declaration of the eda_3d_viewer class
*/
#include <tool/selection.h>
#ifndef _3D_VIEWER_H_
#define _3D_VIEWER_H_
class GERBVIEW_SELECTION : public SELECTION
{
public:
VECTOR2I GetCenter() const override;
/// A variable name whose value holds the path of 3D shape files.
/// Currently an environment variable, eventually a project variable.
#define KISYS3DMOD wxT( "KISYS3DMOD" )
const BOX2I ViewBBox() const override;
};
/// All 3D files are expected to be stored in LIB3D_FOLDER, or one of
/// its subdirectory.
#define LIB3D_FOLDER wxT( "packages3d" )
#endif // GERBVIEW_SELECTION_H
#endif // _3D_VIEWER_H_
-129
View File
@@ -1,129 +0,0 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2017 Jon Evans <jon@craftyjon.com>
* Copyright (C) 2017-2019 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#include <tool/tool_manager.h>
#include <bitmaps.h>
#include "3d_actions.h"
// Actions, being statically-defined, require specialized I18N handling. We continue to
// use the _() macro so that string harvesting by the I18N framework doesn't have to be
// specialized, but we don't translate on initialization and instead do it in the getters.
#undef _
#define _(s) s
TOOL_ACTION EDA_3D_ACTIONS::pivotCenter( "3DViewer.Control.pivotCenter",
AS_GLOBAL,
' ', "",
"Center pivot rotation (Middle mouse click)" );
TOOL_ACTION EDA_3D_ACTIONS::moveLeft( "3DViewer.Control.moveLeft",
AS_GLOBAL,
WXK_LEFT, "",
"Move board Left" );
TOOL_ACTION EDA_3D_ACTIONS::moveRight( "3DViewer.Control.moveRight",
AS_GLOBAL,
WXK_RIGHT, "",
"Move board Right" );
TOOL_ACTION EDA_3D_ACTIONS::moveUp( "3DViewer.Control.moveUp",
AS_GLOBAL,
WXK_UP, "",
"Move board Up" );
TOOL_ACTION EDA_3D_ACTIONS::moveDown( "3DViewer.Control.moveDown",
AS_GLOBAL,
WXK_DOWN, "",
"Move board Down" );
TOOL_ACTION EDA_3D_ACTIONS::homeView( "3DViewer.Control.homeView",
AS_GLOBAL,
WXK_HOME, "",
"Home view" );
TOOL_ACTION EDA_3D_ACTIONS::resetView( "3DViewer.Control.resetView",
AS_GLOBAL,
'R', "",
"Reset view" );
TOOL_ACTION EDA_3D_ACTIONS::viewFront( "3DViewer.Control.viewFront",
AS_GLOBAL,
'Y', "",
"View Front" );
TOOL_ACTION EDA_3D_ACTIONS::viewBack( "3DViewer.Control.viewBack",
AS_GLOBAL,
MD_SHIFT + 'Y', "",
"View Back" );
TOOL_ACTION EDA_3D_ACTIONS::viewLeft( "3DViewer.Control.viewLeft",
AS_GLOBAL,
MD_SHIFT + 'X', "",
"View Left" );
TOOL_ACTION EDA_3D_ACTIONS::viewRight( "3DViewer.Control.viewRight",
AS_GLOBAL,
'X', "",
"View Right" );
TOOL_ACTION EDA_3D_ACTIONS::viewTop( "3DViewer.Control.viewTop",
AS_GLOBAL,
'Z', "",
"View Top" );
TOOL_ACTION EDA_3D_ACTIONS::viewBottom( "3DViewer.Control.viewBottom",
AS_GLOBAL,
MD_SHIFT + 'Z', "",
"View Bottom" );
TOOL_ACTION EDA_3D_ACTIONS::rotate45axisZ( "3DViewer.Control.rotate45axisZ",
AS_GLOBAL,
WXK_TAB, "",
"Rotate 45 degrees over Z axis" );
TOOL_ACTION EDA_3D_ACTIONS::zoomIn( "3DViewer.Control.zoomIn",
AS_GLOBAL,
WXK_F1, "",
"Zoom in " );
TOOL_ACTION EDA_3D_ACTIONS::zoomOut( "3DViewer.Control.zoomOut",
AS_GLOBAL,
WXK_F2, "",
"Zoom out" );
TOOL_ACTION EDA_3D_ACTIONS::attributesTHT( "3DViewer.Control.attributesTHT",
AS_GLOBAL,
'T', "",
"Toggle 3D models with type Through Hole" );
TOOL_ACTION EDA_3D_ACTIONS::attributesSMD( "3DViewer.Control.attributesSMD",
AS_GLOBAL,
'S', "",
"Toggle 3D models with type Surface Mount" );
TOOL_ACTION EDA_3D_ACTIONS::attributesVirtual( "3DViewer.Control.attributesVirtual",
AS_GLOBAL,
'V', "",
"Toggle 3D models with type Virtual" );
-70
View File
@@ -1,70 +0,0 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2013-2016 CERN
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors.
* @author Maciej Suminski <maciej.suminski@cern.ch>
*
* 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
*/
#ifndef EDA_3D_ACTIONS_H
#define EDA_3D_ACTIONS_H
#include <tool/tool_action.h>
#include <tool/actions.h>
#include <core/optional.h>
class TOOL_EVENT;
class TOOL_MANAGER;
/**
* Class EDA_3D_ACTIONS
*
* Note: these aren't "real" actions; we just use them to see the hotkeys display.
*/
class EDA_3D_ACTIONS : public ACTIONS
{
public:
static TOOL_ACTION pivotCenter;
static TOOL_ACTION moveLeft;
static TOOL_ACTION moveRight;
static TOOL_ACTION moveUp;
static TOOL_ACTION moveDown;
static TOOL_ACTION homeView;
static TOOL_ACTION resetView;
static TOOL_ACTION viewFront;
static TOOL_ACTION viewBack;
static TOOL_ACTION viewLeft;
static TOOL_ACTION viewRight;
static TOOL_ACTION viewTop;
static TOOL_ACTION viewBottom;
static TOOL_ACTION rotate45axisZ;
static TOOL_ACTION zoomIn;
static TOOL_ACTION zoomOut;
static TOOL_ACTION attributesTHT;
static TOOL_ACTION attributesSMD;
static TOOL_ACTION attributesVirtual;
///> @copydoc COMMON_ACTIONS::TranslateLegacyId()
virtual OPT<TOOL_EVENT> TranslateLegacyId( int aId ) override { return OPT<TOOL_EVENT>(); }
};
#endif
+249 -261
View File
@@ -24,319 +24,307 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file 3d_menubar.cpp
*/
#include <fctsys.h>
#include <tool/conditional_menu.h>
#include <eda_3d_viewer.h>
#include <3d_canvas/cinfo3d_visu.h>
#include <menus_helpers.h>
#include <3d_viewer_id.h>
#include <3d_actions.h>
#include <tool/tool_manager.h>
#include <tool/common_control.h>
#include "help_common_strings.h"
void EDA_3D_VIEWER::CreateMenuBar()
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::CreateMenuBar" );
COMMON_CONTROL* tool = m_toolManager->GetTool<COMMON_CONTROL>();
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_TOOL_SET_VISIBLE_ITEMS,
_( "Display Options" ),
KiBitmap( read_setup_xpm ) );
prefsMenu->AppendCheckItem( ID_RENDER_CURRENT_VIEW, _( "Raytracing" ) );
prefsMenu->Check( ID_RENDER_CURRENT_VIEW,
m_settings.RenderEngineGet() != RENDER_ENGINE_OPENGL_LEGACY );
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 );
//-- File menu -----------------------------------------------------------
//
CONDITIONAL_MENU* fileMenu = new CONDITIONAL_MENU( false, tool );
// Add specific preferences for Raytracing
// /////////////////////////////////////////////////////////////////////////
wxMenu * renderOptionsMenu_RAYTRACING = new wxMenu;
AddMenuItem( renderOptionsMenu, renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING,
_( "Raytracing Options" ), KiBitmap( tools_xpm ) );
fileMenu->AddItem( ID_MENU_SCREENCOPY_PNG, _( "Export Current View as PNG..." ), "",
export_xpm, SELECTION_CONDITIONS::ShowAlways );
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS,
_( "Render Shadows" ),
KiBitmap( green_xpm ), wxITEM_CHECK );
fileMenu->AddItem( ID_MENU_SCREENCOPY_JPEG, _( "Export Current View as JPEG..." ), "",
export_xpm, SELECTION_CONDITIONS::ShowAlways );
fileMenu->AddSeparator();
fileMenu->AddClose( _( "3D Viewer" ) );
fileMenu->Resolve();
//-- Edit menu -------------------------------------------------------
//
CONDITIONAL_MENU* editMenu = new CONDITIONAL_MENU( false, tool );
editMenu->AddItem( ID_TOOL_SCREENCOPY_TOCLIBBOARD, _( "Copy 3D Image" ), "",
copy_xpm, SELECTION_CONDITIONS::ShowAlways );
editMenu->Resolve();
//-- View menu -------------------------------------------------------
//
CONDITIONAL_MENU* viewMenu = new CONDITIONAL_MENU( false, tool );
viewMenu->AddItem( ID_ZOOM_IN, _( "Zoom In\tF1" ), HELP_ZOOM_IN,
zoom_in_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_ZOOM_OUT, _( "Zoom Out\tF2" ), HELP_ZOOM_OUT,
zoom_out_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_ZOOM_PAGE, _( "Zoom to Fit" ), HELP_ZOOM_FIT,
zoom_fit_in_page_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_ZOOM_REDRAW, _( "Redraw\tR" ), HELP_ZOOM_REDRAW,
zoom_redraw_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddSeparator();
viewMenu->AddItem( ID_ROTATE3D_X_NEG, _( "Rotate X Clockwise\tShift+X" ), "",
rotate_neg_x_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_ROTATE3D_X_POS, _( "Rotate X Counterclockwise\tX" ), "",
rotate_pos_x_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddSeparator();
viewMenu->AddItem( ID_ROTATE3D_Y_NEG, _( "Rotate Y Clockwise\tShift+Y" ), "",
rotate_neg_y_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_ROTATE3D_Y_POS, _( "Rotate Y Counterclockwise\tY" ), "",
rotate_pos_y_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddSeparator();
viewMenu->AddItem( ID_ROTATE3D_Z_NEG, _( "Rotate Z Clockwise\tShift+Z" ), "",
rotate_neg_z_xpm, SELECTION_CONDITIONS::ShowAlways );;
viewMenu->AddItem( ID_ROTATE3D_Z_POS, _( "Rotate Z Counterclockwise\tZ" ), "",
rotate_pos_z_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddSeparator();
viewMenu->AddItem( ID_MOVE3D_LEFT, _( "Move Left\tLeft" ), "",
left_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_MOVE3D_RIGHT, _( "Move Right\tRight" ), "",
right_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_MOVE3D_UP, _( "Move Up\tUp" ), "",
up_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->AddItem( ID_MOVE3D_DOWN, _( "Move Down\tDown" ), "",
down_xpm, SELECTION_CONDITIONS::ShowAlways );
viewMenu->Resolve();
//-- Preferences menu -----------------------------------------------
//
CONDITIONAL_MENU* prefsMenu = new CONDITIONAL_MENU( false, tool );
auto raytracingCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.RenderEngineGet() != RENDER_ENGINE_OPENGL_LEGACY;
};
auto NormalModeCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.MaterialModeGet() == MATERIAL_MODE_NORMAL;
};
auto DiffuseModeCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.MaterialModeGet() == MATERIAL_MODE_DIFFUSE_ONLY;
};
auto CADModeCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.MaterialModeGet() == MATERIAL_MODE_CAD_MODE;
};
auto copperThicknessCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS );
};
auto boundingBoxesCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX );
};
auto renderShadowsCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_RAYTRACING_SHADOWS );
};
auto proceduralTexturesCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES );
};
auto showFloorCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_RAYTRACING_BACKFLOOR );
};
auto useRefractionsCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_RAYTRACING_REFRACTIONS );
};
auto useReflectionsCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_RAYTRACING_REFLECTIONS );
};
auto antiAliasingCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING );
};
auto postProcessCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING );
};
auto showAxesCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GetFlag( FL_AXIS );
};
prefsMenu->AddItem( ID_TOOL_SET_VISIBLE_ITEMS, _( "Display Options" ), "",
read_setup_xpm, SELECTION_CONDITIONS::ShowAlways );
prefsMenu->AddCheckItem( ID_RENDER_CURRENT_VIEW, _( "Raytracing" ), "",
tools_xpm, raytracingCondition );
// Render options submenu
CONDITIONAL_MENU* optsSubmenu = new CONDITIONAL_MENU( false, tool );
optsSubmenu->SetTitle( _( "Render Options" ) );
optsSubmenu->SetIcon( options_3drender_xpm );
// Material properties submenu
CONDITIONAL_MENU* propsSubmenu = new CONDITIONAL_MENU( false, tool );
propsSubmenu->SetTitle( _( "Material Properties" ) );
propsSubmenu->SetIcon( color_materials_xpm );
propsSubmenu->AddCheckItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL,
_( "Use All Properties" ),
_( "Use all material properties from each 3D model file" ),
nullptr, NormalModeCondition );
propsSubmenu->AddCheckItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_DIFFUSE_ONLY,
_( "Use Diffuse Only" ),
_( "Use only the diffuse color property from model 3D model file" ),
nullptr, DiffuseModeCondition );
propsSubmenu->AddCheckItem( ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE,
_( "CAD Color Style" ),
_( "Use a CAD color style based on the diffuse color of the material" ),
nullptr, CADModeCondition );
optsSubmenu->AddMenu( propsSubmenu, SELECTION_CONDITIONS::ShowAlways );
optsSubmenu->AddCheckItem( ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS,
_( "Show Copper Thickness" ),
_( "Shows the copper thickness on copper layers (slower loading)" ),
use_3D_copper_thickness_xpm, copperThicknessCondition );
optsSubmenu->AddCheckItem( ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX,
_( "Show Model Bounding Boxes" ), "",
ortho_xpm, boundingBoxesCondition );
// Raytracing submenu
CONDITIONAL_MENU* raySubmenu = new CONDITIONAL_MENU( false, tool );
raySubmenu->SetTitle( _( "Raytracing Options" ) );
raySubmenu->SetIcon( tools_xpm );
raySubmenu->AddCheckItem( ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS,
_( "Render Shadows" ), "",
green_xpm, renderShadowsCondition );
raySubmenu->AddCheckItem( ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES,
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES,
_( "Procedural Textures" ),
_( "Apply procedural textures to materials (slow)"),
green_xpm, proceduralTexturesCondition );
KiBitmap( green_xpm ), wxITEM_CHECK );
raySubmenu->AddCheckItem( ID_MENU3D_FL_RAYTRACING_BACKFLOOR,
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_BACKFLOOR,
_( "Add Floor" ),
_( "Adds a floor plane below the board (slow)"),
green_xpm, showFloorCondition );
KiBitmap( green_xpm ), wxITEM_CHECK );
raySubmenu->AddCheckItem( ID_MENU3D_FL_RAYTRACING_REFRACTIONS,
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFRACTIONS,
_( "Refractions" ),
_( "Render materials with refractions properties on final render (slow)"),
green_xpm, useRefractionsCondition );
KiBitmap( green_xpm ), wxITEM_CHECK );
raySubmenu->AddCheckItem( ID_MENU3D_FL_RAYTRACING_REFLECTIONS,
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_REFLECTIONS,
_( "Reflections" ),
_( "Render materials with reflections properties on final render (slow)"),
green_xpm, useReflectionsCondition );
KiBitmap( green_xpm ), wxITEM_CHECK );
raySubmenu->AddCheckItem( ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING,
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING,
_( "Anti-aliasing" ),
_( "Render with improved quality on final render (slow)"),
green_xpm, antiAliasingCondition );
KiBitmap( green_xpm ), wxITEM_CHECK );
raySubmenu->AddCheckItem( ID_MENU3D_FL_RAYTRACING_POST_PROCESSING,
AddMenuItem( renderOptionsMenu_RAYTRACING, ID_MENU3D_FL_RAYTRACING_POST_PROCESSING,
_( "Post-processing" ),
_( "Apply Screen Space Ambient Occlusion and Global Illumination reflections on final render (slow)"),
green_xpm, postProcessCondition );
KiBitmap( green_xpm ), wxITEM_CHECK );
optsSubmenu->AddMenu( raySubmenu, SELECTION_CONDITIONS::ShowAlways );
prefsMenu->AddMenu( optsSubmenu, SELECTION_CONDITIONS::ShowAlways );
prefsMenu->AppendSeparator();
prefsMenu->AddSeparator();
// Color submenu
CONDITIONAL_MENU* colorSubmenu = new CONDITIONAL_MENU( false, tool );
colorSubmenu->SetTitle( _( "Choose Colors" ) );
colorSubmenu->SetIcon( palette_xpm );
// Colors, axis and grid elements
// /////////////////////////////////////////////////////////////////////////
colorSubmenu->AddItem( ID_MENU3D_BGCOLOR_TOP, _( "Background Top Color..." ), "",
setcolor_3d_bg_xpm, SELECTION_CONDITIONS::ShowAlways );
// Add submenu set Colors
wxMenu * setColorMenu = new wxMenu;
AddMenuItem( prefsMenu, setColorMenu, ID_MENU3D_COLOR,
_( "Choose Colors" ), KiBitmap( palette_xpm ) );
colorSubmenu->AddItem( ID_MENU3D_BGCOLOR_BOTTOM, _( "Background Bottom Color..." ), "",
setcolor_3d_bg_xpm, SELECTION_CONDITIONS::ShowAlways );
wxMenu * setBgColorMenu = new wxMenu;
AddMenuItem( setColorMenu, setBgColorMenu, ID_MENU3D_BGCOLOR,
_( "Background Color" ), KiBitmap( palette_xpm ) );
colorSubmenu->AddItem( ID_MENU3D_SILKSCREEN_COLOR, _( "Silkscreen Color..." ), "",
setcolor_silkscreen_xpm, SELECTION_CONDITIONS::ShowAlways );
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_TOP_SELECTION,
_( "Background Top Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
colorSubmenu->AddItem( ID_MENU3D_SOLDERMASK_COLOR, _( "Solder Mask Color..." ), "",
setcolor_soldermask_xpm, SELECTION_CONDITIONS::ShowAlways );
AddMenuItem( setBgColorMenu, ID_MENU3D_BGCOLOR_BOTTOM_SELECTION,
_( "Background Bottom Color..." ), KiBitmap( setcolor_3d_bg_xpm ) );
colorSubmenu->AddItem( ID_MENU3D_SOLDERPASTE_COLOR, _( "Solder Paste Color..." ), "",
setcolor_solderpaste_xpm, SELECTION_CONDITIONS::ShowAlways );
AddMenuItem( setColorMenu, ID_MENU3D_SILKSCREEN_COLOR_SELECTION,
_( "Silkscreen Color..." ), KiBitmap( setcolor_silkscreen_xpm ) );
colorSubmenu->AddItem( ID_MENU3D_COPPER_COLOR, _( "Copper/Surface Finish Color..." ), "",
setcolor_copper_xpm, SELECTION_CONDITIONS::ShowAlways );
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERMASK_COLOR_SELECTION,
_( "Solder Mask Color..." ), KiBitmap( setcolor_soldermask_xpm ) );
colorSubmenu->AddItem( ID_MENU3D_PCB_BODY_COLOR, _( "Board Body Color..." ), "",
setcolor_board_body_xpm, SELECTION_CONDITIONS::ShowAlways );
AddMenuItem( setColorMenu, ID_MENU3D_SOLDERPASTE_COLOR_SELECTION,
_( "Solder Paste Color..." ), KiBitmap( setcolor_solderpaste_xpm ) );
prefsMenu->AddMenu( colorSubmenu );
AddMenuItem( setColorMenu, ID_MENU3D_COPPER_COLOR_SELECTION,
_( "Copper/Surface Finish Color..." ), KiBitmap( setcolor_copper_xpm ) );
prefsMenu->AddCheckItem( ID_MENU3D_AXIS_ONOFF, _( "Show 3D &Axis" ), "",
axis3d_front_xpm, showAxesCondition );
AddMenuItem( setColorMenu, ID_MENU3D_PCB_BODY_COLOR_SELECTION,
_( "Board Body Color..." ), KiBitmap( setcolor_board_body_xpm ) );
// Grid submenu
CONDITIONAL_MENU* gridSubmenu = new CONDITIONAL_MENU( false, tool );
gridSubmenu->SetTitle( _( "3D Grid" ) );
gridSubmenu->SetIcon( grid_xpm );
AddMenuItem( prefsMenu, ID_MENU3D_AXIS_ONOFF,
_( "Show 3D &Axis" ), KiBitmap( axis3d_front_xpm ), wxITEM_CHECK );
auto noGridCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GridGet() == GRID3D_NONE;
};
auto grid10mmCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GridGet() == GRID3D_10MM;
};
auto grid5mmCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GridGet() == GRID3D_5MM;
};
auto grid2p5mmCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GridGet() == GRID3D_2P5MM;
};
auto grid_1mmCondition = [ this ] ( const SELECTION& aSel ) {
return m_settings.GridGet() == GRID3D_1MM;
};
gridSubmenu->AddCheckItem( ID_MENU3D_GRID_NOGRID, _( "No 3D Grid" ), "",
nullptr, noGridCondition );
gridSubmenu->AddCheckItem( ID_MENU3D_GRID_10_MM, _( "3D Grid 10mm" ), "",
nullptr, grid10mmCondition );
gridSubmenu->AddCheckItem( ID_MENU3D_GRID_5_MM, _( "3D Grid 5mm" ), "",
nullptr, grid5mmCondition );
gridSubmenu->AddCheckItem( ID_MENU3D_GRID_2P5_MM, _( "3D Grid 2.5mm" ), "",
nullptr, grid2p5mmCondition );
gridSubmenu->AddCheckItem( ID_MENU3D_GRID_1_MM, _( "3D Grid 1mm" ), "",
nullptr, grid_1mmCondition );
// Creates grid menu
// /////////////////////////////////////////////////////////////////////////
prefsMenu->AddMenu( gridSubmenu, SELECTION_CONDITIONS::ShowAlways );
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 );
prefsMenu->AddSeparator();
prefsMenu->AddItem( ID_MENU3D_RESET_DEFAULTS, _( "Reset to Default Settings" ), "",
tools_xpm, SELECTION_CONDITIONS::ShowAlways );
// 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 );
#ifdef __APPLE__ // Note: will get moved to Apple menu by wxWidgets
prefsMenu->AddItem( wxID_PREFERENCES,
_( "Preferences...\tCTRL+," ),
_( "Show preferences for all open tools" ),
preference_xpm, SELECTION_CONDITIONS::ShowAlways );
#endif
// Reset options
// /////////////////////////////////////////////////////////////////////////
prefsMenu->AppendSeparator();
prefsMenu->Resolve();
AddMenuItem( prefsMenu, ID_MENU3D_RESET_DEFAULTS,
_( "Reset to Default Settings" ),
KiBitmap( tools_xpm ) );
//-- Menubar -------------------------------------------------------------
//
menuBar->Append( fileMenu, _( "&File" ) );
menuBar->Append( editMenu, _( "&Edit" ) );
menuBar->Append( viewMenu, _( "&View" ) );
menuBar->Append( prefsMenu, _( "&Preferences" ) );
AddStandardHelpMenu( menuBar );
// 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..." ), GetHotkeyConfig(), 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 );
}
+242 -114
View File
@@ -22,21 +22,27 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file eda_3d_viewer.cpp
* @brief Implements a 3d viewer windows GUI
*/
#include "eda_3d_viewer.h"
#include "../3d_viewer_id.h"
#include "../common_ogl/cogl_att_list.h"
#include <3d_actions.h>
#include <bitmaps.h>
#include <dpi_scaling.h>
#include <gestfich.h>
#include <lru_cache.h>
#include <pgm_base.h>
#include <project.h>
#include <wildcards_and_files_ext.h>
#include <tool/tool_manager.h>
#include <tool/common_control.h>
#include <hotkeys_basic.h>
#include <wx/colordlg.h>
#include <wx/colourdata.h>
#include <wx/toolbar.h>
@@ -80,8 +86,11 @@ static const wxChar keyBoardBodyColor_Red[] = wxT( "BoardBodyColor_Red" );
static const wxChar keyBoardBodyColor_Green[] = wxT( "BoardBodyColor_Green" );
static const wxChar keyBoardBodyColor_Blue[] = wxT( "BoardBodyColor_Blue" );
static const wxChar keyMousewheelPanning[] = wxT( "MousewheelPAN3D" );
static const wxChar keyShowRealisticMode[] = wxT( "ShowRealisticMode" );
static const wxChar keyRenderEngine[] = wxT( "RenderEngine" );
//static const wxChar keyRenderTextures[] = wxT( "Render_Textures" );
static const wxChar keyRenderMaterial[] = wxT( "Render_Material" );
static const wxChar keyRenderOGL_ShowCopperTck[]= wxT( "Render_OGL_ShowCopperThickness" );
@@ -122,18 +131,27 @@ BEGIN_EVENT_TABLE( EDA_3D_VIEWER, EDA_BASE_FRAME )
EVT_TOOL( ID_TOOL_SET_VISIBLE_ITEMS, EDA_3D_VIEWER::Install3DViewOptionDialog )
EVT_MENU( wxID_CLOSE, EDA_3D_VIEWER::Exit3DFrame )
EVT_MENU( wxID_EXIT, EDA_3D_VIEWER::Exit3DFrame )
EVT_MENU( ID_RENDER_CURRENT_VIEW, EDA_3D_VIEWER::OnRenderEngineSelection )
EVT_MENU( ID_DISABLE_RAY_TRACING, EDA_3D_VIEWER::OnDisableRayTracing )
EVT_MENU_RANGE( ID_MENU3D_GRID, ID_MENU3D_GRID_END, EDA_3D_VIEWER::On3DGridSelection )
EVT_MENU( wxID_ABOUT, EDA_BASE_FRAME::GetKicadAbout )
EVT_CLOSE( EDA_3D_VIEWER::OnCloseWindow )
EVT_UPDATE_UI( ID_RENDER_CURRENT_VIEW, EDA_3D_VIEWER::OnUpdateUIEngine )
EVT_UPDATE_UI_RANGE( ID_MENU3D_FL_RENDER_MATERIAL_MODE_NORMAL,
ID_MENU3D_FL_RENDER_MATERIAL_MODE_CAD_MODE,
EDA_3D_VIEWER::OnUpdateUIMaterial )
EVT_UPDATE_UI_RANGE( ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS,
ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX,
EDA_3D_VIEWER::OnUpdateUIOpenGL )
EVT_UPDATE_UI_RANGE( ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS,
ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES,
EDA_3D_VIEWER::OnUpdateUIRayTracing )
EVT_CLOSE( EDA_3D_VIEWER::OnCloseWindow )
EVT_UPDATE_UI( ID_RENDER_CURRENT_VIEW, EDA_3D_VIEWER::OnUpdateUIEngine )
EVT_UPDATE_UI( ID_MENU3D_AXIS_ONOFF, EDA_3D_VIEWER::OnUpdateUIAxis )
END_EVENT_TABLE()
@@ -142,14 +160,12 @@ EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway, PCB_BASE_FRAME *aParent,
KIWAY_PLAYER( aKiway, aParent,
FRAME_PCB_DISPLAY3D, aTitle,
wxDefaultPosition, wxDefaultSize,
style, QUALIFIED_VIEWER3D_FRAMENAME( aParent ) )
style, VIEWER3D_FRAMENAME )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::EDA_3D_VIEWER %s", aTitle );
m_canvas = NULL;
m_disable_ray_tracing = false;
m_mainToolBar = nullptr;
m_AboutTitle = "3D Viewer";
// Give it an icon
wxIcon icon;
@@ -177,15 +193,6 @@ EDA_3D_VIEWER::EDA_3D_VIEWER( KIWAY *aKiway, PCB_BASE_FRAME *aParent,
// Some settings need the canvas
loadCommonSettings();
// Create the manager
m_toolManager = new TOOL_MANAGER;
m_toolManager->SetEnvironment( nullptr, nullptr, nullptr, this );
// Register tools
m_toolManager->RegisterTool( new COMMON_CONTROL );
m_actions = new EDA_3D_ACTIONS();
m_toolManager->InitTools();
CreateMenuBar();
ReCreateMainToolbar();
@@ -216,7 +223,7 @@ EDA_3D_VIEWER::~EDA_3D_VIEWER()
// m_canvas delete will be called by wxWidget manager
//delete m_canvas;
//m_canvas = nullptr;
//m_canvas = 0;
}
@@ -256,7 +263,7 @@ void EDA_3D_VIEWER::OnCloseWindow( wxCloseEvent &event )
// m_canvas delete will be called by wxWidget manager
//delete m_canvas;
//m_canvas = nullptr;
//m_canvas = 0;
Destroy();
event.Skip( true );
@@ -369,7 +376,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
takeScreenshot( event );
return;
case ID_MENU3D_BGCOLOR_BOTTOM:
case ID_MENU3D_BGCOLOR_BOTTOM_SELECTION:
if( Set3DColorFromUser( m_settings.m_BgColorBot, _( "Background Color, Bottom" ),
nullptr ) )
{
@@ -380,7 +387,7 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
}
return;
case ID_MENU3D_BGCOLOR_TOP:
case ID_MENU3D_BGCOLOR_TOP_SELECTION:
if( Set3DColorFromUser( m_settings.m_BgColorTop, _( "Background Color, Top" ), nullptr ) )
{
if( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY )
@@ -390,23 +397,23 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
}
return;
case ID_MENU3D_SILKSCREEN_COLOR:
case ID_MENU3D_SILKSCREEN_COLOR_SELECTION:
Set3DSilkScreenColorFromUser();
return;
case ID_MENU3D_SOLDERMASK_COLOR:
case ID_MENU3D_SOLDERMASK_COLOR_SELECTION:
Set3DSolderMaskColorFromUser();
return;
case ID_MENU3D_SOLDERPASTE_COLOR:
case ID_MENU3D_SOLDERPASTE_COLOR_SELECTION:
Set3DSolderPasteColorFromUser();
return;
case ID_MENU3D_COPPER_COLOR:
case ID_MENU3D_COPPER_COLOR_SELECTION:
Set3DCopperColorFromUser();
break;
case ID_MENU3D_PCB_BODY_COLOR:
case ID_MENU3D_PCB_BODY_COLOR_SELECTION:
Set3DBoardBodyColorFromUser();
break;
@@ -549,6 +556,12 @@ void EDA_3D_VIEWER::Process_Special_Functions( wxCommandEvent &event )
}
return;
case ID_MENU3D_HELP_HOTKEY_SHOW_CURRENT_LIST:
{
DisplayHotKeys();
}
return;
default:
wxFAIL_MSG( "Invalid event in EDA_3D_VIEWER::Process_Special_Functions()" );
return;
@@ -567,28 +580,29 @@ void EDA_3D_VIEWER::On3DGridSelection( wxCommandEvent &event )
switch( id )
{
case ID_MENU3D_GRID_NOGRID: m_settings.GridSet( GRID3D_NONE ); break;
case ID_MENU3D_GRID_10_MM: m_settings.GridSet( GRID3D_10MM ); break;
case ID_MENU3D_GRID_5_MM: m_settings.GridSet( GRID3D_5MM ); break;
case ID_MENU3D_GRID_2P5_MM: m_settings.GridSet( GRID3D_2P5MM ); break;
case ID_MENU3D_GRID_1_MM: m_settings.GridSet( GRID3D_1MM ); break;
case ID_MENU3D_GRID_NOGRID:
m_settings.GridSet( GRID3D_NONE );
break;
default: wxFAIL_MSG( "Invalid event in EDA_3D_VIEWER::On3DGridSelection()" );
}
case ID_MENU3D_GRID_10_MM:
m_settings.GridSet( GRID3D_10MM );
break;
int menu_ids[]
{
ID_MENU3D_GRID_NOGRID, ID_MENU3D_GRID_10_MM, ID_MENU3D_GRID_5_MM,
ID_MENU3D_GRID_2P5_MM, ID_MENU3D_GRID_1_MM
};
case ID_MENU3D_GRID_5_MM:
m_settings.GridSet( GRID3D_5MM );
break;
// Refresh checkmarks
wxMenuBar* menuBar = GetMenuBar();
case ID_MENU3D_GRID_2P5_MM:
m_settings.GridSet( GRID3D_2P5MM );
break;
for( int ii = 0; ii < 5; ii++ )
{
wxMenuItem* item = menuBar->FindItem( menu_ids[ii] );
item->Check( menu_ids[ii] == id );
case ID_MENU3D_GRID_1_MM:
m_settings.GridSet( GRID3D_1MM );
break;
default:
wxFAIL_MSG( "Invalid event in EDA_3D_VIEWER::On3DGridSelection()" );
return;
}
if( m_canvas )
@@ -627,11 +641,25 @@ void EDA_3D_VIEWER::ProcessZoom( wxCommandEvent &event )
switch( id )
{
case ID_ZOOM_PAGE: m_canvas->SetView3D( WXK_HOME ); break;
case ID_ZOOM_IN: m_canvas->SetView3D( WXK_F1 ); break;
case ID_ZOOM_OUT: m_canvas->SetView3D( WXK_F2 ); break;
case ID_ZOOM_REDRAW: m_canvas->Request_refresh(); break;
default: wxFAIL_MSG( "Invalid event in EDA_3D_VIEWER::ProcessZoom()" );
case ID_ZOOM_PAGE:
m_canvas->SetView3D( WXK_HOME );
break;
case ID_ZOOM_IN:
m_canvas->SetView3D( WXK_F1 );
break;
case ID_ZOOM_OUT:
m_canvas->SetView3D( WXK_F2 );
break;
case ID_ZOOM_REDRAW:
m_canvas->Request_refresh();
break;
default:
wxFAIL_MSG( "Invalid event in EDA_3D_VIEWER::ProcessZoom()" );
return;
}
m_canvas->DisplayStatus();
@@ -731,7 +759,7 @@ void EDA_3D_VIEWER::LoadSettings( wxConfigBase *aCfg )
aCfg->Read( keyRenderRAY_Shadows, &tmp, true );
m_settings.SetFlag( FL_RENDER_RAYTRACING_SHADOWS, tmp );
aCfg->Read( keyRenderRAY_Backfloor, &tmp, false );
aCfg->Read( keyRenderRAY_Backfloor, &tmp, true );
m_settings.SetFlag( FL_RENDER_RAYTRACING_BACKFLOOR, tmp );
aCfg->Read( keyRenderRAY_Refractions, &tmp, true );
@@ -874,12 +902,12 @@ void EDA_3D_VIEWER::SaveSettings( wxConfigBase *aCfg )
}
void EDA_3D_VIEWER::CommonSettingsChanged( bool aEnvVarsChanged )
void EDA_3D_VIEWER::CommonSettingsChanged()
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::CommonSettingsChanged" );
// Regen menu bars, etc
EDA_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged );
EDA_BASE_FRAME::CommonSettingsChanged();
// There is no base class that handles toolbars for this frame
ReCreateMainToolbar();
@@ -890,6 +918,20 @@ void EDA_3D_VIEWER::CommonSettingsChanged( bool aEnvVarsChanged )
}
void EDA_3D_VIEWER::OnLeftClick( wxDC *DC, const wxPoint &MousePos )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::OnLeftClick" );
// Do nothing
}
void EDA_3D_VIEWER::OnRightClick( const wxPoint &MousePos, wxMenu *PopMenu )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::OnRightClick" );
// Do nothing
}
void EDA_3D_VIEWER::OnKeyEvent( wxKeyEvent& event )
{
if( m_canvas )
@@ -899,6 +941,13 @@ void EDA_3D_VIEWER::OnKeyEvent( wxKeyEvent& event )
}
void EDA_3D_VIEWER::RedrawActiveWindow( wxDC *DC, bool EraseBg )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::RedrawActiveWindow" );
// Do nothing
}
void EDA_3D_VIEWER::takeScreenshot( wxCommandEvent& event )
{
wxString fullFileName;
@@ -1015,118 +1064,129 @@ bool EDA_3D_VIEWER::Set3DColorFromUser( SFVEC3D &aColor, const wxString& aTitle,
bool EDA_3D_VIEWER::Set3DSilkScreenColorFromUser()
{
CUSTOM_COLORS_LIST colors;
CUSTOM_COLORS_LIST definedColors;
definedColors.push_back( CUSTOM_COLOR_ITEM( 241.0/255.0, 241.0/255.0, 241.0/255.0, "White" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 4.0/255.0, 18.0/255.0, 21.0/255.0, "Dark" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 241.0/255.0, 241.0/255.0, 241.0/255.0, "White" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 4.0/255.0, 18.0/255.0, 21.0/255.0, "Dark" ) );
bool change = Set3DColorFromUser( m_settings.m_SilkScreenColor,
_( "Solder Mask Color" ), &definedColors );
if( Set3DColorFromUser( m_settings.m_SilkScreenColor, _( "Silkscreen Color" ), &colors ) )
{
if( change )
NewDisplay( true );
return true;
}
return false;
return change;
}
bool EDA_3D_VIEWER::Set3DSolderMaskColorFromUser()
{
CUSTOM_COLORS_LIST colors;
CUSTOM_COLORS_LIST definedColors;
colors.push_back( CUSTOM_COLOR_ITEM( 20/255.0, 51/255.0, 36/255.0, "Green" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 91/255.0, 168/255.0, 12/255.0, "Light Green" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 13/255.0, 104/255.0, 11/255.0, "Saturated Green" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 181/255.0, 19/255.0, 21/255.0, "Red" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 239/255.0, 53/255.0, 41/255.0, "Red Light Orange" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 210/255.0, 40/255.0, 14/255.0, "Red 2" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 2/255.0, 59/255.0, 162/255.0, "Blue" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 54/255.0, 79/255.0, 116/255.0, "Light blue 1" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 61/255.0, 85/255.0, 130/255.0, "Light blue 2" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 21/255.0, 70/255.0, 80/255.0, "Green blue (dark)" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 11/255.0, 11/255.0, 11/255.0, "Black" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 245/255.0, 245/255.0, 245/255.0, "White" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 119/255.0, 31/255.0, 91/255.0, "Purple" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 32/255.0, 2/255.0, 53/255.0, "Purple Dark" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 20/255.0, 51/255.0, 36/255.0, "Green" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 91/255.0, 168/255.0, 12/255.0, "Light Green" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 13/255.0, 104/255.0, 11/255.0,
"Saturated Green" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 181/255.0, 19/255.0, 21/255.0, "Red" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 239/255.0, 53/255.0, 41/255.0,
"Red Light Orange" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 210/255.0, 40/255.0, 14/255.0, "Red 2" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 2/255.0, 59/255.0, 162/255.0, "Blue" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 54/255.0, 79/255.0, 116/255.0, "Light blue 1" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 61/255.0, 85/255.0, 130/255.0, "Light blue 2" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 21/255.0, 70/255.0, 80/255.0,
"Green blue (dark)" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 11/255.0, 11/255.0, 11/255.0, "Black" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 245/255.0, 245/255.0, 245/255.0, "White" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 119/255.0, 31/255.0, 91/255.0, "Purple" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 32/255.0, 2/255.0, 53/255.0, "Purple Dark" ) );
if( Set3DColorFromUser( m_settings.m_SolderMaskColor, _( "Solder Mask Color" ), &colors ) )
{
bool change = Set3DColorFromUser( m_settings.m_SolderMaskColor,
_( "Solder Mask Color" ),
&definedColors );
if( change )
NewDisplay( true );
return true;
}
return false;
return change;
}
bool EDA_3D_VIEWER::Set3DCopperColorFromUser()
{
CUSTOM_COLORS_LIST colors;
CUSTOM_COLORS_LIST definedColors;
colors.push_back( CUSTOM_COLOR_ITEM( 184/255.0, 115/255.0, 50/255.0, "Copper" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 178/255.0, 156/255.0, 0.0, "Gold" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 213/255.0, 213/255.0, 213/255.0, "Silver" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 160/255.0, 160/255.0, 160/255.0, "Tin" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 184/255.0, 115/255.0, 50/255.0, "Copper" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 178/255.0, 156/255.0, 0.0, "Gold" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 213/255.0, 213/255.0, 213/255.0, "Silver" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 160/255.0, 160/255.0, 160/255.0, "Tin" ) );
if( Set3DColorFromUser( m_settings.m_CopperColor, _( "Copper Color" ), &colors ) )
{
bool change = Set3DColorFromUser( m_settings.m_CopperColor, _( "Copper Color" ),
&definedColors );
if( change )
NewDisplay( true );
return true;
}
return false;
return change;
}
bool EDA_3D_VIEWER::Set3DBoardBodyColorFromUser()
{
CUSTOM_COLORS_LIST colors;
CUSTOM_COLORS_LIST definedColors;
colors.push_back( CUSTOM_COLOR_ITEM( 51/255.0, 43/255.0, 22/255.0, "FR4 natural, dark" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 109/255.0, 116/255.0, 75/255.0, "FR4 natural" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 78/255.0, 14/255.0, 5/255.0, "brown/red" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 146/255.0, 99/255.0, 47/255.0, "brown 1" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 160/255.0, 123/255.0, 54/255.0, "brown 2" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 146/255.0, 99/255.0, 47/255.0, "brown 3" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 63/255.0, 126/255.0, 71/255.0, "green 1" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 117/255.0, 122/255.0, 90/255.0, "green 2" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 51/255.0, 43/255.0, 22/255.0,
"FR4 natural, dark" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 109/255.0, 116/255.0, 75/255.0, "FR4 natural" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 78/255.0, 14/255.0, 5/255.0, "brown/red" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 146/255.0, 99/255.0, 47/255.0, "brown 1" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 160/255.0, 123/255.0, 54/255.0, "brown 2" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 146/255.0, 99/255.0, 47/255.0, "brown 3" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 63/255.0, 126/255.0, 71/255.0, "green 1" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 117/255.0, 122/255.0, 90/255.0, "green 2" ) );
if( Set3DColorFromUser( m_settings.m_BoardBodyColor, _( "Board Body Color" ), &colors ) )
{
bool change = Set3DColorFromUser( m_settings.m_BoardBodyColor, _( "Board Body Color" ),
&definedColors );
if( change )
NewDisplay( true );
return true;
}
return false;
return change;
}
bool EDA_3D_VIEWER::Set3DSolderPasteColorFromUser()
{
CUSTOM_COLORS_LIST colors;
CUSTOM_COLORS_LIST definedColors;
colors.push_back( CUSTOM_COLOR_ITEM( 128/255.0, 128/255.0, 128/255.0, "grey" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 213/255.0, 213/255.0, 213/255.0, "Silver" ) );
colors.push_back( CUSTOM_COLOR_ITEM( 90/255.0, 90/255.0, 90/255.0, "grey 2" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 128/255.0, 128/255.0, 128/255.0, "grey" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 213/255.0, 213/255.0, 213/255.0, "Silver" ) );
definedColors.push_back( CUSTOM_COLOR_ITEM( 90/255.0, 90/255.0, 90/255.0, "grey 2" ) );
if( Set3DColorFromUser( m_settings.m_SolderPasteColor, _( "Solder Paste Color" ), &colors ) )
{
bool change = Set3DColorFromUser( m_settings.m_SolderPasteColor,
_( "Solder Paste Color" ), &definedColors );
if( change )
NewDisplay( true );
return true;
}
return false;
return change;
}
void EDA_3D_VIEWER::OnUpdateUIEngine( wxUpdateUIEvent& aEvent )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::OnUpdateUIEngine %s %s",
( !m_disable_ray_tracing ) ? "enable" : "disable",
( m_settings.RenderEngineGet() == RENDER_ENGINE_RAYTRACING ) ?
"Ray Trace" : "OpenGL Legacy" );
aEvent.Enable( !m_disable_ray_tracing );
aEvent.Check( m_settings.RenderEngineGet() != RENDER_ENGINE_OPENGL_LEGACY );
}
void EDA_3D_VIEWER::OnUpdateUIMaterial( wxUpdateUIEvent& aEvent )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::OnUpdateUIMaterial() id %d", aEvent.GetId() );
// Set the state of toggle menus according to the current display options
switch( aEvent.GetId() )
{
@@ -1148,6 +1208,74 @@ void EDA_3D_VIEWER::OnUpdateUIMaterial( wxUpdateUIEvent& aEvent )
}
void EDA_3D_VIEWER::OnUpdateUIOpenGL( wxUpdateUIEvent& aEvent )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::OnUpdateUIOpenGL() id %d", aEvent.GetId() );
// OpenGL
switch( aEvent.GetId() )
{
case ID_MENU3D_FL_OPENGL_RENDER_COPPER_THICKNESS:
aEvent.Check( m_settings.GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) );
break;
case ID_MENU3D_FL_OPENGL_RENDER_SHOW_MODEL_BBOX:
aEvent.Check( m_settings.GetFlag( FL_RENDER_OPENGL_SHOW_MODEL_BBOX ) );
break;
default:
wxFAIL_MSG( "Invalid event in EDA_3D_VIEWER::OnUpdateUIOpenGL()" );
}
}
void EDA_3D_VIEWER::OnUpdateUIRayTracing( wxUpdateUIEvent& aEvent )
{
wxLogTrace( m_logTrace, "EDA_3D_VIEWER::OnUpdateUIRayTracing() id %d", aEvent.GetId() );
// Raytracing
switch( aEvent.GetId() )
{
case ID_MENU3D_FL_RAYTRACING_RENDER_SHADOWS:
aEvent.Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_SHADOWS ) );
break;
case ID_MENU3D_FL_RAYTRACING_BACKFLOOR:
aEvent.Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_BACKFLOOR ) );
break;
case ID_MENU3D_FL_RAYTRACING_REFRACTIONS:
aEvent.Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFRACTIONS ) );
break;
case ID_MENU3D_FL_RAYTRACING_REFLECTIONS:
aEvent.Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_REFLECTIONS ) );
break;
case ID_MENU3D_FL_RAYTRACING_POST_PROCESSING:
aEvent.Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_POST_PROCESSING ) );
break;
case ID_MENU3D_FL_RAYTRACING_ANTI_ALIASING:
aEvent.Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_ANTI_ALIASING ) );
break;
case ID_MENU3D_FL_RAYTRACING_PROCEDURAL_TEXTURES:
aEvent.Check( m_settings.GetFlag( FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES ) );
break;
default:
wxFAIL_MSG( "Invalid event in EDA_3D_VIEWER::OnUpdateUIMaterial()" );
}
}
void EDA_3D_VIEWER::OnUpdateUIAxis( wxUpdateUIEvent& aEvent )
{
aEvent.Check( m_settings.GetFlag( FL_AXIS ) );
}
void EDA_3D_VIEWER::loadCommonSettings()
{
wxCHECK_RET( m_canvas, "Cannot load settings to null canvas" );
+51 -16
View File
@@ -39,16 +39,9 @@
#include <../common/dialogs/dialog_color_picker.h> // for CUSTOM_COLORS_LIST definition
/// A variable name whose value holds the path of 3D shape files.
/// Currently an environment variable, eventually a project variable.
#define KISYS3DMOD wxT( "KISYS3DMOD" )
#define KICAD_DEFAULT_3D_DRAWFRAME_STYLE (wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS)
#define VIEWER3D_FRAMENAME wxT( "Viewer3DFrameName" )
#define QUALIFIED_VIEWER3D_FRAMENAME( parent ) \
( wxString( VIEWER3D_FRAMENAME ) + wxT( ":" ) + parent->GetName() )
/**
* Create and handle a window for the 3d viewer connected to a Kiway and a pcbboard
@@ -90,11 +83,30 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
*/
void NewDisplay( bool aForceImmediateRedraw = false );
/**
* Set the default file name (eg: to be suggested to a screenshot)
* @param aFn = file name to assign
*/
void SetDefaultFileName( const wxString& aFn )
{
m_defaultSaveScreenshotFileName = aFn;
}
/**
* @return the default suggested file name
*/
const wxFileName& GetDefaultFileName() const { return m_defaultSaveScreenshotFileName; }
/**
* @return current settings
*/
CINFO3D_VISU &GetSettings() { return m_settings; }
/**
* Return a structure containing currently used hotkey mapping.
*/
EDA_HOTKEY_CONFIG* GetHotkeyConfig() const;
/**
* Get a SFVEC3D from a wx colour dialog
* @param aColor is the SFVEC3D to change
@@ -149,7 +161,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
* need to do this manually from the PCB frame because the 3D viewer isn't
* updated via the #KIWAY.
*/
void CommonSettingsChanged( bool aEnvVarsChanged ) override;
void CommonSettingsChanged() override;
private:
/// Called when user press the File->Exit
@@ -164,6 +176,12 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
void OnRenderEngineSelection( wxCommandEvent &event );
void OnDisableRayTracing( wxCommandEvent& aEvent );
void OnUpdateUIEngine( wxUpdateUIEvent& aEvent );
void OnUpdateUIMaterial( wxUpdateUIEvent& aEvent );
void OnUpdateUIOpenGL( wxUpdateUIEvent& aEvent );
void OnUpdateUIRayTracing( wxUpdateUIEvent& aEvent );
void OnUpdateUIAxis( wxUpdateUIEvent& aEvent );
void ProcessZoom( wxCommandEvent &event );
void OnActivate( wxActivateEvent &event );
@@ -172,22 +190,30 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
void Install3DViewOptionDialog( wxCommandEvent &event );
void OnUpdateUIEngine( wxUpdateUIEvent& aEvent );
void OnUpdateUIMaterial( wxUpdateUIEvent& aEvent );
void CreateMenuBar();
void DisplayHotKeys()
{
DisplayHotkeyList( this, GetHotkeyConfig() );
}
/**
* Equivalent of EDA_DRAW_FRAME::ReCreateHToolbar
*/
void ReCreateMainToolbar();
void SetToolbars();
void SaveSettings( wxConfigBase *aCfg ) override;
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 );
/**
* Create a Screenshot of the current 3D view.
* Output file format is png or jpeg, or image is copied to the clipboard
@@ -208,13 +234,22 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
*/
void loadCommonSettings();
wxFileName m_defaultSaveScreenshotFileName;
/**
* Filename to propose for save a screenshot
*/
wxFileName m_defaultSaveScreenshotFileName;
wxAuiToolBar* m_mainToolBar;
EDA_3D_CANVAS* m_canvas;
CINFO3D_VISU m_settings;
/**
* The canvas where the openGL context will be rendered
*/
EDA_3D_CANVAS *m_canvas;
bool m_disable_ray_tracing;
/**
* Store all the settings and options to be used by the renders
*/
CINFO3D_VISU m_settings;
bool m_disable_ray_tracing;
/**
* Trace mask used to enable or disable the trace output of this class.
+105
View File
@@ -0,0 +1,105 @@
/*
* 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( "List Hotkeys" ), 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)
static struct EDA_HOTKEY_CONFIG s_3DViewer_Hotkeys_Descr[] =
{
{ &g_CommonSectionTag, viewer3d_Hotkey_List, &viewer3DSectionTitle },
{ NULL, NULL, NULL }
};
EDA_HOTKEY_CONFIG* EDA_3D_VIEWER::GetHotkeyConfig() const
{
return s_3DViewer_Hotkeys_Descr;
}
EDA_HOTKEY_CONFIG* EDA_3D_CANVAS::GetHotkeyConfig() const
{
return s_3DViewer_Hotkeys_Descr;
}
+9 -7
View File
@@ -32,13 +32,13 @@ enum id_3dview_frm
ID_ORTHO,
ID_MENU3D_COLOR,
ID_MENU3D_BGCOLOR,
ID_MENU3D_BGCOLOR_BOTTOM,
ID_MENU3D_BGCOLOR_TOP,
ID_MENU3D_SILKSCREEN_COLOR,
ID_MENU3D_SOLDERMASK_COLOR,
ID_MENU3D_SOLDERPASTE_COLOR,
ID_MENU3D_PCB_BODY_COLOR,
ID_MENU3D_COPPER_COLOR,
ID_MENU3D_BGCOLOR_BOTTOM_SELECTION,
ID_MENU3D_BGCOLOR_TOP_SELECTION,
ID_MENU3D_SILKSCREEN_COLOR_SELECTION,
ID_MENU3D_SOLDERMASK_COLOR_SELECTION,
ID_MENU3D_SOLDERPASTE_COLOR_SELECTION,
ID_MENU3D_PCB_BODY_COLOR_SELECTION,
ID_MENU3D_COPPER_COLOR_SELECTION,
ID_MENU3D_AXIS_ONOFF,
ID_MENU3D_MODULE_ONOFF,
@@ -85,6 +85,8 @@ enum id_3dview_frm
ID_MENU3D_RESET_DEFAULTS,
// Help
ID_MENU3D_HELP_HOTKEY_SHOW_CURRENT_LIST,
ID_MENU_COMMAND_END,
ID_RENDER_CURRENT_VIEW,
+2 -1
View File
@@ -6,6 +6,7 @@ configure_file( 3d_plugin_dir.h.in 3d_plugin_dir.h @ONLY )
include_directories(BEFORE ${INC_BEFORE})
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
../include/legacy_wx
../pcbnew
3d_canvas
3d_cache
@@ -87,8 +88,8 @@ set(3D-VIEWER_SRCS
3d_rendering/cpostshader.cpp
3d_rendering/cpostshader_ssao.cpp
3d_rendering/ctrack_ball.cpp
3d_viewer/3d_actions.cpp
3d_viewer/3d_menubar.cpp
3d_viewer/hotkeys.cpp
3d_rendering/test_cases.cpp
3d_rendering/trackball.cpp
3d_viewer/3d_toolbar.cpp
-1
View File
@@ -75,7 +75,6 @@ Spanish (ES) Pedro Martin del Valle <pkicad[at]yahoo-dot-es>
Spanish (ES) Iñigo Zuluaga <inigo_zuluaga[at]yahoo-dot-es>
German (DE) Rafael Sokolowski <Rafael.Sokolowski[at]web-dot-de
Japanese (JA) Kenta Yonekura <yoneken[at]kicad-dot-jp>
Simplified Chinese (zh_CN) taotieren <admin[at]taotieren-dot-com>
Remy Halvick, David Briscoe, Dominique Laigle, Paul Burke
+75 -143
View File
@@ -21,7 +21,7 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
cmake_minimum_required( VERSION 3.0.2 FATAL_ERROR )
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
@@ -60,6 +60,12 @@ option( BUILD_SMALL_DEBUG_FILES "In debug build: create smaller binaries." OFF )
# so that build option settings can be included in bug reports.
#
option( USE_WX_GRAPHICS_CONTEXT
"Use wxGraphicsContext for rendering (default OFF). Warning, this is experimental" )
option( USE_WX_OVERLAY
"Use wxOverlay: Always ON for MAC and GTK3 (default OFF)." )
option( KICAD_SCRIPTING
"Build the Python scripting support inside KiCad binaries (default ON)."
ON )
@@ -96,79 +102,41 @@ option( KICAD_INSTALL_DEMOS
"Install KiCad demos and examples (default ON)"
ON )
option( KICAD_BUILD_QA_TESTS
"Build software Quality assurance unit tests (default ON)"
ON )
option( BUILD_GITHUB_PLUGIN
"Build the GITHUB_PLUGIN for pcbnew."
ON )
option( KICAD_SPICE
"Build KiCad with internal Spice simulator."
ON )
# Not supported by all platforms (for instance mingw)
option( KICAD_SANITIZE
"Build KiCad with sanitizer options. WARNING: Not compatible with gold linker"
OFF )
option( KICAD_STDLIB_DEBUG
"Build KiCad with libstdc++ debug flags enabled."
OFF )
option( KICAD_STDLIB_LIGHT_DEBUG
"Build KiCad with libstdc++ with -Wp,-D_GLIBCXX_ASSERTIONS flag enabled. Not as intrusive as KICAD_STDLIB_DEBUG"
OFF )
option( KICAD_BUILD_PARALLEL_CL_MP
"Build in parallel using the /MP compiler option (default OFF for safety reasons)"
OFF )
option( KICAD_USE_VALGRIND
"Build KiCad with valgrind stack tracking enabled."
OFF )
# when option KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES is enabled:
# PYTHON_EXECUTABLE can be defined when invoking cmake
# ( use -DPYTHON_EXECUTABLE=<python path>/python.exe or python2 )
# when not defined by user, the default is python.exe under Windows and python2 for others
# python binary file should be in exec path.
# KICAD_SCRIPTING controls the entire python scripting system. If it is off, no other scripting
# functions are available.
if ( NOT KICAD_SCRIPTING )
message( STATUS "KICAD_SCRIPTING is OFF: Disabling all python scripting support" )
set( KICAD_SCRIPTING_MODULES OFF )
set( KICAD_SCRIPTING_ACTION_MENU OFF )
set( KICAD_SCRIPTING_PYTHON3 OFF )
set( KICAD_SCRIPTING_WXPYTHON OFF )
set( KICAD_SCRIPTING_WXPYTHON_PHOENIX OFF)
# KICAD_SCRIPTING_MODULES requires KICAD_SCRIPTING enable it here if KICAD_SCRIPTING_MODULES is ON
if ( KICAD_SCRIPTING_MODULES AND NOT KICAD_SCRIPTING )
message(STATUS "Changing KICAD_SCRIPTING to ON as needed by KICAD_SCRIPTING_MODULES")
set ( KICAD_SCRIPTING ON )
endif()
# KICAD_SCRIPTING_WXPYTHON_PHOENIX requires enabling the KICAD_SCRIPTING_WXPYTHON flag
# so that the wxWidgets library is properly versioned
if ( KICAD_SCRIPTING AND NOT KICAD_SCRIPTING_WXPYTHON AND KICAD_SCRIPTING_WXPYTHON_PHOENIX )
message( STATUS
"KICAD_SCRIPTING_WXPYTHON_PHOENIX has been requested, setting KICAD_SCRIPTING_WXPYTHON to ON")
set( KICAD_SCRIPTING_WXPYTHON ON)
# same with KICAD_SCRIPTING_ACTION_MENUS
if ( KICAD_SCRIPTING_ACTION_MENU AND NOT KICAD_SCRIPTING )
message(STATUS "Changing KICAD_SCRIPTING to ON as needed by KICAD_SCRIPTING_ACTION_MENU")
set ( KICAD_SCRIPTING ON )
endif()
option( BUILD_GITHUB_PLUGIN "Build the GITHUB_PLUGIN for pcbnew." ON )
option( KICAD_SPICE "Build KiCad with internal Spice simulator." ON )
# Global setting: exports are explicit
set( CMAKE_CXX_VISIBILITY_PRESET "hidden" )
set( CMAKE_VISIBILITY_INLINES_HIDDEN ON )
# Global setting: build everything position independent
set( CMAKE_POSITION_INDEPENDENT_CODE ON )
# Global setting: Use C++14
set(CMAKE_CXX_STANDARD 14)
# Global setting: Use C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Enable additional valgrind instrumentation for stack tracking in libcontext
if( KICAD_USE_VALGRIND )
add_definitions( -DKICAD_USE_VALGRIND )
endif()
# CMP0063: CMake < 3.3 does not handle hidden visibility for static libraries,
# and 3.3 is backwards compatible when the minimum version is smaller than 3.3.
@@ -192,9 +160,12 @@ endif()
# Add option to add user directories for linker, if any
LINK_DIRECTORIES( ${LINK_DIRECTORIES_PATH} )
set( KICAD_CONFIG_DIR "kicad" CACHE STRING "Location of user specific KiCad config files" )
mark_as_advanced( KICAD_CONFIG_DIR )
add_definitions( -DKICAD_CONFIG_DIR=${KICAD_CONFIG_DIR} )
if( UNIX )
set( KICAD_USER_CONFIG_DIR $ENV{HOME} CACHE PATH "Location of user specific KiCad config files" )
elseif( MINGW )
set( KICAD_USER_CONFIG_DIR $ENV{APPDATA} CACHE PATH "Location of user specific KiCad config files" )
endif()
mark_as_advanced( KICAD_USER_CONFIG_DIR )
# Set default data file path to CMAKE_INSTALL_PREFIX if it wasn't specified during the
# CMake configuration. The value of DEFAULT_INSTALL_PATH is expanded in config.h and
@@ -222,12 +193,12 @@ endif()
if( CMAKE_VERSION VERSION_LESS 3.1 AND ( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) )
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=gnu++14" COMPILER_SUPPORTS_CXX14)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
if(COMPILER_SUPPORTS_CXX14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++14 support. Please use a different C++ compiler.")
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
endif()
@@ -270,10 +241,6 @@ if( WIN32 )
# define UNICODE and_UNICODE definition on Windows. KiCad uses unicode.
# Both definitions are required
add_definitions(-DUNICODE -D_UNICODE)
# In fully standards-compliant mode, M_PI et al. are defined only if
# _USE_MATH_DEFINES is set.
add_definitions( -D_USE_MATH_DEFINES )
endif()
@@ -343,21 +310,6 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
set( CMAKE_CXX_FLAGS_DEBUG "-g3 -ggdb3 -DDEBUG -Wno-deprecated-declarations" )
endif()
if( KICAD_SANITIZE )
add_definitions( -DKICAD_SANITIZE )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_SANITIZE_VECTOR -fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer" )
endif()
if( KICAD_STDLIB_DEBUG )
add_definitions( -DKICAD_STDLIB_DEBUG )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG" )
elseif( KICAD_STDLIB_LIGHT_DEBUG )
# useless if KICAD_STDLIB_DEBUG is ON.
# this option makes some controls to trap out of bound memory access.
add_definitions( -DKICAD_STDLIB_LIGHT_DEBUG )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wp,-D_GLIBCXX_ASSERTIONS" )
endif()
if( MINGW )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" )
@@ -388,11 +340,17 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
elseif( NOT APPLE )
# Thou shalt not link vaporware and tell us it's a valid DSO (apple ld doesn't support it)
# temporarily disabled due to breaking ASAN-enabled builds - Tom
# set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
# set( CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined" )
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
set( CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "-s" )
# Defeat ELF's ability to use the GOT to replace locally implemented functions
# with ones from another module.
# https://bugs.launchpad.net/kicad/+bug/1322354
set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic" )
set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-Bsymbolic" )
endif()
if( APPLE )
@@ -401,36 +359,8 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
endif( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
if( MSVC )
# Disallow implicit linking for Boost
add_definitions( -DBOOST_ALL_NO_LIB )
# Disable MSVC's deprecation warnings
add_definitions( -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS )
# Hide Windows's min() and max() macros
add_definitions( -DNOMINMAX )
# source and execution charset are UTF-8
string( APPEND CMAKE_CXX_FLAGS " /utf-8" )
# C4290: throw() is interpreted as declspec(nothrow)
string( APPEND CMAKE_CXX_FLAGS " /wd4290" )
# C4800: non-bool is explicitly cast to bool, forcing value of 0 or 1
string( APPEND CMAKE_CXX_FLAGS " /wd4800" )
# /Zi: create PDB
string( APPEND CMAKE_CXX_FLAGS " /Zi" )
# /GF: enable string pooling
string( APPEND CMAKE_CXX_FLAGS_RELEASE " /GF" )
foreach( type EXE SHARED MODULE)
# /DEBUG: create PDB
string( APPEND CMAKE_${type}_LINKER_FLAGS " /DEBUG" )
# /OPT:REF: omit unreferenced code
string( APPEND CMAKE_${type}_LINKER_FLAGS_RELEASE " /OPT:REF" )
# /OPT:ICF: fold common data
string( APPEND CMAKE_${type}_LINKER_FLAGS_RELEASE " /OPT:ICF" )
endforeach()
# Let cl.exe parallelize builds
if( KICAD_BUILD_PARALLEL_CL_MP )
string( APPEND CMAKE_CXX_FLAGS " /MP" )
endif()
if( USE_WX_OVERLAY OR APPLE )
add_definitions( -DUSE_WX_OVERLAY )
endif()
if( KICAD_SCRIPTING )
@@ -475,6 +405,10 @@ if( KICAD_USE_CUSTOM_PADS )
add_definitions( -DKICAD_USE_CUSTOM_PADS )
endif()
if( USE_WX_GRAPHICS_CONTEXT OR APPLE )
add_definitions( -DUSE_WX_GRAPHICS_CONTEXT )
endif()
# KIFACE_SUFFIX is the file extension used for top level program modules which
# implement the KIFACE interface. A valid suffix starts with a period '.'.
@@ -636,6 +570,11 @@ endif()
# Find GLM library, required
#
find_package( GLM 0.9.5.1 REQUIRED )
if( GLM_VERSION MATCHES "0.9.9.3" AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
MESSAGE( FATAL_ERROR "\nGLM version ${GLM_VERSION} is incompatible with KiCad using GCC.\n"
"Please downgrade to GLM version 0.9.9.2 or older or use clang instead" )
endif()
add_definitions( -DGLM_FORCE_CTOR_INIT )
#
@@ -658,9 +597,16 @@ find_package( Boost 1.54.0 REQUIRED )
# Include MinGW resource compiler.
include( MinGWResourceCompiler )
# Find GDI+ on windows if wxGraphicsContext is available, and only link gdiplus library
# if wxGraphicsContext not used, because the cairo printing system uses this library
if( WIN32 )
# we need the gdiplus library for cairo printing on windows
set( GDI_PLUS_LIBRARIES gdiplus )
if( USE_WX_GRAPHICS_CONTEXT )
find_package( GdiPlus )
check_find_package_result( GDI_PLUS_FOUND "GDI+" )
else()
# if WX_GRAPHICS_CONTEXT is not used we just need the gdiplus library for cairo printing
set( GDI_PLUS_LIBRARIES gdiplus )
endif()
endif()
# Find ngspice library, required for integrated circuit simulator
@@ -709,9 +655,8 @@ set( INC_AFTER
${CMAKE_BINARY_DIR}
)
#
# Find Python and other scripting resources
#
if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES )
# SWIG 3.0 or later require for C++11 support.
@@ -769,36 +714,19 @@ if( KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES )
find_package( PythonLibs 2.6 REQUIRED )
endif()
if( KICAD_SCRIPTING_WXPYTHON )
find_package( wxPython REQUIRED )
message( STATUS "Found ${WXPYTHON_FLAVOR} "
"${WXPYTHON_VERSION}/${WXPYTHON_TOOLKIT} "
"(wxWidgets ${WXPYTHON_WXVERSION})" )
endif()
# Infrequently needed headers go at end of search paths, append to INC_AFTER which
# although is used for all components, should be a harmless hit for something like eeschema
# so long as unused search paths are at the end like this.
set( INC_AFTER ${INC_AFTER} ${PYTHON_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/scripting )
endif()
# Find the wxPython installation if requested
if( KICAD_SCRIPTING_WXPYTHON )
find_package( wxPython REQUIRED )
if( KICAD_SCRIPTING_WXPYTHON_PHOENIX AND WXPYTHON_VERSION VERSION_LESS 4.0.0 )
message( FATAL_ERROR
"Unable to find wxPython Phoenix,"
" instead found wxPython Classic ${WXPYTHON_VERSION}" )
endif()
# The test VERSION_GREATER_EQUAL is only available in cmake >3.7, so use the max possible
# version for the 3.0 line as the basis of the comparison
if( NOT KICAD_SCRIPTING_WXPYTHON_PHOENIX AND WXPYTHON_VERSION VERSION_GREATER 3.9.999 )
message( FATAL_ERROR
"Unable to find wxPython Classic,"
" instead found wxPython Phoenix ${WXPYTHON_VERSION}" )
endif()
message( STATUS "Found ${WXPYTHON_FLAVOR} "
"${WXPYTHON_VERSION}/${WXPYTHON_TOOLKIT} "
"(wxWidgets ${WXPYTHON_WXVERSION})" )
endif()
#
# Find wxWidgets library, required
#
@@ -836,6 +764,11 @@ find_package( wxWidgets ${wxWidgets_REQ_VERSION} COMPONENTS gl aui adv html core
# Include wxWidgets macros.
include( ${wxWidgets_USE_FILE} )
# Check for GTK3 libraries - These do not have XOR, so we need overlay (Page layout editor)
if( wxWidgets_LIBRARIES MATCHES "gtk3" )
add_definitions( -DUSE_WX_OVERLAY )
endif()
if( KICAD_SCRIPTING_WXPYTHON AND NOT KICAD_SCRIPTING_WXPYTHON_PHOENIX )
# wxPython appears to be installed and valid so make sure the headers are available.
foreach( path ${wxWidgets_INCLUDE_DIRS} )
@@ -1006,7 +939,6 @@ endif()
# Binaries ( CMake targets )
add_subdirectory( bitmaps_png )
add_subdirectory( libs )
add_subdirectory( common )
add_subdirectory( 3d-viewer )
add_subdirectory( cvpcb )
+342
View File
@@ -0,0 +1,342 @@
#.rst:
# FindOpenSSL
# -----------
#
# Try to find the OpenSSL encryption library
#
# Once done this will define
#
# ::
#
# OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
#
#
#
# Read-Only variables:
#
# ::
#
# OPENSSL_FOUND - system has the OpenSSL library
# OPENSSL_INCLUDE_DIR - the OpenSSL include directory
# OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
# OPENSSL_VERSION - This is set to $major.$minor.$revision$path (eg. 0.9.8s)
#=============================================================================
# Copyright 2006-2009 Kitware, Inc.
# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
# Copyright 2009-2011 Mathieu Malaterre <mathieu.malaterre@gmail.com>
#
# 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.)
if (UNIX)
find_package(PkgConfig QUIET)
pkg_check_modules(_OPENSSL QUIET openssl)
endif ()
if (WIN32)
# http://www.slproweb.com/products/Win32OpenSSL.html
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
ENV OPENSSL_ROOT_DIR
)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
set(_OPENSSL_ROOT_PATHS
"${_programfiles}/OpenSSL"
"${_programfiles}/OpenSSL-Win32"
"${_programfiles}/OpenSSL-Win64"
"C:/OpenSSL/"
"C:/OpenSSL-Win32/"
"C:/OpenSSL-Win64/"
)
unset(_programfiles)
else ()
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
ENV OPENSSL_ROOT_DIR
)
endif ()
set(_OPENSSL_ROOT_HINTS_AND_PATHS
HINTS ${_OPENSSL_ROOT_HINTS}
PATHS ${_OPENSSL_ROOT_PATHS}
)
find_path(OPENSSL_INCLUDE_DIR
NAMES
openssl/ssl.h
${_OPENSSL_ROOT_HINTS_AND_PATHS}
HINTS
${_OPENSSL_INCLUDEDIR}
PATH_SUFFIXES
include
)
if(WIN32 AND NOT CYGWIN)
if(MSVC)
# /MD and /MDd are the standard values - if someone wants to use
# others, the libnames have to change here too
# use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
# TODO: handle /MT and static lib
# In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
# * MD for dynamic-release
# * MDd for dynamic-debug
# * MT for static-release
# * MTd for static-debug
# Implementation details:
# We are using the libraries located in the VC subdir instead of the parent directory eventhough :
# libeay32MD.lib is identical to ../libeay32.lib, and
# ssleay32MD.lib is identical to ../ssleay32.lib
find_library(LIB_EAY_DEBUG
NAMES
libeay32MDd
libeay32d
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
find_library(LIB_EAY_RELEASE
NAMES
libeay32MD
libeay32
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
find_library(SSL_EAY_DEBUG
NAMES
ssleay32MDd
ssleay32d
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
find_library(SSL_EAY_RELEASE
NAMES
ssleay32MD
ssleay32
ssl
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
set(LIB_EAY_LIBRARY_DEBUG "${LIB_EAY_DEBUG}")
set(LIB_EAY_LIBRARY_RELEASE "${LIB_EAY_RELEASE}")
set(SSL_EAY_LIBRARY_DEBUG "${SSL_EAY_DEBUG}")
set(SSL_EAY_LIBRARY_RELEASE "${SSL_EAY_RELEASE}")
include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
select_library_configurations(LIB_EAY)
select_library_configurations(SSL_EAY)
mark_as_advanced(LIB_EAY_LIBRARY_DEBUG LIB_EAY_LIBRARY_RELEASE
SSL_EAY_LIBRARY_DEBUG SSL_EAY_LIBRARY_RELEASE)
set( OPENSSL_LIBRARIES ${SSL_EAY_LIBRARY} ${LIB_EAY_LIBRARY} )
elseif(MINGW)
message( STATUS "Searching for OpenSSL in MinGW." )
# same player, for MinGW
set(LIB_EAY_NAMES libeay32)
set(SSL_EAY_NAMES ssleay32)
list(APPEND LIB_EAY_NAMES crypto)
list(APPEND SSL_EAY_NAMES ssl)
find_library(LIB_EAY
NAMES
${LIB_EAY_NAMES}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"lib/MinGW"
# Do not search system path. Otherwise the DLL will be found rather than the link library.
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH
)
find_library(SSL_EAY
NAMES
${SSL_EAY_NAMES}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"lib/MinGW"
# Do not search system path. Otherwise the DLL will be found rather than the link library.
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH
)
mark_as_advanced(SSL_EAY LIB_EAY)
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
unset(LIB_EAY_NAMES)
unset(SSL_EAY_NAMES)
else()
# Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
find_library(LIB_EAY
NAMES
libeay32
${_OPENSSL_ROOT_HINTS_AND_PATHS}
HINTS
${_OPENSSL_LIBDIR}
PATH_SUFFIXES
lib
)
find_library(SSL_EAY
NAMES
ssleay32
${_OPENSSL_ROOT_HINTS_AND_PATHS}
HINTS
${_OPENSSL_LIBDIR}
PATH_SUFFIXES
lib
)
mark_as_advanced(SSL_EAY LIB_EAY)
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
endif()
else()
find_library(OPENSSL_SSL_LIBRARY
NAMES
ssl
ssleay32
ssleay32MD
${_OPENSSL_ROOT_HINTS_AND_PATHS}
HINTS
${_OPENSSL_LIBDIR}
PATH_SUFFIXES
lib
)
find_library(OPENSSL_CRYPTO_LIBRARY
NAMES
crypto
${_OPENSSL_ROOT_HINTS_AND_PATHS}
HINTS
${_OPENSSL_LIBDIR}
PATH_SUFFIXES
lib
)
mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
# compat defines
set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
endif()
function(from_hex HEX DEC)
string(TOUPPER "${HEX}" HEX)
set(_res 0)
string(LENGTH "${HEX}" _strlen)
while (_strlen GREATER 0)
math(EXPR _res "${_res} * 16")
string(SUBSTRING "${HEX}" 0 1 NIBBLE)
string(SUBSTRING "${HEX}" 1 -1 HEX)
if (NIBBLE STREQUAL "A")
math(EXPR _res "${_res} + 10")
elseif (NIBBLE STREQUAL "B")
math(EXPR _res "${_res} + 11")
elseif (NIBBLE STREQUAL "C")
math(EXPR _res "${_res} + 12")
elseif (NIBBLE STREQUAL "D")
math(EXPR _res "${_res} + 13")
elseif (NIBBLE STREQUAL "E")
math(EXPR _res "${_res} + 14")
elseif (NIBBLE STREQUAL "F")
math(EXPR _res "${_res} + 15")
else()
math(EXPR _res "${_res} + ${NIBBLE}")
endif()
string(LENGTH "${HEX}" _strlen)
endwhile()
set(${DEC} ${_res} PARENT_SCOPE)
endfunction()
if (OPENSSL_INCLUDE_DIR)
if (_OPENSSL_VERSION)
set(OPENSSL_VERSION "${_OPENSSL_VERSION}")
elseif(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
# The version number is encoded as 0xMNNFFPPS: major minor fix patch status
# The status gives if this is a developer or prerelease and is ignored here.
# Major, minor, and fix directly translate into the version numbers shown in
# the string. The patch field translates to the single character suffix that
# indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
# on.
message(STATUS "OPENSSL_VERSION_STR=${openssl_version_str}")
string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
"\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)
if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
# 96 is the ASCII code of 'a' minus 1
math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
unset(_tmp)
# Once anyone knows how OpenSSL would call the patch versions beyond 'z'
# this should be updated to handle that, too. This has not happened yet
# so it is simply ignored here for now.
string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
endif ()
set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
endif ()
endif ()
include(FindPackageHandleStandardArgs)
if (OPENSSL_VERSION)
find_package_handle_standard_args(OpenSSL
REQUIRED_VARS
OPENSSL_LIBRARIES
OPENSSL_INCLUDE_DIR
VERSION_VAR
OPENSSL_VERSION
FAIL_MESSAGE
"Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
)
else ()
find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
OPENSSL_LIBRARIES
OPENSSL_INCLUDE_DIR
)
endif ()
mark_as_advanced(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
-1
View File
@@ -22,7 +22,6 @@
find_path( NGSPICE_INCLUDE_DIR ngspice/sharedspice.h
PATHS ${NGSPICE_ROOT_DIR} $ENV{NGSPICE_ROOT_DIR} ${NGSPICE_INCLUDE_PATH}
${NGSPICE_ROOT_DIR}/include
PATH_SUFFIXES src/include share/ngspice/include share/ngspice/include/ngspice
)
+17 -15
View File
@@ -25,32 +25,34 @@
# Function make_lexer
# is a standard way to invoke TokenList2DsnLexer.cmake.
# Extra arguments are treated as source files which depend on the generated
# files. Some detail here on the indirection:
# - Parallel builds all depend on the same files, and CMake will generate the same file multiple times in the same location.
# This can be problematic if the files are generated at the same time and overwrite each other.
# - To fix this, we create a custom target (outputTarget) that the parallel builds depend on.
# AND build dependencies. This creates the needed rebuild for appropriate source object changes.
function( make_lexer outputTarget inputFile outHeaderFile outCppFile enum )
# outHeaderFile
function( make_lexer inputFile outHeaderFile outCppFile enum )
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${outHeaderFile}
${CMAKE_CURRENT_BINARY_DIR}/${outCppFile}
OUTPUT ${outHeaderFile}
${outCppFile}
COMMAND ${CMAKE_COMMAND}
-Denum=${enum}
-DinputFile=${CMAKE_CURRENT_SOURCE_DIR}/${inputFile}
-DoutHeaderFile=${CMAKE_CURRENT_BINARY_DIR}/${outHeaderFile}
-DoutCppFile=${CMAKE_CURRENT_BINARY_DIR}/${outCppFile}
-DinputFile=${inputFile}
-DoutHeaderFile=${outHeaderFile}
-DoutCppFile=${outCppFile}
-P ${CMAKE_MODULE_PATH}/TokenList2DsnLexer.cmake
DEPENDS ${inputFile}
${CMAKE_MODULE_PATH}/TokenList2DsnLexer.cmake
COMMENT "TokenList2DsnLexer.cmake creating:
${outHeaderFile} and
${outCppFile} from
${inputFile}"
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${inputFile}
${CMAKE_MODULE_PATH}/TokenList2DsnLexer.cmake
)
target_sources( ${outputTarget} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${outCppFile} )
target_include_directories( ${outputTarget} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} )
# extra_args, if any, are treated as source files (typically headers) which
# are known to depend on the generated outHeader.
foreach( extra_arg ${ARGN} )
set_source_files_properties( ${extra_arg}
PROPERTIES OBJECT_DEPENDS ${outHeaderFile}
)
endforeach()
endfunction()
-100
View File
@@ -1,100 +0,0 @@
# This program source code file is part of KiCad, a free EDA CAD application.
#
# Copyright (C) 2019 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
#
# Utility CMake functions and targets for marshalling the builds of QA
# tests and tools
#
# CI tools can use this to force tests to output machine-readable formats
# when possible
option( KICAD_TEST_XML_OUTPUT
"Cause unit tests to output xUnit results where possible for more granular CI reporting."
OFF
)
mark_as_advanced( KICAD_TEST_XML_OUTPUT ) # Only CI tools need this
# This is a "meta" target that is used to collect all tests
add_custom_target( qa_all_tests )
# This is a "meta" target used to collect all utility tools
add_custom_target( qa_all_tools )
# This "meta" target builds all QA tools, utils, etc
add_custom_target( qa_all
DEPENDS qa_all_tests qa_all_tools
)
# Add a target as a "QA test" executable:
# * Added as a CTest test with the given name
# * Excluded from ALL when KICAD_BUILD_QA_TESTS not set
# * Is a dependency of qa_all_tests
function( kicad_add_boost_test TEST_EXEC_TARGET TEST_NAME)
set(BOOST_TEST_PARAMS "")
if( KICAD_TEST_XML_OUTPUT )
# Provide Boost-test-y XML params if asked
# Due to Boost issue in 1.62, have to use the --logger parameter, rather than
# separate --log_format, --log_sink, etc parameter
# https://svn.boost.org/trac10/ticket/12507
set(BOOST_TEST_PARAMS --logger=XML,all,${TEST_NAME}.boost-results.xml --report_level=no --result_code=no)
endif()
# Add the test to the CTest registry
add_test( NAME ${TEST_NAME}
COMMAND $<TARGET_FILE:${TEST_EXEC_TARGET}> ${BOOST_TEST_PARAMS}
)
# Make the overall test meta-target depend on this test
add_dependencies( qa_all_tests ${TEST_EXEC_TARGET} )
# If tests are not enabled by default, remove from the ALL target
# They can still be built manually, or all together with the qa_all_test target
if( NOT KICAD_BUILD_QA_TESTS )
set_target_properties( ${TEST_EXEC_TARGET}
PROPERTIES EXCLUDE_FROM_ALL TRUE
)
endif()
endfunction()
# Add a target as a "QA tool" executable:
# * Excluded from ALL when KICAD_BUILD_QA_TESTS not set
# * Is a dependency of qa_all_tools
function( kicad_add_utils_executable TARGET)
# If tests are not enabled by default, remove from the ALL target
# They can still be built manually, or all together with the qa_all_tools
if( NOT KICAD_BUILD_QA_TESTS )
set_target_properties( ${TARGET}
PROPERTIES EXCLUDE_FROM_ALL TRUE
)
endif()
# Make the overall test meta-target depend on this test
add_dependencies( qa_all_tools ${TARGET} )
endfunction()
+38 -38
View File
@@ -1,38 +1,38 @@
#
# This program source code file is part of KICAD, a free EDA CAD application.
#
# Copyright (C) 2016 Wayne Stambaugh <stambaughw@gmail.com>
# Copyright (C) 2016 - 2019 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
#
# Note: unless you are the person responsible for creating releases,
# do *not* change these variables. This way the KiCad project
# can maintain control over what is an official KiCad build and
# what is not. Setting these variable that conflict with KiCad
# releases is a shooting offense.
#
# This file gets included in the WriteVersionHeader.cmake file to set
# the default KiCad version when the source is provided in an archive
# file or git is not available on the build system. When KiCad is
# cloned using git, the git version is used. This version string should
# 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.99.0-unknown" )
#
# This program source code file is part of KICAD, a free EDA CAD application.
#
# Copyright (C) 2016 Wayne Stambaugh <stambaughw@gmail.com>
# Copyright (C) 2016 - 2019 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
#
# Note: unless you are the person responsible for creating releases,
# do *not* change these variables. This way the KiCad project
# can maintain control over what is an official KiCad build and
# what is not. Setting these variable that conflict with KiCad
# releases is a shooting offense.
#
# This file gets included in the WriteVersionHeader.cmake file to set
# the default KiCad version when the source is provided in an archive
# file or git is not available on the build system. When KiCad is
# cloned using git, the git version is used. This version string should
# 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.1.2" )
+2 -2
View File
@@ -150,7 +150,7 @@ set( sourceFileHeader
* your DSN lexer.
*/
#include <${outHeaderFile}>
#include <${result}_lexer.h>
using namespace ${enum};
@@ -268,7 +268,7 @@ public:
/**
* Constructor ( LINE_READER* )
* initializes a lexer and prepares to read from @a aLineReader which
* intializes a lexer and prepares to read from @a aLineReader which
* is assumed ready, and may be in use by other DSNLEXERs also. No ownership
* is taken of @a aLineReader. This enables it to be used by other lexers also.
* The transition between grammars in such a case, must happen on a text
+1 -1
View File
@@ -194,7 +194,7 @@ jp charras:
* Add item clarification context menu to EESchema when multiple unresolved
items are found at the current cross hair position.
* Add collector class EE_COLLECTOR for supporting multiple item hit testing.
* Add collector class SCH_COLLECTOR for supporting multiple item hit testing.
* Removed bit wise masked filtering from schematic item hit testing.
* Removed all old hit testing functions and methods scattered about the
EESchema source code.
@@ -50,7 +50,7 @@ developers. The other KiCad developers will appreciate your effort.
**Do not modify this document without the consent of the project
leader. All changes to this document require approval.**
## 1.3 Tools ## {#tools}
## 1.3 Tools
There are some tools that can help you format your code easily.
@@ -76,38 +76,26 @@ to "true" for the KiCad repo:
git config kicad.check-format true
Without this config, the format checker will not run on commit, but you can
still check files staged for commit manually (see below).
still check files staged for commit manually:
tools/check_coding.sh --diff
If the hook is enabled, when you commit a change, you will be told if you
have caused any style violations (only in your changed code). You can then fix
the errors, either manually, or with the tools below.
have caused any style violations (only in your changed code). You can fix your
staged changes automatically with this tool:
If you are warned about formatting errors, but you are sure your style is correct,
you can still commit:
tools/check_coding.sh
Or you can proceed anyway, if you are sure your style is correct:
git commit --no-verify
### Correcting Formatting Errors ## {#correcting-formatting-errors}
The `check_coding.sh` tool has other modes:
There is a Git aliases file that provides the right commands to show and correct
formatting errors. Add to your repository config by running this command from
the source directory:
git config --add include.path $(pwd)/helpers/git/format_alias
Then you can use the following aliases:
* `git check-format`: show any formatting warnings (but make no changes)
* `git fix-format`: correct formatting (you will need to `git add` afterwards)
These aliases use a script, `tools/check-coding.sh`, which takes care of only
checking the formatting for files that should be formatted. This script has
other uses:
* Make (or see only) violations in files modified in the previous commit (useful
when interactive-rebasing):
* Make (or see only) changes to files modified in the previous commit:
* `check_coding.sh --amend [--diff]`
# 2. Naming Conventions # {#naming_conventions}
Before delving into anything as esoteric as indentation and formatting,
naming conventions need to be addressed. This section does not attempt
@@ -479,20 +467,6 @@ The case statement is to be indented to the same level as the switch.
}
~~~~~~~~~~~~~
It is permitted to place all cases on a single line each, if that makes the
code more readable. This is often done for look-ups or translation functions. In
this case, you will have to manually align for readability as appropriate and
reject clang-format's suggested changes, if you use it:
~~~~~~~~~~~~~{.cpp}
switch( m_orientation )
{
case PIN_RIGHT: m_orientation = PIN_UP; break;
case PIN_UP: m_orientation = PIN_LEFT; break;
case PIN_LEFT: m_orientation = PIN_DOWN; break;
case PIN_DOWN: m_orientation = PIN_RIGHT; break;
}
~~~~~~~~~~~~~
# 5. License Statement # {#license_statement}
There is a the file copyright.h which you can copy into the top of
@@ -861,6 +835,6 @@ learn something new.
[clang-format]: https://clang.llvm.org/docs/ClangFormat.html
[cppstandard]:http://www.possibility.com/Cpp/CppCodingStandard.html
[kernel]:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/process/coding-style.rst
[kernel]:http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/Documentation/CodingStyle
[overloading]:http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html
[style]:http://en.wikipedia.org/wiki/Programming_style
+25 -54
View File
@@ -125,7 +125,7 @@ section.
## Ngspice Library ## {#ngspice}
The [Ngspice Library][libngspice] is used to provide Spice simulation support in the schematic
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.
@@ -135,43 +135,41 @@ KiCad has many build options that can be configured to build different options d
the availability of support for each option on a given platform. This section documents
these options and their default values.
## Advanced Graphics Context ## {#graphics_context_opt}
The USE_WX_GRAPHICS_CONTEXT option replaces wxDC with wxGraphicsContext for graphics rendering.
This option is disabled by default. Warning: the is experimental and has not been maintained
so use at your own risk.
## Graphics Context Overlay ## {#overlay_opt}
The USE_WX_OVERLAY option is used to enable the optional wxOverlay class for graphics rendering
on macOS. This is enabled on macOS by default and disabled on all other platforms.
## Scripting Support ## {#scripting_opt}
The KICAD_SCRIPTING option is used to enable building the Python scripting support into Pcbnew.
This options is enabled by default, and will disable all other KICAD_SCRIPTING_* options when
it is disabled.
## Python 3 Scripting Support ## {#python3}
The KICAD_SCRIPTING_PYTHON3 option is used to enable using Python 3 for the scripting support
instead of Python 2. This option is disabled by default and only is relevant if
[KICAD_SCRIPTING](#scripting_opt) is enabled.
This options is enabled by default.
## Scripting Module Support ## {#scripting_mod_opt}
The KICAD_SCRIPTING_MODULES option is used to enable building and installing the Python modules
supplied by KiCad. This option is enabled by default, but will be disabled if
[KICAD_SCRIPTING](#scripting_opt) is disabled.
supplied by KiCad. This option is enabled by default.
## Python 3 Scripting Support ## {#python3}
The KICAD_SCRIPTING_PYTHON3 option is used to enable building of the Python 3 interface instead
of Python 2. This option is disabled by default.
## wxPython Scripting Support ## {#wxpython_opt}
The KICAD_SCRIPTING_WXPYTHON option is used to enable building the wxPython interface into
Pcbnew including the wxPython console. This option is enabled by default, but will be disabled if
[KICAD_SCRIPTING](#scripting_opt) is disabled.
Pcbnew including the wxPython console. This option is enabled by default.
## wxPython Phoenix Scripting Support ## {#wxpython_phoenix}
The KICAD_SCRIPTING_WXPYTHON_PHOENIX option is used to enable building the wxPython interface with
the new Phoenix binding instead of the legacy one. This option is disabled by default, and
enabling it requires [KICAD_SCRIPTING](#scripting_opt) to be enabled.
## Python Scripting Action Menu Support ## {#python_action_menu_opt}
The KICAD_SCRIPTING_ACTION_MENU option allows Python scripts to be added directly to the Pcbnew
menu. This option is enabled by default, but will be disabled if
[KICAD_SCRIPTING](#scripting_opt) is disabled. Please note that this option is highly
experimental and can cause Pcbnew to crash if Python scripts create an invalid object state
within Pcbnew.
the new Phoenix binding instead of the legacy one. This option is disabled by default.
## GitHub Plugin ## {#github_opt}
@@ -201,20 +199,11 @@ whether install them or not with the KICAD_INSTALL_DEMOS option. You can also se
install them with the KICAD_DEMOS variable. On Linux the demos are installed in
$PREFIX/share/kicad/demos by default.
## Quality assurance (QA) unit tests ## {#quality_assurance_tests_opt}
## Python Scripting Action Menu Support ## {#python_action_menu_opt}
The KICAD_BUILD_QA_TESTS option allows building unit tests binaries for quality assurance as part
of the default build. This option is enabled by default.
If this option is disabled, the QA binaries can still be built by manually specifying the target.
For example, with `make`:
* Build all QA binaries: `make qa_all`
* Build a specific test: `make qa_pcbnew`
* Build all unit tests: `make qa_all_tests`
* Build all test tool binaries: `make qa_all_tools`
For more information about testing KiCad, see [this page](testing.md).
The KICAD_SCRIPTING_ACTION_MENU option allows Python scripts to be added directly to the Pcbnew
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.
## KiCad Build Version ## {#build_version_opt}
@@ -233,18 +222,6 @@ information as follows:
|
output of `git describe --dirty` if git is available.
## KiCad Config Directory ## {#config_dir_opt}
The default KiCad configuration directory is `kicad`. On Linux this is located at
`~/.config/kicad`, on MSW, this is `C:\Documents and Settings\username\Application Data\kicad` and
on MacOS, this is `~/Library/Preferences/kicad`. If the installation package would like to, it may
specify an alternate configuration name instead of `kicad`. This may be useful for versioning
the configuration parameters and allowing the use of, e.g. `kicad5` and `kicad6` concurrently without
losing configuration data.
This is set by specifying the KICAD_CONFIG_DIR string at compile time.
# Getting the KiCad Source Code ## {#getting_src}
There are several ways to get the KiCad source. If you want to build the stable version you
@@ -359,12 +336,6 @@ configure pacman to prevent upgrading the 64-bit Boost package by adding:
to your /etc/pacman.conf file.
### Building with Boost 1.70 ### {#ki_msys2_boost_1_70}
There is an issue building KiCad with Boost version 1.70 due to CMake not defining the proper
link libraries during configuration. Boost 1.70 can be used but `-DBoost_NO_BOOST_CMAKE=ON`
needs to be added during CMake configuration to insure the link libraries are properly generated.
### Building OCE from source
KiCad requires OCE by default, and the version installed by `pacman` can cause build errors in
+8 -10
View File
@@ -25,7 +25,7 @@ Another documentation source is the auto-generated Doxygen reference of the
API. It can be found
[here](http://docs.kicad-pcb.org/doxygen-python/namespacepcbnew.html).
# \`Action Plugin\` Support # {#ppi_action_pi}
# `Action Plugin` Support # {#ppi_action_pi}
Besides the stand-alone usage of the generated Python plugin interface,
additional support regarding online manipulation of board projects is available
for Pcbnew. Plugins using this feature are called `Action Plugins` and they are
@@ -44,23 +44,21 @@ In order for the discovery process to work, the following requirements must be m
* The plugin must be installed in the KiCad plugins search paths as documented
in `scripting/kicadplugins.i`. You can always discover the search path for your
setup by opening the scripting console and entering the command:
setup by opening the Scripting console and entering the command: `import pcbnew;
print pcbnew.PLUGIN_DIRECTORIES_SEARCH`.
`import pcbnew; print pcbnew.PLUGIN_DIRECTORIES_SEARCH`
Currently on a Linux Installation the plugins search path is
Currently on a Linux Installation the plugins search path is
* /usr/share/kicad/scripting/plugins/
* ~/.kicad/scripting/plugins
* ~/.kicad_plugins/
On Windows
On Windows
* \%KICAD_INSTALL_PATH%/share/kicad/scripting/plugins
* \%APPDATA%/Roaming/kicad/scripting/plugins
* \{KICAD_INSTALL_PATH\}/share/kicad/scripting/plugins
* %APPDATA%/Roaming/kicad/scripting/plugins
On macOS, there is a security feature that makes it easier to add scripting plugins
to the ~/Library... path than to kicad.app, but the search path is
On macOS, there is a security feature that makes it easier to add scripting plugins to the ~/Library... path than to kicad.app, but the search path is
* /Applications/kicad/Kicad/Contents/SharedSupport/scripting/plugins
* ~/Library/Application Support/kicad/scripting/plugins
+461
View File
@@ -0,0 +1,461 @@
# Version 5 Road Map # {#v5_road_map}
This document is the KiCad version 5 Developer's road map document. It is
living document that should be maintained during the version 5 development
cycle. The goal of this document is to provide an overview for developers
of the goals for the project for the version 5 release of KiCad. It is
broken into sections for each major component of the KiCad source code and
documentation. It defines tasks that developers an use to contribute to the
project and provides updated status information. Tasks should define clear
objectives and avoid vague generalizations so that a new developer can complete
the task. It is not a place for developers to add their own personal wish.
list. It should only be updated with approval of the project manager after
discussion with the lead developers.
Each entry in the road map is made up of four sections. The goal should
be a brief description of the what the road map entry will accomplish. The
task section should be a list of deliverable items that are specific enough
hat they can be documented as completed. The dependencies sections is a list
of requirements that must be completed before work can begin on any of the
tasks. The status section should include a list of completed tasks or marked
as complete as when the goal is met.
[TOC]
# Project # {#v5_project}
This section defines the tasks for the project related goals that are not
related to coding or documentation. It is a catch all for issues such as
developer and user relations, dissemination of information on websites,
policies, etc.
# General # {#v5_general}
This section defines the tasks that affect all or most of KiCad or do not
fit under as specific part of the code such as the board editor or the
schematic editor.
## Search Tree Control ## {#v5_re_search_control}
**Goal:**
Create a user interface element that allows searching through a list of
items in a tree control for library searching.
**Task:**
- Create hybrid tree control with search text control for displaying filtered
objects (both symbol and footprint libraries) in a parent window.
**Dependencies:**
- None
**Status:**
- Initial container searching code completed.
- Wildcard and regular expression container searching completed.
- Control code in progress.
# Common Library # {#v5_common_lib}
This section covers the source code shared between all of the KiCad
applications
## Unified Rendering Framework ## {#v5_unified_rendering}
**Goal:**
Provide a single framework for developing new tools. Port existing tools
to the new framework and remove the legacy framework tools.
**Task:**
- Port wxDC to GAL or get Cairo rendering to nearly the performance of the
current wxDC rendering so that we have a single framework to develop new
tools and we can continue to support systems that don't have a complete
OpenGL stack.
**Dependencies**
- [Tool framework](http://www.ohwr.org/projects/cern-kicad/wiki/WorkPackages)
**Status**
- In progress
## Printing Improvements ## {#v5_print}
**Goal:**
Make printing quality consistent across platforms.
**Task:**
- Resolve printing issues on all platforms.
**Dependencies**
- None
**Status**
- No progress.
## Object Properties and Introspection ## {#v5_object_props}
**Goal:**
Provide an object introspection system using properties.
**Task:**
- Select existing or develop property system.
- Add definable properties to base objects.
- Create introspection framework for manipulating object properties.
- Serialization of properties to and from files and/or other I/O structures.
- Create tool to edit property namespace/object name/name/type/value table.
**Dependencies:**
- None
**Status:**
- No progress.
## 3D Viewer Dynamic Library Plugin ## {#v5_plugin_base}
**Goal:**
Create a base library plugin for handling external file I/O for the 3D viewer.
This will allow plugins to be provided that are external to the project such
as providing solid model file support (STEP, IGES, etc.) using OpenCascade
without making it a project dependency.
**Task:**
- Create a plugin to handle dynamically registered plugins for loading and
saving file formats.
- This object should be flexible enough to be extended for handling all file
plugin types including schematic, board, footprint library, component
library, etc. (optional)
- See [blueprint](https://blueprints.launchpad.net/kicad/+spec/pluggable-file-io)
on Launchpad for more information.
**Dependencies:**
- None
**Status:**
- 3D plugin code complete and legacy formats implemented.
# Eeschema: Schematic Editor # {#v5_eeschema}
This section applies to the source code for the Eeschema schematic editor.
## Coherent SCHEMATIC Object ## {#v5_sch_object}
**Goal:**
Clean up the code related to the schematic object(s) into a coherent object for
managing and manipulating the schematic that can be used by third party tools
and Python scripting.
**Task:**
- Move handling of root sheet object to SCHEMATIC object.
- Move SCH_SCREENS code into SCH_OBJECT.
- Build and maintain schematic hierarchy in SCHEMATIC object rather than
recreating on the fly every time the hierarchical information is required.
- Optionally build and maintain netlist during editing for extended editing
features.
- Add any missing functionality to the SCHEMATIC object.
**Dependencies:**
- [Schematic and Component Library Plugin](#v5_sch_plugin)
**Status:**
- In progress.
## Schematic and Component Library I/O Manager Plugin ## {#v5_sch_plugin}
**Goal:**
Create a plugin manager for loading and saving schematics and component
libraries similar to the board plugin manager.
**Task:**
- Design plugin manager for schematics and component libraries.
- Port the current schematic and component library file formats to use the
plugin.
**Dependencies:**
- None
**Status:**
- I/O manager and plugin objects are complete.
- Legacy schematic file parser almost ready to commit.
## S-Expression File Format ## {#v5_sch_sexpr}
**Goal:**
Make schematic file format more readable, add new features, and take advantage
of the s-expression parser and formatter capability used in Pcbnew.
**Task:**
- Finalize feature set and file format.
- Discuss the possibility of dropping the unit-less proposal temporarily to get
the s-expression file format and SWEET library format implemented without
completely rewriting Eeschema.
- Add new s-expression file format to plugin.
**Dependencies:**
- [Schematic and component I/O manager plugin](#v5_sch_plugin)
**Status:**
- File format document nearly complete.
## Implement Sweet Component Libraries ## {#v5_sch_sweet}
**Goal:**
Make component library design more robust and feature rich. Use s-expressions
to make component library files more readable.
**Task:**
- Use sweet component file format for component libraries.
**Dependencies:**
- [S-expression file format](#v5_sch_sexpr).
[Schematic and component I/O manager plugin](#v5_sch_plugin)
**Status:**
- Initial SWEET library file format document written.
## Component Library Editor Usability Improvements ## {#v5_lib_editor_usability}
**Goal:**
Make editing schematic symbol libraries easier to manage.
**Task:**
- Determine usability improvements in the library editor for components with
multiple units and/or alternate graphical representations.
- Replace current library/symbols selection process with new hybrid tree search
widget in new window pain for selection libraries and symbols. Provide drag
and drop symbol copy/move between libraries.
- Allow editing of symbol libraries not defined in footprint library table(s)
using the file/path dialog to open a library.
**Dependencies:**
- [Search Tree Control](#v5_re_search_control)
**Status:**
- Determined alternate UI designs using new hybrid search tree control.
## Component and Netlist Attributes ## {#v5_netlist_attributes}
**Goal:**
Provide a method of passing information to other tools via the net list.
**Task:**
- Add virtual components and attributes to netlist to define properties that
can be used by other tools besides the board editor.
- Attributes (properties) are automatically included as part of the new file
format.
**Dependencies:**
- [S-expression schematic file format](#v5_sch_sexpr).
**Status:**
- No progress.
# Circuit Simulation # {#simulation}
**Goal:**
Provide quality circuit simulation capabilities similar to commercial products.
**Task:**
- Evaluate and select simulation library (ngspice, gnucap, qucs, etc).
- Evaluate and select plotting library with wxWidgets support.
- Confirm current spice netlist export is up to the task and add missing
support for simulations.
- Use plotting library to handle simulator output in a consistent manor similar
to LTSpice.
- Develop a tool that allows fine tuning of components on the fly.
- Use plugin for the simulation code to allow support of different simulation
libraries.
- Create dialogs for configuring of simulation of Spice primitive components
such as voltage sources, current sources, etc.
- Create dialog(s) for configuration of simulation types transient, DC operating
point, AC analysis, etc.
**Dependencies:**
- None
**Status:**
- Complete ([announcement message](https://lists.launchpad.net/kicad-developers/msg25483.html))
# Pcbnew: Circuit Board Editor # {#v5_pcbnew}
This section covers the source code of the board editing application Pcbnew.
## Tool Framework ## {#v5_pcb_tool_framework}
**Goal:**
Unify all board editing tools under a single framework.
**Task:**
- Drop footprint edit mode.
- Port auto-router to GAL.
- Complete porting of all board editing tools to new tool framework so they
are available in the OpenGL and Cairo canvases.
- Remove all duplicate legacy editing tools.
**Dependencies:**
- In progress.
**Status:**
- Initial porting work in progress.
## Modeling ## {#v5_modeling}
**Goal:**
Provide improved solid modeling support for KiCad including the file formats
available in OpenCascade.
**Task:**
- Improve low level code design.
- Design plugin architecture to handle loading and saving 3D models.
- Back port existing 3D formats (IDF and S3D) to plugin
**Dependencies:**
- [Dynamic library plugin](#v5_plugin_base).
**Status:**
- Completed.
## Push and Shove Router Improvements ## {#v5_ps_router_improvements}
**Goal:**
Add finishing touches to push and shove router.
**Task:**
- Determine which features are feasible.
- Factor out KiCad-specific code from PNS_ROUTER class.
- Delete and backspace in idle mode
- Differential pair clearance fixes.
- Differential pair optimizer improvements (recognize differential pairs)
- Persistent differential pair gap/width setting.
- Walk around in drag mode.
- Optimize trace being dragged too. (currently no optimization)
- Backspace to erase last routed segment.
- Auto-finish traces (if time permits)
- Additional optimization pass for spring back algorithm using area-minimization
strategy. (improves tightness of routing)
- Restrict optimization area to view port (if user wants to)
- Support 45 degree tuning meanders.
- Respect trace/via locking!
- Keep out zone support.
**Dependencies:**
- None
**Status:**
- Feature feasibility determined.
- In Progress.
## Selection Filtering ## {#v5_pcb_selection_filtering}
**Goal:**
Make the selection tool easier for the user to determine which object(s) are
being selected by filtering.
**Task:**
- Provide filtered object selection by adding a third tab to the layer manager
or possibly some other UI element to provide filtered selection options.
**Dependencies:**
- None
**Status:**
- Initial design concept discussed.
## Segment End Point Snapping. ## {#v5_segment_snapping}
**Goal:**
It is not uncommon for board edge segment end points to inadvertently not
be closed causing issues for the 3D viewer and exporting to different file
formats due the board outline not being a fully enclosed polygon. This
feature would add segment end snapping support to allow the board outline
to be fully enclosed. This feature would only need to be supported by the
GAL rendering.
**Tasks**
- Mark board edge segment ends with a drag indicator to make it visible to the
user that the segment end does not have an endpoint with any other board edge
segment.
- Allow the user to snap the unconnected segment end to the nearest segment end
point.
- Automatically connect unconnected segments with and additional segment when
opening the 3D viewer or exporting the board to another format. Warn the
user that an addition segment has be added and should be verified.
**Dependencies:**
- None
**Progress:**
- Initial discussion.
## Stitching Via Support ## {#v5_pcb_stitching_vias}
**Goal:**
Add capability to add vias for stitching and thermal transfer purposes
that do not require being attached to tracks.
**Task:**
- Develop more robust connectivity checking algorithm.
- Create a UI element to allow the user to select a net from the list of
valid nets.
- Connection propagation fix for the current issue of vias that are not
connected to tracks being tagged as unassigned and removed.
- Manual via placement tool.
- Improve the DRC to handle cases of orphaned vias.
**Dependencies:**
- None
**Progress:**
- Patch available to fix via propagation issue.
# Documentation # {#v5_documentation}
This section defines the tasks for both the user and developer documentation.
## Grammar Check ## {#v5_doc_grammar}
**Goal:**
Improve user documentation readability and make life easier to for translators.
**Task:**
- Review and revise all of the English documentation so that it is update with
the current functionality of the code.
- Translate the update documentation into other languages.
**Dependencies:**
- None
**Status:**
- No progress.
## Maintenance ## {#v5_doc_maintenance}
**Task:**
- Keep screen shots current with the source changes.
**Dependencies:**
- None.
**Status:**
- No progress.
## Convert Developer Documentation to Markup/down Format ## {#v5_dev_doc_format}
**Goal:**
Improve developers documentation to make life easier for new developers to get
involved with the project.
**Task:**
- Convert platform build instructions from plain text to new format to be
merged with the developer documentation.
- Convert how to contribute to KiCad instructions from plain text to the new
format to merged with the developer documentation.
**Dependencies:**
- None.
**Status:**
- In progress. Most of the developer documentation has been converted to
[Doxygen markdown](http://www.doxygen.nl/manual/markdown.html)
and the [output][kicad-docs] is rebuilt automatically when a commit is
made to the KiCad repo.
[kicad-website]:http://kicad-pcb.org/
[kicad-docs]:http://ci.kicad-pcb.org/job/kicad-doxygen/ws/Documentation/doxygen/html/index.html
+84 -525
View File
@@ -54,84 +54,10 @@ Create perspectives to allow users to arrange dockable windows as they prefer.
**Status:**
- No progress.
## Object Properties and Introspection ## {#v6_object_props}
**Goal:**
Provide an object introspection system using properties.
**Task:**
- Select existing or develop property system.
- Add definable properties to base objects.
- Create introspection framework for manipulating object properties.
- Serialization of properties to and from files and/or other I/O structures.
- Create tool to edit property namespace/object name/name/type/value table.
**Dependencies:**
- None
**Status:**
- In progress.
# Eeschema: Schematic Editor # {#v6_eeschema}
This section applies to the source code for the Eeschema schematic editor.
## Coherent SCHEMATIC Object ## {#v6_sch_object}
**Goal:**
Clean up the code related to the schematic object(s) into a coherent object for
managing and manipulating the schematic that can be used by third party tools
and Python scripting.
**Task:**
- Move handling of root sheet object to SCHEMATIC object.
- Move SCH_SCREENS code into SCH_OBJECT.
- Build and maintain schematic hierarchy in SCHEMATIC object rather than
recreating on the fly every time the hierarchical information is required.
- Optionally build and maintain netlist during editing for extended editing
features.
- Add any missing functionality to the SCHEMATIC object.
**Dependencies:**
- None
**Status:**
- In progress.
## Implement Sweet (S-Expression) Symbol Libraries ## {#v6_sch_sweet}
**Goal:**
Make symbol library design more robust and feature rich. Use s-expressions
to make component library files more readable.
**Task:**
- Use sweet component file format for component libraries.
**Dependencies:**
- None
**Status:**
- Initial SWEET library file format document written.
## S-Expression File Format ## {#v6_sch_sexpr}
**Goal:**
Make schematic file format more readable, add new features, and take advantage
of the s-expression parser and formatter capability used in Pcbnew.
**Task:**
- Finalize feature set and file format.
- Discuss the possibility of dropping the unit-less proposal temporarily to get
the s-expression file format and SWEET library format implemented without
completely rewriting Eeschema.
- Add new s-expression file format to plugin.
**Dependencies:**
- [S-expression file format](#v6_sch_sweet).
**Status:**
- File format document initial draft complete.
## Move Common Schematic Code into a Shared Object ## {#v6_sch_shared_object}
**Goal:**
@@ -167,22 +93,37 @@ Improve the coverage and usability of the electrical rules checker (ERC).
**Status:**
- No progress.
## Port Editing Tools to New Tool Framework ## {#v6_sch_tool_framework}
## Implement GAL and New Tool Framework ## {#v6_sch_gal}
**Goal:**
Implement the GAL and the tool framework used by Pcbnew in Eechema to
provide advanced graphics and tool capabilities.
**Task:**
- Implement graphics abstraction layer along side current legacy rendering
framework.
**Dependencies:**
- None
**Status:**
- Initial Discussion..
## Port Editing Tools ## {#v6_sch_tool_framework}
**Goal:**
Convert all editing tool to new tool framework.
**Task:**
-**Task:**
- Rewrite existing editing tools using the new tool framework.
- Add new capabilities supported by the new tool framework to existing
editing tools.
- Remove legacy tool framework.
**Dependencies:**
- None.
-**Dependencies:**
- [GAL and new tool framework port](#v6_sch_gal).
**Status:**
- Schematic editor complete.
-**Status:**
- Initial Discussion..
## Net Highlighting ## {#v6_sch_net_highlight}
**Goal:**
@@ -193,11 +134,28 @@ Highlight wires, buses, and junctions when corresponding net in Pcbnew is select
- Implement highlight algorithm for net objects.
- Highlight objects connected to net selected in Pcbnew.
**Dependencies:**
- [GAL and new tool framework port, maybe](#v6_sch_gal).
**Status:**
- No progress.
## Component Library Editor Improvements ## {#lib_editor_usability}
**Goal:**
Make editing components with multiple units and/or alternate graphical
representations easier.
**Task:**
- Determine usability improvements in the library editor for components with
multiple units and/or alternate graphical representations.
- Implement said usability improvements.
**Dependencies:**
- None.
**Status:**
- Complete.
- No progress.
## Allow Use of System Fonts ## {#v6_sch_sys_fonts}
**Goal:**
@@ -212,112 +170,33 @@ for schematic text.
- Add support for selecting text object fonts.
**Dependencies:**
- [S-expression schematic file format](#v6_sch_sexpr).
- [S-expression schematic file format](#sch_sexpr).
**Status:**
- No progress.
## Symbol and Netlist Attributes ## {#v6_netlist_attributes}
**Goal:**
Provide a method of passing information to other tools via the net list.
**Task:**
- Add virtual components and attributes to netlist to define properties that
can be used by other tools besides the board editor.
- Attributes (properties) are automatically included as part of the new file
format.
**Dependencies:**
- [S-expression schematic file format](#v6_sch_sexpr).
**Status:**
- No progress.
## Orthogonal Wire Drag ## {#v6_orthogonal_drag}
**Goal:**
Keep wires and buses orthogonal when dragging a symbol.
**Task:**
- Add code to new tool framework to allow for orthogonal dragging of symbols.
**Dependencies:**
- [New tool framework](#v6_sch_tool_framework).
**Status:**
- No progress.
## Custom Wire and Bus Attributes ## {#v6_sch_bus_wire_attr}
**Goal:**
Allow for wires and buses to have different widths, colors, and line types.
**Task:**
- Add code to support custom wire and bus attributes.
- Add user interface element to support changing wire and bus attributes.
**Dependencies:**
- [S-Expression File Format](#v6_sch_sexpr).
**Status:**
- No progress.
## Connectivity Improvements ## {#v6_sch_connectivity}
**Goal:**
Support structured buses, real time netlist calculations, and other
connectivity improvements.
**Task:**
- Keep netlist up to date real time.
- Add support for structured bus definitions.
- Possible real time ERC checking.
**Dependencies:**
- None.
**Status:**
- Real time netlist and structured bus support complete.
## ERC Improvements ## {#v6_sch_erc}
**Goal:**
Improve ERC test coverage and other ERC usability features.
**Task:**
- Add missing ERC tests to improve coverage.
- Save ERC settings in project file.
- Add mechanism to allow import and export of ERC settings.
- ERC user interface improvements.
**Dependencies:**
- None.
**Status:**
- Preliminary specification draft complete.
## Python Support ## {#v6_sch_python}
**Goal:**
SWIG all schematic low level objects and coherent schematic object to
provide Python interface for manipulating schematic objects.
**Task:**-
- Create SWIG wrappers for all low level schematic, symbol library, and
coherent schematic object code.
- Add Python interpreter launcher.
**Dependencies:**
- [Coherent Schematic Object](#v6_sch_object).
**Status:**
- No Progress.
# CvPcb: Footprint Association Tool # {#v6_cvpcb}
This section covers the source code of the footprint assignment tool CvPcb.
## Improved Footprint Search Tool ## {#v6_cvpcb_search}
**Goal:**
Provide advanced search features such as wild card and regular expression
searches using the type as you go feature of the current search dialog.
**Task:**
- Add code for wild card and regular expression pattern matching to search
container objects.
- Add search dialog to CvPcb to search container of footprint names.
**Dependencies:**
- [Search Tree Control](#v6_re_search_control)
**Status:**
- Pattern matching added to search container objects.
# Pcbnew: Circuit Board Editor # {#v6_pcbnew}
This section covers the source code of the board editing application Pcbnew.
@@ -329,45 +208,14 @@ This section covers the source code of the board editing application Pcbnew.
Add finishing touches to push and shove router.
**Task:**
- Delete and backspace in idle mode
- Differential pair clearance fixes.
- Differential pair optimizer improvements (recognize differential pairs)
- Persistent differential pair gap/width setting.
- Walk around in drag mode.
- Optimize trace being dragged too. (currently no optimization)
- Auto-finish traces (if time permits)
- Additional optimization pass for spring back algorithm using area-minimization
strategy. (improves tightness of routing)
- Restrict optimization area to view port (if user wants to)
- Support 45 degree tuning meanders.
- Respect trace/via locking!
- Keep out zone support.
- Microwave tools to be added as parameterized shapes generated by Python
- Microwave tools to be added as parametrized shapes generated by Python
scripts.
- BGA fan out support.
- Drag footprints with traces connected.
**Dependencies:**
- None.
**Status:**
- In progress.
## Selection Filtering ## {#v6_pcb_selection_filtering}
**Goal:**
Make the selection tool easier for the user to determine which object(s) are
being selected by filtering.
**Task:**
- Provide filtered object selection by adding a third tab to the layer manager
or possibly some other UI element to provide filtered selection options.
**Dependencies:**
- None
**Status:**
- In progress.
- None
## Design Rule Check (DRC) Improvements. ## {#v6_drc_improvements}
**Goal:**
@@ -375,6 +223,7 @@ being selected by filtering.
Create additional DRC tests for improved error checking.
**Task:**
- Replace geometry code with [unified geometry library](#v6_geometry_lib).
- Remove floating point code from clearance calculations to prevent rounding
errors.
- Add checks for component, silk screen, and mask clearances.
@@ -383,7 +232,7 @@ Create additional DRC tests for improved error checking.
- Add option for saving and loading DRC options.
**Dependencies:**
- [Constraint Management System](#v6_pcb_constraint).
- [Unified geometry library.](#v6_geometry_lib)
**Progress:**
- In progress.
@@ -424,7 +273,7 @@ does not have to do it in Eeschema and re-import the net list.
- Add support to handle net label back annotation changes.
**Dependencies:**
- [S-Expression File Format](#v6_sch_sexpr).
- None
**Status:**
- No progress.
@@ -443,7 +292,7 @@ Add support for keepout zones on boards and footprints.
- [DRC Improvements.](#v6_drc_improvements)
**Progress:**
- In progress.
- Planning
## Clipboard Support ## {#v6_fp_edit_clipboard}
**Goal:**
@@ -458,7 +307,7 @@ Provide clipboard cut and paste for footprints.
- None
**Status:**
- Complete.
- No progress.
## Net Highlighting ## {#v6_pcb_net_highlight}
**Goal:**
@@ -474,7 +323,7 @@ Highlight rats nest links and/or traces when corresponding net in Eeschema is se
- None.
**Status:**
- Complete.
- No progress.
## Hatched Zone Filling ## {#v6_pcb_hatched_zones}
**Goal:**
@@ -490,7 +339,7 @@ with hatching.
- None.
**Status:**
- Complete.
- No progress.
## Board Stack Up Impedance Calculator ## {#v6_pcb_impedance_calc}
**Goal:**
@@ -505,7 +354,7 @@ Maybe this should be included in the PCB calculator application.
- None.
**Status:**
- In progress.
- No progress.
## Net Class Improvements ## {#v6_pcb_net_class_improvements}
**Goal:**
@@ -529,323 +378,33 @@ Add support for route impedance, color selection, etc in net class object.
## Ratsnest Improvements ## {#v6_pcb_ratsnest_improvements}
**Goal:**
Add support for curved rats and per net color and visibility settings.
Add support for per net color and visibility settings.
**Task:**
- Implement rat curving to minimize overlapped rats.
- Implement UI code to configure ratsnest color and visibility.
- Update ratsnest code to handle per net color and visibility.
**Dependencies:**
- None.
**Status:**
- Curved rat support complete.
## DXF Improvements ## {#v6_pcb_dxf_import}
**Goal:**
- Allow for anchor point setting and layer mapping support on DXF import and
export multiple board layers to a single DXF file.
**Task:**
- Provide method to select DXF import anchor point.
- Add user interface to allow mapping DXF layers to board layers.
- Modify DXF plotting to export multiple layers to a single file.
**Dependencies:**
- None.
**Status:**
- No progress.
## Improve Dimension Tool ## {#v6_pcb_dim_tool}
**Goal:**
Make dimensions link to objects and change when objects are modified and add
basic mechanical constraints.
**Task:**
- Add code to link dimension to objects.
- Add basic mechanical constraints like linear distance and angle.
**Dependencies:**
- None.
**Status:**
- In progress.
## Constraint Management System ## {#v6_pcb_constraint}
**Goal:**
Implement full featured constraint management system to allow for complex
board constraints instead of netclass only constraints.
**Task:**
- Write specification to define requirement of new constraint system.
- Implement new constraint system including file format changes.
- Allow constraints to be defined in schematic editor and passed to board
editor via netlist.
- Update netlist file format to support constraints.
- Update DRC to test new constraints.
**Dependencies:**
- None.
**Status**
- No Progress.
## Append Board in Project Mode ## {#v6_pcb_append}
**Goal:**
Allow appending to the board when running Pcbnew in the project mode.
**Task:**
- Enable append board feature in project mode.
- Extend copy/paste feature to introduce paste special tool to add prefix
and/or suffix to nets of pasted/appended objects.
**Dependencies:**
- None.
**Status:**
- No progress.
## Grid and Auxiliary Origin Improvements ## {#v6_pcb_origin}
**Goal:**
Allow reset grid and auxiliary origin without hotkey only. Add support to
make all coordinates relative to the plot origin.
**Task:**
- Add reset grid and auxiliary origin commands to menu entry and/or toolbar
button.
- Add code to dialogs to allow coordinates to be specified relative to the
plot origin.
**Dependencies:**
- None.
**Status:**
- Relative coordinate entry in progress.
## Addition Mechanical Layers ## {#v6_pcb_mech_layers}
**Goal:**
Add more mechanical layers.
**Task:**
- Add remaining mechanical layers for a total of 32.
**Dependencies:**
- None.
**Status:**
- No progress.
## Layer Renaming ## {#v6_pcb_layer_rename}
**Goal:**
Allow mechanical layers to be renamed.
**Task:**
- Quote layer names in file format to support any printable characters in
layer names.
- Add user interface to allow mechanical layers to be renamed.
**Dependencies:**
- None.
**Status:**
- Quoted layer names complete.
## Stable Python API ## {#v6_pcb_python_api}
**Goal:**
Create a Python wrapper to hide the SWIG generated API.
**Task:**
- Document new Python API.
- Write Python API.
**Dependencies:**
- None.
**Status:**
- Initial technical specification drafted.
## Track Refining ## {#v6_pcb_track_refine}
**Goal:**
Add support for teardrops and automatically updating length tuning
meandering.
**Task:**
- Draft specification for track refining.
- Implement support for teardrops.
- Implement support for changing tuned length meandering.
**Dependencies:**
- None.
**Status:**
- Initial technical specification drafted.
## Groups and Rooms ## {#v6_pcb_groups}
**Goal:**
Support grouping board objects into reusable snippets.
**Task:**
- Write design specification.
- Update board file format to support grouped objects.
- Add user interface code to support grouped board objects.
**Dependencies:**
- None.
**Status:**
- Initial technical specification drafted.
## Pad Stack Support ## {#v6_pcb_padstack}
**Goal:**
Add padstack support.
**Task:**
- Write pad stack design specification.
- Update board file format to support pad stacks.
- Add user interface code to support designing pad stack objects.
- Update push and shove router to handle pad stacks.
- Update zone filling to handle pad stacks.
- Update DRC to handle pad stacks.
**Dependencies:**
- None.
**Status:**
- Initial technical specification drafted.
## Net Ties ## {#v6_pcb_net_ties}
**Goal:**
Add support for net ties.
**Task:**
- Write net tie design specification.
- Implement board file support for net ties.
- Implement schematic file support for net ties.
- Update ERC and DRC to handle net ties.
- Update netlist to pass net tie information from schematic to board.
- Add user interface support for net ties to editors.
**Dependencies:**
- [S-Expression File Format](#v6_sch_sexpr).
**Status:**
- No Progress.
## Anti-pad Improvements ## {#v6_pcb_anti_pad}
**Goal:**
Use anti-pads on vias and through hold pads on internal layers as required.
**Task:**-
- Revise zone filling algorithm to create anti-pad on internal layers.
**Dependencies:**
- None.
**Status:**
- No Progress.
## Thermal Relief Improvements ## {#v6_pcb_thermal_relief}
**Goal:**
Allow for custom thermal reliefs in zones and custom pad shapes.
**Task:**-
- Write technical specification to define requirements, alternate unions,
knockouts, union spokes, etc.
- Revise zone filling thermal relief support to handle new requirements.
- Update board file format for new thermal relief requirements.
- Add user interface support for thermal relief definitions.
**Dependencies:**
- None.
**Status:**
- No Progress.
## Merge KiCad2Step ## {#v6_pcb_kicad2step}
**Goal:**
Merge export to STEP file code from KiCad2Step so that conversion does
not run in a separate process.
**Task:**-
- Merge KiCad2Step code into Pcbnew code base.
- Remove unused parser code.
**Dependencies:**
- None.
**Status:**
- No Progress.
## 3D Model Improvements ## {#v6_pcb_3d_model_opacity}
**Goal:**
Add opacity to 3D model support and convert from path look up to library
table to access 3D models.
**Task:**-
- Add opacity support to footprint library file format.
- Add library table 3D model support to footprint library file format.
- Create remapping utility to map from path look up to library table look up.
- Add user interface support for 3D model opacity.
- Add user interface support accessing 3D models via library table.
**Dependencies:**
- None.
**Status:**
- No Progress.
## IPC-2581 Support ## {#v6_pcb_ipc_2581}
**Goal:**
Add support for exporting to and importing from IPC-2581.
**Task:**-
- Add IPC-2581 export code.
- Add IPC-2581 import code.
**Dependencies:**
- None.
**Status:**
- No Progress.
## Curved Trace Support ## {#v6_pcb}
**Goal:**
Add curved trace support to the board editor.
**Task:**-
- Add curved trace support to track object code.
- Add support to board file format for curved traces.
- Update zone fill algorithm to support curved fills.
- Update router to support curved traces.
- Update DRC to handle curved traces and fills.
**Dependencies:**
- None.
**Status:**
- No Progress.
# GerbView: Gerber File Viewer # {#v6_gerbview}
This section covers the source code for the GerbView gerber file viewer.
## Graphics Abstraction Layer ## {#v6_gerbview_gal}
**Goal:**
Graphics rendering unification.
**Task:**
- Port graphics rendering layer to GAL.
**Dependencies:**
- None.
**Status**
- No progress.
+311 -13
View File
@@ -3,16 +3,14 @@
This document is the KiCad Developer's road map document. It is a living
document that should be maintained as the project progresses. The goal of
this document is to provide an overview for developers of where the project
is headed beyond the current development cycle road map (currently
[version 6](./v6_road_map.html) to prevent resource conflicts and endless
rehashing of previously discussed topics. It is broken into sections for
each major component of the KiCad source code and documentation. It defines
tasks that developers an use to contribute to the project and provides updated
status information. Tasks should define clear objectives and avoid vague
generalizations so that a new developer can complete the task. It is not a
place for developers to add their own personal wish list It should only be
updated with approval of the project manager after discussion with the lead
developers.
is headed to prevent resource conflicts and endless rehashing of previously
discussed topics. It is broken into sections for each major component of
the KiCad source code and documentation. It defines tasks that developers
an use to contribute to the project and provides updated status information.
Tasks should define clear objective and avoid vague generalizations so that
a new developer can complete the task. It is not a place for developers to
add their own personal wish list It should only be updated with approval
of the project manager after discussion with the lead developers.
Each entry in the road map is made up of four sections. The goal should
be a brief description of the what the road map entry will accomplish. The
@@ -36,16 +34,59 @@ This section defines the tasks that affect all or most of KiCad or do not
fit under as specific part of the code such as the board editor or the
schematic editor.
## User Interface Modernization ## {#wxaui}
**Goal:**
Give KiCad a more modern user interface with dockable tool bars and windows.
Create perspectives to allow users to arrange dockable windows as they prefer.
**Task:**
- Take advantage of the advanced UI features in wxAui such as detaching and
hiding.
- Study ergonomics of various commercial/proprietary PCB applications (when
in doubt about any particular UI solution, check how it has been done in a
certain proprietary app that is very popular among OSHW folks and do exactly
opposite).
- Clean up menu structure. Menus must allow access to all features of the
program in a clear and logical way. Currently some functions of Pcbnew are
accessible only through tool bars
- Redesign dialogs, make sure they are following same style rules.
- Check quality of translations. Either fix or remove bad quality translations.
- Develop a global shortcut manager that allows the user assign arbitrary
shortcuts for any tool or action.
**Dependencies:**
- [wxWidgets 3](#wxwidgets3)
**Status:**
- No progress.
# Build Tools # {#build_tools}
This section covers build tools for both the KiCad source as well as the
custom dependency builds required to build KiCad.
# Common Library # {#common_lib}
This section covers the source code shared between all of the KiCad
applications
## Unified Rendering Framework ## {#unified_rendering}
**Goal:**
Provide a single framework for developing new tools. Port existing tools
to the new framework and remove the legacy framework tools.
**Task:**
- Port wxDC to GAL or get Cairo rendering to nearly the performance of the
current wxDC rendering so that we have a single framework to develop new
tools and we can continue to support systems that don't have a complete
OpenGL stack.
**Dependencies**
- [Tool framework](http://www.ohwr.org/projects/cern-kicad/wiki/WorkPackages)
**Status**
- No progress
# KiCad: Application Launcher # {#kicad}
This section applies to the source code for the KiCad application launcher.
@@ -54,19 +95,277 @@ This section applies to the source code for the KiCad application launcher.
# Eeschema: Schematic Editor # {#eeschema}
This section applies to the source code for the Eeschema schematic editor.
## Graphics Abstraction Layer Conversion ## {#sch_gal}
**Goal:**
Take advantage of advanced graphics rendering in Eeschema.
**Task:**
- Port graphics rendering to GAL.
**Dependencies:**
- None
**Status:**
- No progress.
## Port Editing Tools ## {#sch_tool_framework}
**Goal:**
Use standard tool framework across all applications.
**Task:**
- Rewrite editing tools using the new tool framework.
**Dependencies:**
- [GAL port](#sch_gal).
**Status:**
- No progress.
## Allow Use of System Fonts ## {#sch_sys_fonts}
**Goal:**
Currently the schematic editor uses the stroke drawn fonts which aren't really
necessary for accurated printing of schematics. Allow the use of system fonts
for schematic text.
**Task:**
- Determine which library for font handling makes the most sense, wxWidgets or
freetype.
- Add support for selecting text object fonts.
**Dependencies:**
- [S-expression schematic file format](#sch_sexpr).
**Status:**
- No progress.
# CvPcb: Footprint Association Tool # {#cvpcb}
This section covers the source code of the footprint assignment tool CvPcb.
# Pcbnew: Circuit Board Editor # {#pcbnew}
This section covers the source code of the board editing application Pcbnew.
## Model Export ## {#model_export}
**Goal:**
Provide improved solid modeling export to the file formats available in
OpenCascade.
**Task:**
- Add STEP 3D modeling capability.
- Add IGES 3D modeling capability.
- Add any other file formats supported by OpenCascade that make sense for
KiCad.
**Dependencies:**
- None
**Status:**
- None
## Linked Objects ## {#pcb_linked_objects}
**Goal:**
Provide a way to allow external objects such as footprints to be externally
linked in the board file so that changes in the footprint are automatically
updated. This will all a one to many object relationship which can pave the
way for real board modules.
**Task:**
- Add externally and internally linked objects to the file format to allow for
footprints and/or other board objects to be shared (one to many relationship)
instead of only supporting embedded objects (one to one relationship) that
can only be edited in place.
**Dependencies:**
- None.
**Status:**
- No progress.
## Pin and Part Swapping ## {#pcb_drc}
**Goal:**
Allow Pcbnew to perform pin and/or part swapping during layout so the user
does not have to do it in Eeschema and re-import the net list.
**Task:**
- Provide forward and back annotation between the schematic and board editors.
- Define netlist file format changes required to handle pin/part swapping.
- Update netlist file formatter and parser to handle file format changes.
- Develop a netlist comparison engine that will produce a netlist diff that
can be passed between the schematic and board editors.
- Create pin/part swap dialog to manipulate swappable pins and parts.
- Add support to handle net label back annotation changes.
**Dependencies:**
- [S-expression schematic file format](#sch_sexpr).
- [Convert to a single process application](#kiway).
**Status:**
- No progress.
## Clipboard Support ## {#fp_edit_clipboard}
**Goal:**
Provide clipboard cut and paste for footprints..
**Task:**
- Clipboard cut and paste to and from clipboard of footprints in footprint
editor.
**Dependencies:**
- None
**Status:**
- No progress.
## Segment End Point Snapping. ## {#segment_snapping}
**Goal:**
It is not uncommon for board edge segment end points to inadvertently not
be closed causing issues for the 3D viewer and exporting to different file
formats due the board outline not being a fully enclosed polygon. This
feature would add segment end snapping support to allow the board outline
to be fully enclosed. This feature would only need to be supported by the
GAL rendering.
**Tasks**
- Mark board edge segment ends with a drag indicator to make it visible to the
user that the segment end does not have an endpoint with any other board edge
segment.
- Allow the user to smap the unconnected segment end to the nearest segment end
point.
- Automatically connect unconnected segments with and additional segment when
opening the 3D viewer or exporting the board to another format. Warn the
user that an addition segment has be added and should be verified.
**Dependencies:**
- None
**Progress:**
- Initial discussion.
## Keepout Zones. ## {#keepout_zones}
**Goal:**
Add support for keepout zones on boards and footprints.
**Task:**
- Add keepout support to zone classes.
- Add keepout zone support to board editor.
- Add keepout zone support to library editor.
**Dependencies:**
- [DRC Improvements.](#drc_improvements)
**Progress:**
- Planning
## Net Highlighting ## {#pcb_net_highlight}
**Goal:**
Highlight rats nest links and/or traces when corresponding net in Eeschema is selected.
**Task:**
- Add communications link to handle net selection from Eeschema.
- Implement highlight algorithm for objects connected to the selected net.
- Highlight objects connected to net selected in Eeschema
**Dependencies:**
- None.
**Status:**
- No progress.
## Hatched Zone Filling ## {#pcb_hatched_zones}
**Goal:**
Currently Pcbnew only supports solid zone files. Add option to fill zones
with hatching.
**Task:**
- Determine zone fill method, required filling code, and file format requirements.
- Add hatch option and hatch configuration to zone dialog.
**Dependencies:**
- None.
**Status:**
- No progress.
## Board Stack Up Impedance Calculator ## {#pcb_impedance_calc}
**Goal:**
Provide a calculator to compute trace impedances using a full board stackup.
Maybe this should be included in the PCB calculator application.
**Task:**
- Design a trace impedance calculator that includes full board stackup.
**Dependencies:**
- None.
**Status:**
- No progress.
## Net Class Improvements ## {#pcb_net_class_improvements}
**Goal:**
Add support for route impedance, color selection, etc in net class object.
**Task:**
- Determine parameters to add to net class object.
- Implement file parser and formatter changes to support net class object
changes.
- Implement tools to work with new net class parameters.
- Create UI elements to configure new net class parameters.
- Update the render tab UI code to view traces by net class.
**Dependencies:**
- None.
**Status:**
- No progress.
## Ratsnest Improvements ## {#pcb_ratsnest_improvements}
**Goal:**
Add support for per net color and visibility settings.
**Task:**
- Implement UI code to configure ratsnest color and visibility.
- Update ratsnest code to handle per net color and visibility.
**Dependencies:**
- None.
**Status:**
- No progress.
# GerbView: Gerber File Viewer # {#gerbview}
This section covers the source code for the GerbView gerber file viewer.
## Graphics Abstraction Layer ## {#gerbview_gal}
**Goal:**
Graphics rendering unification.
**Task:**
- Port graphics rendering layer to GAL.
**Dependencies:**
- None.
**Status**
- No progress.
# Documentation # {#documentation}
This section defines the tasks for both the user and developer documentation.
@@ -81,7 +380,6 @@ This section defines the tasks for both the user and developer documentation.
**Status:**
- No progress.
# Unit Testing # {#unittest}
**Goal:**
-170
View File
@@ -1,170 +0,0 @@
# Technical To-Do List {#technical_todo}
Some work is blocked for technical reasons, and can only be done once
certain other criteria are met (e.g. library versions).
Because KiCad supports distributions with relatively long support cycles,
many of these workarounds will be required for some time, so they are easily
forgotten.
This section collects these so they can be dealt with when the project's
minimum version for that dependency is met. This kind of code should always be
documented in detail at the place of use, so that it's clear what action should
be taken in future.
[TOC]
# C++ Versions {#todo_cpp_version}
Newer C++ versions include features that make some of our current code unnecessary.
## C++11 {#todo_cpp_11}
This C++ standard version is already used by KiCad, but much code that pre-dates
the version switch exists and can be tidied.
* [`std::auto_ptr`](https://en.cppreference.com/w/cpp/memory/auto_ptr)
should be changed to [`std::unique_ptr`](https://en.cppreference.com/w/cpp/memory/unique_ptr).
`auto_ptr` is removed entirely in C++17.
## C++14 {#todo_cpp_14}
Compiler support:
* GCC: complete by GCC 5: [GCC C++14 support](https://gcc.gnu.org/projects/cxx-status.html#cxx14).
Provides:
* [`std::make_unique`](https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique)
is available. The "polyfill" in `make_unique.h` is no longer required and can
be removed.
## C++17 {#todo_cpp_17}
Compiler support:
* GCC: from GCC 5 to 7: [GCC C++17 support](https://gcc.gnu.org/projects/cxx-status.html#cxx17).
Provides:
* `OPT<>` can be replaced with [`std::optional`](https://en.cppreference.com/w/cpp/utility/optional).
Header `core/optional.h` can be removed and replaced with the built-in `<optional>`.
Needs [GCC 7][].
* [`std::filesystem`](https://en.cppreference.com/w/cpp/filesystem)
can replace `boost::filesystem` and the Boost dependency can be dropped entirely
from the CMake files.
# Compilers {#compilers}
Some compilers have bugs or limitations to C++ standard support.
## GCC {#todo_gcc}
Current versions:
* Debian Stretch: [6.3.0](https://packages.debian.org/stretch/gcc)
* Debian Buster: [8.3.0](https://packages.debian.org/buster/gcc)
* Ubuntu 14.04: [4.8.2](https://packages.ubuntu.com/trusty/gcc)
* Ubuntu 16.04: [5.3.1](https://packages.ubuntu.com/xenial/gcc)
* Ubuntu 18.04: [7.3.0](https://packages.ubuntu.com/bionic/gcc)
### GCC 7 {#todo_gcc_7}
* Fixes [bug #56480](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480)
(Explicit specialization in a different namespace). This
means the `BOOST_TEST_PRINT_NAMESPACE_OPEN` macro is not required, a namespace
alias can be used instead.
# 3rd Party Libraries # {#todo_third_party}
There are several places in KiCad where workarounds exist for defects in 3rd
party library limitations or defects.
## Boost ## {#todo_boost}
Current versions:
* Debian Stretch: [1.62](https://packages.debian.org/stretch/libboost-dev)
* Ubuntu 14.04: [1.54](https://packages.ubuntu.com/trusty/libboost-dev)
* Ubuntu 16.04: [1.58](https://packages.ubuntu.com/xenial/libboost-dev)
* Ubuntu 18.04: [1.65](https://packages.ubuntu.com/bionic/libboost-dev)
### 1.59 {#boost_1_59}
* Boost 1.59 brings a major overhaul of the [Boost test][] library.
* Many "Polyfills" un `unit_test_utils.h` can be removed:
* `BOOST_TEST_CONTEXT` and `BOOST_TEST_INFO` are available, remove the
polyfill macros.
* `boost::unit_test::expected_failures` is available, so can remove the
`HAVE_EXPECTED_FAILURES` guard macro.
* `BOOST_TEST_PRINT_NAMESPACE_OPEN` doesn't need to switch the namespace
### 1.64 #### {#todo_boost_1_64}
* [Boost test][]
* Boost test print helper for `nullptr_t` exists, can remove our polyfill
* The [`boost_test_print_type`](https://www.boost.org/doc/libs/master/libs/test/doc/html/boost_test/test_output/test_tools_support_for_logging/testing_tool_output_disable.html)
customisation point exists and the old code using `BOOST_TEST_PRINT_NAMESPACE_OPEN`
can be converted to use that.
## CMake ### {#todo_cmake}
Current versions:
* Debian Stretch: [3.7.2](https://packages.debian.org/stretch/cmake)
* Ubuntu 14.04: [2.8.12](https://packages.ubuntu.com/trusty/cmake)
* Ubuntu 16.04: [3.5.1](https://packages.ubuntu.com/xenial/cmake)
* Ubuntu 18.04: [3.10.2](https://packages.ubuntu.com/bionic/cmake)
### 3.1 {#todo_cmake_3_1}
* Can remove [CMake policy CMP0025](https://cmake.org/cmake/help/v3.0/policy/CMP0025.html)
from root CMake
### 3.3 {#todo_cmake_3_3}
* Can remove check for [CMake policy CMP0063](https://cmake.org/cmake/help/git-stage/policy/CMP0063.html)
entirely (the policy exists as of v3.3 and the default is correct).
### 3.5 {#todo_cmake_3_5}
* Can use `target_link_libraries(foo Boost::boost)` for Boost header-only libraries,
rather than `${Boost_INCLUDE_DIRS}`.
C.f. [Github commit](https://github.com/Kitware/CMake/commit/3f9b081f6ee85e0691c36496d989edbe8382589d)
## OpenSSL {#todo_openssl}
Current versions:
* Debian Stretch: [1.0.1](https://packages.debian.org/stretch/openssl)
* Ubuntu 14.04: [1.0.1](https://packages.ubuntu.com/trusty/openssl)
* Ubuntu 16.04: [1.0.2](https://packages.ubuntu.com/xenial/openssl)
* Ubuntu 18.04: [1.1.0](https://packages.ubuntu.com/bionic/openssl)
### 1.1.0 {#todo_openssl_1_1_0}
* Can remove all locking code from `kicad_curl.cpp`. From v1.1.0, this is no
longer required. C.f. [OpenSSL issue 1260](https://github.com/openssl/openssl/issues/1260)
## wxWidgets {#todo_wx}
Current versions:
* Debian Stretch: [3.0.2](https://packages.debian.org/stretch/wx-common)
* Ubuntu 14.04: [3.0.0](https://packages.ubuntu.com/trusty/wx-common)
* Ubuntu 16.04: [3.0.2](https://packages.ubuntu.com/xenial/wx-common)
* Ubuntu 18.04: [3.0.4](https://packages.ubuntu.com/bionic/wx-common)
### 3.1 {#todo_wx_3_1}
This is a development release, but it brings its own set of features and fixes.
Most of these will not be available in general distributions until v3.2.
* DPI scaling on GTK+ available (also needs GTK+ 3.10).
C.f. [this commit](https://github.com/wxWidgets/wxWidgets/commit/f95fd11e08482697c3b0c0a9d2ccd661134480ee)
`dpi_scaling.cpp` should continue to work normally, but the config should
no longer be required and the scaling should auto-detect.
[Boost test]: https://github.com/boostorg/test
[GCC 7]: https://gcc.gnu.org/gcc-7/changes.html
-25
View File
@@ -44,22 +44,6 @@ Common useful patterns:
You can rebuild just a specific test with CMake to avoid rebuilding
everything when working on a small area, e.g. `make qa_common`.
### Automated testing {#automated-testing}
The unit tests can be run on automated Continuous Integration (CI) systems.
By default, tests output human-readable results, which is useful when
developing or debugging, but not so useful for automated test reporting.
Systems that can parse XML test results can enable these by setting the
`KICAD_TEST_XML_OUTPUT` option to `ON`. The test results are then output
as files ending in `.xml` in the `qa` subdirectory.
Test results are written to the build directory as follows:
* Boost units tests: one XML file per test with the extension `.boost-results.xml`
* Python unit tests: one directory per test with the extension `.xunit-results.xml`.
These directories contain one `.xml` file per Python test case file.
## Writing Boost tests {#writing-boost-tests}
Boost unit tests are straightforward to write. Individual test cases can be
@@ -130,15 +114,6 @@ the triggering of a bug prior to fixing it. This is advantageous, not only from
a "project history" perspective, but also to ensure that the test you write to
catch the bug in question does, in fact, catch the bug in the first place.
### Assertions {#test-assertions}
It is possible to check for assertions in unit tests. When running the unit
tests, `wxASSERT` calls are caught and re-thrown as exceptions. You can then use
the `CHECK_WX_ASSERT` macro to check this is called in Debug builds. In Release
builds, the check is not run, as `wxASSERT` is disabled in these builds.
You can use this to ensure that code rejects invalid input correctly.
## Python modules {#python-tests}
The Pcbnew Python modules have some test programs in the `qa` directory.
+30 -15
View File
@@ -71,7 +71,8 @@ or not, has a `TOOL_ACTION` instance. This provides:
GAL tools inherit the `TOOL_BASE` class. A Pcbnew tool will generally
inherit from `PCB_TOOL`, which is a `TOOL_INTERACTIVE`, which is
a `TOOL_BASE`. Eeschema tools inherit directly from `TOOL_INTERACTIVE`.
a `TOOL_BASE`. In the future, Eeschema tools will be developed in a similar
manner.
The tool class for a tool can be fairly lightweight - much of the
functionality is inherited from the tool's base classes. These base
@@ -104,18 +105,18 @@ The major parts of tool's implementation are the functions used by the
when the GAL canvas is switched, and also just after tool registration.
Any resource claimed from the GAL view or the model must be released
in this function, as they could become invalid.
* `setTransitions()` function, which maps tool actions to functions
* `SetTransitions()` function, which maps tool actions to functions
within the tool class.
* One or more functions to call when actions are invoked. Many actions
can invoke the same function if desired. The functions have the
following signature:
* int TOOL_CLASS::FunctionName( const TOOL_EVENT& aEvent )
* Returning 0 means success.
* Returning 0 means success.
* These functions are called by the `TOOL_MANAGER` in case an associated
event arrives (association is created with TOOL_INTERACTIVE::Go() function).
* These can generally be private, as they are not called directly
by any other code, but are invoked by the tool manager's coroutine
framework according to the `setTransitions()` map.
framework according to the `SetTransitions()` map.
### Interactive actions {#interactive-actions}
@@ -131,7 +132,7 @@ a cursor change and by setting a status string.
auto& frame = *getEditFrame<PCB_EDIT_FRAME>();
// set tool hint and cursor (actually looks like a crosshair)
frame.SetToolID( ID_LOCAL_RATSNEST_BUTT,
frame.SetToolID( ID_PCB_SHOW_1_RATSNEST_BUTT,
wxCURSOR_PENCIL, _( "Select item to move left" ) );
getViewControls()->ShowCursor( true );
@@ -170,7 +171,7 @@ provide their own context menu. Tools that are called only from other
tools' interactive modes add their menu items to those tools' menus.
To use a `TOOL_MENU` in a top level tool, simply add one as a member
and initialize it with a reference to the tools at construction time:
and initialise it with a reference to the tools at construction time:
TOOL_NAME: public PCB_TOOL
{
@@ -214,7 +215,7 @@ The procedure of a commit is:
unless you are going to abort the commit.
* When removing an item, call `Remove( item )`. You should not delete the
removed item, it will be stored in the undo buffer.
* Finalize the commit with `Push( "Description" )`. If you performed
* Finalise the commit with `Push( "Description" )`. If you performed
no modifications, additions or removals, this is a no-op, so you
don't need to check if you made any changes before pushing.
@@ -283,7 +284,7 @@ In `pcbnew/tools/pcb_actions.h`, we add the following to the
static TOOL_ACTION uselessFixedCircle;
Definitions of actions generally happen in the .cpp of the relevant tool.
It doesn't actually matter where the definition occurs (the declaration
It doesn't actually matter where the defintion occurs (the declaration
is enough to use the action), as long as it's linked in the end.
Similar tools should always be defined together.
@@ -336,11 +337,11 @@ the following class:
///> React to model/view changes
void Reset( RESET_REASON aReason ) override;
///> Basic initialization
///> Basic initalization
bool Init() override;
///> Bind handlers to corresponding TOOL_ACTIONs
void setTransitions() override;
void SetTransitions() override;
private:
///> 'Move selected left' interactive tool
@@ -391,7 +392,7 @@ Below you will find the contents of useless_tool.cpp:
/*
* Tool-specific action definitions
* Tool-specific action defintions
*/
TOOL_ACTION PCB_ACTIONS::uselessMoveItemLeft(
"pcbnew.UselessTool.MoveItemLeft",
@@ -442,7 +443,7 @@ Below you will find the contents of useless_tool.cpp:
void USELESS_TOOL::moveLeftInt()
{
// we will call actions on the selection tool to get the current
// selection. The selection tools will handle item disambiguation
// selection. The selection tools will handle item deisambiguation
SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
assert( selectionTool );
@@ -534,7 +535,7 @@ Below you will find the contents of useless_tool.cpp:
}
void USELESS_TOOL::setTransitions()
void USELESS_TOOL::SetTransitions()
{
Go( &USELESS_TOOL::fixedCircle, PCB_ACTIONS::uselessFixedCircle.MakeEvent() );
Go( &USELESS_TOOL::moveLeft, PCB_ACTIONS::uselessMoveItemLeft.MakeEvent() );
@@ -545,8 +546,22 @@ Below you will find the contents of useless_tool.cpp:
The last step is to register the tool in the tool manager.
This is done in the frame's `setupTools()` function for whichever
`EDA_DRAW_FRAME` support that tool.
This is done by adding a new instance of the tool to the
`registerAllTools()` function in `pcbnew/tools/tools_common.cpp`.
// add your tool header
#include <tools/useless_tool.h>
void registerAllTools( TOOL_MANAGER *aToolManager )
{
....
aToolManager->RegisterTool( new USELESS_TOOL );
....
}
If your new tool applies in the module editor, you also need to do this
in `FOOTPRINT_EDIT_FRAME::setupTools()`. Generally, each kind of
`EDA_DRAW_FRAME` that can use GAL will have a place to do this.
## Build and run {#tutorial-summary}
-17
View File
@@ -1,17 +0,0 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+2 -4
View File
@@ -1,7 +1,7 @@
The majority of KiCad's source code is developed and distributed under the terms
of the GPLv3 or later. However, It does include some third-party code licensed
under AGPLv3 or later as well as sections licensed under the BOOST license v1.0,
the ISC license and the MIT license.
under AGPLv3 or later as well as sections licensed under the BOOST license v1.0
and portions licensed under the ISC license.
These licenses are compatible, but a combined works as is will be governed under
the terms of the AGPLv3 (or later). This includes any binary distribution of the
@@ -15,8 +15,6 @@ Licensed under BOOSTv1:
- libcontext [https://github.com/boostorg/context], sources in common/system/libcontext.cpp
Licensed under ISC:
- portions of code in include/geometry/polygon_triangulation.h
Licensed under MIT:
- tinyspline_lib in dxflib_qcad/tinyspline_lib
Licensed under CC-BY-SA-4.0:
- All the demo files provided in demos/*
Licensed under GPLv3 (or later):
+1 -1
View File
@@ -7,7 +7,7 @@ AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
+3 -9
View File
@@ -3,8 +3,6 @@ if( COMPILER_SUPPORTS_WSHADOW )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WSHADOW_FLAGS}")
endif()
add_definitions( -DBITMAP_2_CMP )
include_directories( BEFORE ${INC_BEFORE} )
include_directories(
../potrace
@@ -13,10 +11,9 @@ include_directories(
set( BITMAP2COMPONENT_SRCS
../common/single_top.cpp
bitmap2cmp_main.cpp
bitmap2component.cpp
bitmap2cmp_gui_base.cpp
bitmap2cmp_gui.cpp
bitmap2cmp_gui_base
bitmap2cmp_gui
)
set_source_files_properties( ../common/single_top.cpp PROPERTIES
@@ -57,9 +54,6 @@ target_link_libraries( bitmap2component
)
if( APPLE )
include( ${CMAKE_MODULE_PATH}/KiCadVersion.cmake )
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist @ONLY )
set_target_properties( bitmap2component PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist
)
@@ -92,6 +86,6 @@ endif()
if( false ) # linker map with cross reference
set_target_properties( bitmap2component PROPERTIES
LINK_FLAGS "-Wl,-cref,-Map=bitmap2component.map"
LINK_FLAGS "${TO_LINKER},-cref ${TO_LINKER},-Map=bitmap2component.map"
)
endif()
@@ -17,17 +17,17 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string>@KICAD_VERSION_FULL@</string>
<string></string>
<key>CFBundleName</key>
<string>Bitmap 2 Component</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>@KICAD_VERSION@</string>
<string></string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>@KICAD_VERSION_FULL@</string>
<string></string>
<key>CSResourcesFileMapped</key>
<true/>
<key>LSRequiresCarbon</key>
+280 -428
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 1992-2010 jean-pierre.charras
* Copyright (C) 1992-2019 Kicad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2019 Kicad Developers, see change_log.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
@@ -22,22 +22,23 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "bitmap2cmp_gui.h"
#include "bitmap2component.h"
#include <bitmap_io.h>
#include <bitmaps.h>
#include <build_version.h>
#include <confirm.h>
#include <fctsys.h>
#include <gestfich.h>
#include <kiface_i.h>
#include <kiway.h>
#include <macros.h>
#include <pgm_base.h>
#include <potracelib.h>
#include <confirm.h>
#include <gestfich.h>
#include <wildcards_and_files_ext.h>
#include <wx/clipbrd.h>
#include <bitmap_io.h>
#include <build_version.h>
#include <menus_helpers.h>
#include <kiway.h>
#include <kiface_i.h>
#include <wx/rawbmp.h>
#include <potracelib.h>
#include "bitmap2component.h"
#include "bitmap2cmp_gui_base.h"
@@ -52,137 +53,141 @@
#define KEYWORD_LAST_MODLAYER wxT( "Last_modlayer" )
#define KEYWORD_BINARY_THRESHOLD wxT( "Threshold" )
#define KEYWORD_BW_NEGATIVE wxT( "Negative_choice" )
#define KEYWORD_UNIT_SELECTION wxT( "Unit_selection" )
#define DEFAULT_DPI 300 // the image DPI used in formats that do not define a DPI
#define DEFAULT_DPI 300 // Default resolution in Bit per inches
IMAGE_SIZE::IMAGE_SIZE()
extern int bitmap2component( potrace_bitmap_t* aPotrace_bitmap, FILE* aOutfile,
OUTPUT_FMT_ID aFormat, int aDpi_X, int aDpi_Y,
BMP2CMP_MOD_LAYER aModLayer );
/**
* Class BM2CMP_FRAME_BASE
* is the main frame for this application
*/
class BM2CMP_FRAME : public BM2CMP_FRAME_BASE
{
m_outputSize = 0.0;
m_originalDPI = DEFAULT_DPI;
m_originalSizePixels = 0;
m_unit = MILLIMETRES;
}
private:
wxImage m_Pict_Image;
wxBitmap m_Pict_Bitmap;
wxImage m_Greyscale_Image;
wxBitmap m_Greyscale_Bitmap;
wxImage m_NB_Image;
wxBitmap m_BN_Bitmap;
wxSize m_imageDPI; // The initial image resolution. When unknown,
// set to DEFAULT_DPI x DEFAULT_DPI per Inch
bool m_Negative;
wxString m_BitmapFileName;
wxString m_ConvertedFileName;
wxSize m_frameSize;
wxPoint m_framePos;
std::unique_ptr<wxConfigBase> m_config;
public:
BM2CMP_FRAME( KIWAY* aKiway, wxWindow* aParent );
~BM2CMP_FRAME();
void IMAGE_SIZE::SetOutputSizeFromInitialImageSize()
{
// Set the m_outputSize value from the m_originalSizePixels and the selected unit
if( m_unit == MILLIMETRES )
// overload KIWAY_PLAYER virtual
bool OpenProjectFiles( const std::vector<wxString>& aFilenames, int aCtl=0 ) override;
private:
// Event handlers
void OnPaintInit( wxPaintEvent& event ) override;
void OnPaintGreyscale( wxPaintEvent& event ) override;
void OnPaintBW( wxPaintEvent& event ) override;
void OnLoadFile( wxCommandEvent& event ) override;
void OnExport( wxCommandEvent& event ) override;
/**
* Generate a schematic library which contains one component:
* the logo
*/
void OnExportEeschema();
/**
* Generate a module in S expr format
*/
void OnExportPcbnew();
/**
* Generate a postscript file
*/
void OnExportPostScript();
/**
* Generate a file suitable to be copied into a page layout
* description file (.kicad_wks file
*/
void OnExportLogo();
void Binarize( double aThreshold ); // aThreshold = 0.0 (black level) to 1.0 (white level)
void OnNegativeClicked( wxCommandEvent& event ) override;
void OnThresholdChange( wxScrollEvent& event ) override;
void OnResolutionChange( wxCommandEvent& event ) override;
// called when texts controls which handle the image resolution
// lose the focus, to ensure the right values are displayed
// because the m_imageDPI are clipped to acceptable values, and
// the text displayed could be differ during text editing
// We are using ChangeValue here to avoid generating a wxEVT_TEXT event.
void UpdateDPITextValueX( wxMouseEvent& event )
{
m_outputSize = (double)GetOriginalSizePixels() / m_originalDPI * 25.4;
}
else if( m_unit == INCHES )
{
m_outputSize = (double)GetOriginalSizePixels() / m_originalDPI;
}
else
{
m_outputSize = m_originalDPI;
m_DPIValueX->ChangeValue( wxString::Format( wxT( "%d" ), m_imageDPI.x ) );
}
}
int IMAGE_SIZE::GetOutputDPI()
{
int outputDPI;
if( m_unit == MILLIMETRES )
void UpdateDPITextValueY( wxMouseEvent& event )
{
outputDPI = GetOriginalSizePixels() / ( m_outputSize / 25.4 );
}
else if( m_unit == INCHES )
{
outputDPI = GetOriginalSizePixels() / m_outputSize;
}
else
{
outputDPI = KiROUND( m_outputSize );
m_DPIValueY->ChangeValue( wxString::Format( wxT( "%d" ), m_imageDPI.y ) );
}
return outputDPI;
}
void IMAGE_SIZE::SetUnit( EDA_UNITS_T aUnit )
{
// Set the unit used for m_outputSize, and convert the old m_outputSize value
// to the value in new unit
if( aUnit == m_unit )
return;
// Convert m_outputSize to mm:
double size_mm;
if( m_unit == MILLIMETRES )
{
size_mm = m_outputSize;
}
else if( m_unit == INCHES )
{
size_mm = m_outputSize * 25.4;
}
else
{
// m_outputSize is the DPI, not an image size
// the image size is m_originalSizePixels / m_outputSize (in inches)
if( m_outputSize )
size_mm = m_originalSizePixels / m_outputSize * 25.4;
else
size_mm = 0;
}
// Convert m_outputSize to new value:
if( aUnit == MILLIMETRES )
{
m_outputSize = size_mm;
}
else if( aUnit == INCHES )
{
m_outputSize = size_mm / 25.4;
}
else
{
if( size_mm )
m_outputSize = m_originalSizePixels / size_mm * 25.4;
else
m_outputSize = 0;
}
m_unit = aUnit;
}
void NegateGreyscaleImage( );
void ExportFile( FILE* aOutfile, OUTPUT_FMT_ID aFormat );
void updateImageInfo();
void OnFormatChange( wxCommandEvent& event ) override;
};
BM2CMP_FRAME::BM2CMP_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
BM2CMP_FRAME_BASE( aParent )
{
SetKiway( this, aKiway );
int tmp;
m_config = GetNewConfig( Pgm().App().GetAppName() );
m_config->Read( KEYWORD_FRAME_POSX, & m_framePos.x, -1 );
m_config->Read( KEYWORD_FRAME_POSY, & m_framePos.y, -1 );
m_config->Read( KEYWORD_FRAME_SIZEX, & m_frameSize.x, -1 );
m_config->Read( KEYWORD_FRAME_SIZEY, & m_frameSize.y, -1 );
m_config->Read( KEYWORD_LAST_INPUT_FILE, &m_BitmapFileName );
m_config->Read( KEYWORD_LAST_OUTPUT_FILE, &m_ConvertedFileName );
wxString unitList[] =
if( m_config->Read( KEYWORD_BINARY_THRESHOLD, &tmp ) )
m_sliderThreshold->SetValue( tmp );
m_config->Read( KEYWORD_BW_NEGATIVE, &tmp, 0 );
m_Negative = tmp != 0;
m_checkNegative->SetValue( m_Negative );
if( m_config->Read( KEYWORD_LAST_FORMAT, &tmp ) )
{
_("mm"), _("Inch"), _("DPI")
};
if( tmp < 0 || tmp > FINAL_FMT )
tmp = PCBNEW_KICAD_MOD;
for( int ii = 0; ii < 3; ii++ )
m_PixelUnit->Append( unitList[ii] );
m_radioBoxFormat->SetSelection( tmp );
}
LoadSettings( m_config.get() );
if( tmp == PCBNEW_KICAD_MOD )
m_radio_PCBLayer->Enable( true );
else
m_radio_PCBLayer->Enable( false );
m_outputSizeX.SetUnit( getUnitFromSelection() );
m_outputSizeY.SetUnit( getUnitFromSelection() );
m_outputSizeX.SetOutputSize( 0, getUnitFromSelection() );
m_outputSizeY.SetOutputSize( 0, getUnitFromSelection() );
m_UnitSizeX->ChangeValue( FormatOutputSize( m_outputSizeX.GetOutputSize() ) );
m_UnitSizeY->ChangeValue( FormatOutputSize( m_outputSizeY.GetOutputSize() ) );
//Set icon for aspect ratio
m_AspectRatioLocked = true;
m_AspectRatio = 1;
m_AspectRatioLockButton->SetBitmap( KiBitmap( locked_xpm ) );
if( m_config->Read( KEYWORD_LAST_MODLAYER, &tmp ) )
{
if( (unsigned) tmp > MOD_LYR_FINAL ) // Out of range
m_radio_PCBLayer->SetSelection( MOD_LYR_FSILKS );
else
m_radio_PCBLayer->SetSelection( tmp );
}
// Give an icon
wxIcon icon;
@@ -193,9 +198,9 @@ BM2CMP_FRAME::BM2CMP_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
SetSize( m_framePos.x, m_framePos.y, m_frameSize.x, m_frameSize.y );
m_buttonExportFile->Enable( false );
m_buttonExportClipboard->Enable( false );
m_buttonExport->Enable( false );
m_imageDPI.x = m_imageDPI.y = DEFAULT_DPI; // Default resolution in Bit per inches
if ( m_framePos == wxDefaultPosition )
Centre();
@@ -204,88 +209,27 @@ BM2CMP_FRAME::BM2CMP_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
BM2CMP_FRAME::~BM2CMP_FRAME()
{
SaveSettings( m_config.get() );
/*
* This needed for OSX: avoids further OnDraw processing after this
* destructor and before the native window is destroyed
*/
this->Freeze( );
}
void BM2CMP_FRAME::LoadSettings( wxConfigBase* aCfg )
{
int tmp;
aCfg->Read( KEYWORD_FRAME_POSX, & m_framePos.x, -1 );
aCfg->Read( KEYWORD_FRAME_POSY, & m_framePos.y, -1 );
aCfg->Read( KEYWORD_FRAME_SIZEX, & m_frameSize.x, -1 );
aCfg->Read( KEYWORD_FRAME_SIZEY, & m_frameSize.y, -1 );
aCfg->Read( KEYWORD_LAST_INPUT_FILE, &m_BitmapFileName );
aCfg->Read( KEYWORD_LAST_OUTPUT_FILE, &m_ConvertedFileName );
int u_select = 0;
aCfg->Read( KEYWORD_UNIT_SELECTION, &u_select, 0 );
if( u_select < 0 || u_select > 2 ) // Validity control
u_select = 0;
m_PixelUnit->SetSelection( u_select );
if( aCfg->Read( KEYWORD_BINARY_THRESHOLD, &tmp ) )
m_sliderThreshold->SetValue( tmp );
aCfg->Read( KEYWORD_BW_NEGATIVE, &tmp, 0 );
m_Negative = tmp != 0;
m_checkNegative->SetValue( m_Negative );
m_exportToClipboard = false;
m_AspectRatioLocked = false;
if( aCfg->Read( KEYWORD_LAST_FORMAT, &tmp ) )
{
if( tmp < 0 || tmp > FINAL_FMT )
tmp = PCBNEW_KICAD_MOD;
m_rbOutputFormat->SetSelection( tmp );
}
if( tmp == PCBNEW_KICAD_MOD )
m_rbPCBLayer->Enable( true );
else
m_rbPCBLayer->Enable( false );
if( aCfg->Read( KEYWORD_LAST_MODLAYER, &tmp ) )
{
if( (unsigned) tmp > MOD_LYR_FINAL ) // Out of range
m_rbPCBLayer->SetSelection( MOD_LYR_FSILKS );
else
m_rbPCBLayer->SetSelection( tmp );
}
}
void BM2CMP_FRAME::SaveSettings( wxConfigBase* aCfg )
{
if( !aCfg )
if( !m_config || IsIconized() )
return;
m_frameSize = GetSize();
m_framePos = GetPosition();
if( !IsIconized() )
{
aCfg->Write( KEYWORD_FRAME_POSX, (long) m_framePos.x );
aCfg->Write( KEYWORD_FRAME_POSY, (long) m_framePos.y );
aCfg->Write( KEYWORD_FRAME_SIZEX, (long) m_frameSize.x );
aCfg->Write( KEYWORD_FRAME_SIZEY, (long) m_frameSize.y );
}
m_config->Write( KEYWORD_FRAME_POSX, (long) m_framePos.x );
m_config->Write( KEYWORD_FRAME_POSY, (long) m_framePos.y );
m_config->Write( KEYWORD_FRAME_SIZEX, (long) m_frameSize.x );
m_config->Write( KEYWORD_FRAME_SIZEY, (long) m_frameSize.y );
m_config->Write( KEYWORD_LAST_INPUT_FILE, m_BitmapFileName );
m_config->Write( KEYWORD_LAST_OUTPUT_FILE, m_ConvertedFileName );
m_config->Write( KEYWORD_BINARY_THRESHOLD, m_sliderThreshold->GetValue() );
m_config->Write( KEYWORD_BW_NEGATIVE, m_checkNegative->IsChecked() ? 1 : 0 );
m_config->Write( KEYWORD_LAST_FORMAT, m_radioBoxFormat->GetSelection() );
m_config->Write( KEYWORD_LAST_MODLAYER, m_radio_PCBLayer->GetSelection() );
aCfg->Write( KEYWORD_LAST_INPUT_FILE, m_BitmapFileName );
aCfg->Write( KEYWORD_LAST_OUTPUT_FILE, m_ConvertedFileName );
aCfg->Write( KEYWORD_BINARY_THRESHOLD, m_sliderThreshold->GetValue() );
aCfg->Write( KEYWORD_BW_NEGATIVE, m_checkNegative->IsChecked() ? 1 : 0 );
aCfg->Write( KEYWORD_LAST_FORMAT, m_rbOutputFormat->GetSelection() );
aCfg->Write( KEYWORD_LAST_MODLAYER, m_rbPCBLayer->GetSelection() );
aCfg->Write( KEYWORD_UNIT_SELECTION, m_PixelUnit->GetSelection() );
/* This needed for OSX: avoids further OnDraw processing after this
* destructor and before the native window is destroyed
*/
this->Freeze( );
}
@@ -387,41 +331,33 @@ bool BM2CMP_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, int
m_Pict_Bitmap = wxBitmap( m_Pict_Image );
int h = m_Pict_Bitmap.GetHeight();
int w = m_Pict_Bitmap.GetWidth();
// Determine image resolution in DPI (does not existing in all formats).
// the resolution can be given in bit per inches or bit per cm in file
m_imageDPI.x = m_Pict_Image.GetOptionInt( wxIMAGE_OPTION_RESOLUTIONX );
m_imageDPI.y = m_Pict_Image.GetOptionInt( wxIMAGE_OPTION_RESOLUTIONY );
int imageDPIx = m_Pict_Image.GetOptionInt( wxIMAGE_OPTION_RESOLUTIONX );
int imageDPIy = m_Pict_Image.GetOptionInt( wxIMAGE_OPTION_RESOLUTIONY );
if( imageDPIx > 1 && imageDPIy > 1 )
if( m_imageDPI.x > 1 && m_imageDPI.y > 1 )
{
if( m_Pict_Image.GetOptionInt( wxIMAGE_OPTION_RESOLUTIONUNIT ) == wxIMAGE_RESOLUTION_CM )
{
imageDPIx = KiROUND( imageDPIx * 2.54 );
imageDPIy = KiROUND( imageDPIy * 2.54 );
// When the initial resolution is given in bits per cm,
// experience shows adding 1.27 to the resolution converted in dpi
// before convert to int value reduce the conversion error
// but it is not perfect
m_imageDPI.x = m_imageDPI.x * 2.54 + 1.27;
m_imageDPI.y = m_imageDPI.y * 2.54 + 1.27;
}
}
else // fallback to a default value (DEFAULT_DPI)
{
imageDPIx = imageDPIy = DEFAULT_DPI;
}
m_InputXValueDPI->SetLabel( wxString::Format( wxT( "%d" ), imageDPIx ) );
m_InputYValueDPI->SetLabel( wxString::Format( wxT( "%d" ), imageDPIy ) );
int h = m_Pict_Bitmap.GetHeight();
int w = m_Pict_Bitmap.GetWidth();
m_AspectRatio = (double) w / h;
m_outputSizeX.SetOriginalDPI( imageDPIx );
m_outputSizeX.SetOriginalSizePixels( w );
m_outputSizeY.SetOriginalDPI( imageDPIy );
m_outputSizeY.SetOriginalSizePixels( h );
// Update display to keep aspect ratio
auto fakeEvent = wxCommandEvent();
OnSizeChangeX( fakeEvent );
else // fallback to the default value
m_imageDPI.x = m_imageDPI.y = DEFAULT_DPI;
// Display image info:
// We are using ChangeValue here to avoid generating a wxEVT_TEXT event.
m_DPIValueX->ChangeValue( wxString::Format( wxT( "%d" ), m_imageDPI.x ) );
m_DPIValueY->ChangeValue( wxString::Format( wxT( "%d" ), m_imageDPI.y ) );
updateImageInfo();
m_InitialPicturePanel->SetVirtualSize( w, h );
@@ -454,166 +390,51 @@ bool BM2CMP_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, int
m_NB_Image = m_Greyscale_Image;
Binarize( (double) m_sliderThreshold->GetValue()/m_sliderThreshold->GetMax() );
m_buttonExportFile->Enable( true );
m_buttonExportClipboard->Enable( true );
m_outputSizeX.SetOutputSizeFromInitialImageSize();
m_UnitSizeX->ChangeValue( FormatOutputSize( m_outputSizeX.GetOutputSize() ) );
m_outputSizeY.SetOutputSizeFromInitialImageSize();
m_UnitSizeY->ChangeValue( FormatOutputSize( m_outputSizeY.GetOutputSize() ) );
m_buttonExport->Enable( true );
return true;
}
// return a string giving the output size, according to the selected unit
wxString BM2CMP_FRAME::FormatOutputSize( double aSize )
{
wxString text;
if( getUnitFromSelection() == MILLIMETRES )
{
text.Printf( "%.1f", aSize );
}
else if( getUnitFromSelection() == INCHES )
{
text.Printf( "%.2f", aSize );
}
else
{
text.Printf( "%d", KiROUND( aSize ) );
}
return text;
}
void BM2CMP_FRAME::updateImageInfo()
{
// Note: the image resolution text controls are not modified
// here, to avoid a race between text change when entered by user and
// a text change if it is modified here.
int h = m_Pict_Bitmap.GetHeight();
int w = m_Pict_Bitmap.GetWidth();
int nb = m_Pict_Bitmap.GetDepth();
if( m_Pict_Bitmap.IsOk() )
{
int h = m_Pict_Bitmap.GetHeight();
int w = m_Pict_Bitmap.GetWidth();
int nb = m_Pict_Bitmap.GetDepth();
m_SizeXValue->SetLabel( wxString::Format( wxT( "%d" ), w ) );
m_SizeYValue->SetLabel( wxString::Format( wxT( "%d" ), h ) );
m_BPPValue->SetLabel( wxString::Format( wxT( "%d" ), nb ) );
m_SizeXValue->SetLabel( wxString::Format( wxT( "%d" ), w ) );
m_SizeYValue->SetLabel( wxString::Format( wxT( "%d" ), h ) );
m_BPPValue->SetLabel( wxString::Format( wxT( "%d" ), nb ) );
}
m_SizeXValue_mm->SetLabel( wxString::Format( wxT( "%.1f" ),
(double) w / m_imageDPI.x * 25.4 ) );
m_SizeYValue_mm->SetLabel( wxString::Format( wxT( "%.1f" ),
(double) h / m_imageDPI.y * 25.4 ) );
}
EDA_UNITS_T BM2CMP_FRAME::getUnitFromSelection()
void BM2CMP_FRAME::OnResolutionChange( wxCommandEvent& event )
{
// return the EDA_UNITS_T from the m_PixelUnit choice
switch( m_PixelUnit->GetSelection() )
{
case 1:
return INCHES;
long tmp;
case 2:
return UNSCALED_UNITS;
if( m_DPIValueX->GetValue().ToLong( &tmp ) )
m_imageDPI.x = tmp;
case 0:
default:
break;
}
if( m_DPIValueY->GetValue().ToLong( &tmp ) )
m_imageDPI.y = tmp;
return MILLIMETRES;
}
if( m_imageDPI.x < 32 )
m_imageDPI.x = 32;
void BM2CMP_FRAME::OnSizeChangeX( wxCommandEvent& event )
{
double new_size;
if( m_UnitSizeX->GetValue().ToDouble( &new_size ) )
{
if( m_AspectRatioLocked )
{
double calculatedY = new_size / m_AspectRatio;
if( getUnitFromSelection() == UNSCALED_UNITS )
{
// for units in DPI, keeping aspect ratio cannot use m_AspectRatioLocked.
// just rescale the other dpi
double ratio = new_size / m_outputSizeX.GetOutputSize();
calculatedY = m_outputSizeY.GetOutputSize() * ratio;
}
m_outputSizeY.SetOutputSize( calculatedY, getUnitFromSelection() );
m_UnitSizeY->ChangeValue( FormatOutputSize( m_outputSizeY.GetOutputSize() ) );
}
m_outputSizeX.SetOutputSize( new_size, getUnitFromSelection() );
}
if( m_imageDPI.y < 32 )
m_imageDPI.y = 32;
updateImageInfo();
}
void BM2CMP_FRAME::OnSizeChangeY( wxCommandEvent& event )
{
double new_size;
if( m_UnitSizeY->GetValue().ToDouble( &new_size ) )
{
if( m_AspectRatioLocked )
{
double calculatedX = new_size * m_AspectRatio;
if( getUnitFromSelection() == UNSCALED_UNITS )
{
// for units in DPI, keeping aspect ratio cannot use m_AspectRatioLocked.
// just rescale the other dpi
double ratio = new_size / m_outputSizeX.GetOutputSize();
calculatedX = m_outputSizeX.GetOutputSize() * ratio;
}
m_outputSizeX.SetOutputSize( calculatedX, getUnitFromSelection() );
m_UnitSizeX->ChangeValue( FormatOutputSize( m_outputSizeX.GetOutputSize() ) );
}
m_outputSizeY.SetOutputSize( new_size, getUnitFromSelection() );
}
updateImageInfo();
}
void BM2CMP_FRAME::OnSizeUnitChange( wxCommandEvent& event )
{
m_outputSizeX.SetUnit( getUnitFromSelection() );
m_outputSizeY.SetUnit( getUnitFromSelection() );
updateImageInfo();
m_UnitSizeX->ChangeValue( FormatOutputSize( m_outputSizeX.GetOutputSize() ) );
m_UnitSizeY->ChangeValue( FormatOutputSize( m_outputSizeY.GetOutputSize() ) );
}
void BM2CMP_FRAME::ToggleAspectRatioLock( wxCommandEvent& event )
{
m_AspectRatioLocked = !m_AspectRatioLocked;
if( m_AspectRatioLocked )
{
m_AspectRatioLockButton->SetBitmap( KiBitmap( locked_xpm ) );
//Force display update when aspect ratio is locked
auto fakeEvent = wxCommandEvent();
OnSizeChangeX( fakeEvent );
}
else
{
m_AspectRatioLockButton->SetBitmap( KiBitmap( unlocked_xpm ) );
}
}
void BM2CMP_FRAME::Binarize( double aThreshold )
{
int h = m_Greyscale_Image.GetHeight();
@@ -629,7 +450,7 @@ void BM2CMP_FRAME::Binarize( double aThreshold )
auto alpha = m_Greyscale_Image.HasAlpha() ?
m_Greyscale_Image.GetAlpha( x, y ) : wxALPHA_OPAQUE;
if( pixin < threshold && alpha > alpha_thresh )
if( pixin < threshold || alpha < alpha_thresh )
pixout = 0;
else
pixout = 255;
@@ -681,53 +502,24 @@ void BM2CMP_FRAME::OnThresholdChange( wxScrollEvent& event )
}
void BM2CMP_FRAME::OnExportToFile( wxCommandEvent& event )
void BM2CMP_FRAME::OnExport( wxCommandEvent& event )
{
m_exportToClipboard = false;
// choices of m_rbOutputFormat are expected to be in same order as
// choices of m_radioBoxFormat are expected to be in same order as
// OUTPUT_FMT_ID. See bitmap2component.h
OUTPUT_FMT_ID format = (OUTPUT_FMT_ID) m_rbOutputFormat->GetSelection();
exportBitmap( format );
}
OUTPUT_FMT_ID sel = (OUTPUT_FMT_ID) m_radioBoxFormat->GetSelection();
void BM2CMP_FRAME::OnExportToClipboard( wxCommandEvent& event )
{
m_exportToClipboard = true;
// choices of m_rbOutputFormat are expected to be in same order as
// OUTPUT_FMT_ID. See bitmap2component.h
OUTPUT_FMT_ID format = (OUTPUT_FMT_ID) m_rbOutputFormat->GetSelection();
std::string buffer;
ExportToBuffer( buffer, format );
// Write buffer to the clipboard
if (wxTheClipboard->Open())
{
// This data objects are held by the clipboard,
// so do not delete them in the app.
wxTheClipboard->SetData( new wxTextDataObject( buffer.c_str() ) );
wxTheClipboard->Close();
}
else
wxMessageBox( _( "Unable to export to the Clipboard") );
}
void BM2CMP_FRAME::exportBitmap( OUTPUT_FMT_ID aFormat )
{
switch( aFormat )
switch( sel )
{
case EESCHEMA_FMT:
exportEeschemaFormat();
OnExportEeschema();
break;
case PCBNEW_KICAD_MOD:
exportPcbnewFormat();
OnExportPcbnew();
break;
case POSTSCRIPT_FMT:
exportPostScriptFormat();
OnExportPostScript();
break;
case KICAD_LOGO:
@@ -763,19 +555,17 @@ void BM2CMP_FRAME::OnExportLogo()
if( outfile == NULL )
{
wxString msg;
msg.Printf( _( "File \"%s\" could not be created." ), m_ConvertedFileName );
msg.Printf( _( "File \"%s\" could not be created." ), GetChars( m_ConvertedFileName ) );
wxMessageBox( msg );
return;
}
std::string buffer;
ExportToBuffer( buffer, KICAD_LOGO );
fputs( buffer.c_str(), outfile );
ExportFile( outfile, KICAD_LOGO );
fclose( outfile );
}
void BM2CMP_FRAME::exportPostScriptFormat()
void BM2CMP_FRAME::OnExportPostScript()
{
wxFileName fn( m_ConvertedFileName );
wxString path = fn.GetPath();
@@ -803,19 +593,17 @@ void BM2CMP_FRAME::exportPostScriptFormat()
if( outfile == NULL )
{
wxString msg;
msg.Printf( _( "File \"%s\" could not be created." ), m_ConvertedFileName );
msg.Printf( _( "File \"%s\" could not be created." ), GetChars( m_ConvertedFileName ) );
wxMessageBox( msg );
return;
}
std::string buffer;
ExportToBuffer( buffer, POSTSCRIPT_FMT );
fputs( buffer.c_str(), outfile );
ExportFile( outfile, POSTSCRIPT_FMT );
fclose( outfile );
}
void BM2CMP_FRAME::exportEeschemaFormat()
void BM2CMP_FRAME::OnExportEeschema()
{
wxFileName fn( m_ConvertedFileName );
wxString path = fn.GetPath();
@@ -842,19 +630,17 @@ void BM2CMP_FRAME::exportEeschemaFormat()
if( outfile == NULL )
{
wxString msg;
msg.Printf( _( "File \"%s\" could not be created." ), m_ConvertedFileName );
msg.Printf( _( "File \"%s\" could not be created." ), GetChars( m_ConvertedFileName ) );
wxMessageBox( msg );
return;
}
std::string buffer;
ExportToBuffer( buffer, EESCHEMA_FMT );
fputs( buffer.c_str(), outfile );
ExportFile( outfile, EESCHEMA_FMT );
fclose( outfile );
}
void BM2CMP_FRAME::exportPcbnewFormat()
void BM2CMP_FRAME::OnExportPcbnew()
{
wxFileName fn( m_ConvertedFileName );
wxString path = fn.GetPath();
@@ -881,20 +667,18 @@ void BM2CMP_FRAME::exportPcbnewFormat()
if( outfile == NULL )
{
wxString msg;
msg.Printf( _( "File \"%s\" could not be created." ), m_ConvertedFileName );
msg.Printf( _( "File \"%s\" could not be created." ), GetChars( m_ConvertedFileName ) );
wxMessageBox( msg );
return;
}
std::string buffer;
ExportToBuffer( buffer, PCBNEW_KICAD_MOD );
fputs( buffer.c_str(), outfile );
ExportFile( outfile, PCBNEW_KICAD_MOD );
fclose( outfile );
m_mruPath = fn.GetPath();
}
void BM2CMP_FRAME::ExportToBuffer( std::string& aOutput, OUTPUT_FMT_ID aFormat )
void BM2CMP_FRAME::ExportFile( FILE* aOutfile, OUTPUT_FMT_ID aFormat )
{
// Create a potrace bitmap
int h = m_NB_Image.GetHeight();
@@ -919,26 +703,94 @@ void BM2CMP_FRAME::ExportToBuffer( std::string& aOutput, OUTPUT_FMT_ID aFormat )
}
}
// choices of m_rbPCBLayer are expected to be in same order as
// choices of m_radio_PCBLayer are expected to be in same order as
// BMP2CMP_MOD_LAYER. See bitmap2component.h
BMP2CMP_MOD_LAYER modLayer = MOD_LYR_FSILKS;
if( aFormat == PCBNEW_KICAD_MOD )
modLayer = (BMP2CMP_MOD_LAYER) m_rbPCBLayer->GetSelection();
modLayer = (BMP2CMP_MOD_LAYER) m_radio_PCBLayer->GetSelection();
BITMAPCONV_INFO converter( aOutput );
converter.ConvertBitmap( potrace_bitmap, aFormat, m_outputSizeX.GetOutputDPI(),
m_outputSizeY.GetOutputDPI(), modLayer );
if( !converter.GetErrorMessages().empty() )
wxMessageBox( converter.GetErrorMessages().c_str(), _( "Errors" ) );
bitmap2component( potrace_bitmap, aOutfile, aFormat, m_imageDPI.x, m_imageDPI.y, modLayer );
}
//-----<KIFACE>-----------------------------------------------------------------
namespace BMP2CMP {
static struct IFACE : public KIFACE_I
{
bool OnKifaceStart( PGM_BASE* aProgram, int aCtlBits ) override;
wxWindow* CreateWindow( wxWindow* aParent, int aClassId, KIWAY* aKiway, int aCtlBits = 0 ) override
{
return new BM2CMP_FRAME( aKiway, aParent );
}
/**
* Function IfaceOrAddress
* return a pointer to the requested object. The safest way to use this
* is to retrieve a pointer to a static instance of an interface, similar to
* how the KIFACE interface is exported. But if you know what you are doing
* use it to retrieve anything you want.
*
* @param aDataId identifies which object you want the address of.
*
* @return void* - and must be cast into the know type.
*/
void* IfaceOrAddress( int aDataId ) override
{
return NULL;
}
IFACE( const char* aDSOname, KIWAY::FACE_T aType ) :
KIFACE_I( aDSOname, aType )
{}
} kiface( "BMP2CMP", KIWAY::FACE_BMP2CMP );
} // namespace BMP2CMP
using namespace BMP2CMP;
static PGM_BASE* process;
KIFACE_I& Kiface()
{
return kiface;
}
// KIFACE_GETTER's actual spelling is a substitution macro found in kiway.h.
// KIFACE_GETTER will not have name mangling due to declaration in kiway.h.
KIFACE* KIFACE_GETTER( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram )
{
process = (PGM_BASE*) aProgram;
return &kiface;
}
#if defined(BUILD_KIWAY_DLLS)
PGM_BASE& Pgm()
{
wxASSERT( process ); // KIFACE_GETTER has already been called.
return *process;
}
#endif
bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits )
{
return start_common( aCtlBits );
}
void BM2CMP_FRAME::OnFormatChange( wxCommandEvent& event )
{
if( m_rbOutputFormat->GetSelection() == PCBNEW_KICAD_MOD )
m_rbPCBLayer->Enable( true );
if( m_radioBoxFormat->GetSelection() == PCBNEW_KICAD_MOD )
m_radio_PCBLayer->Enable( true );
else
m_rbPCBLayer->Enable( false );
m_radio_PCBLayer->Enable( false );
event.Skip();
}
-177
View File
@@ -1,177 +0,0 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2019 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
*/
#ifndef BITMOP2CMP_GUI_H_
#define BITMOP2CMP_GUI_H_
#include "bitmap2component.h"
#include "bitmap2cmp_gui_base.h"
#include <potracelib.h>
#include <common.h> // for EDA_UNITS_T
class IMAGE_SIZE
{
public:
IMAGE_SIZE();
// Set the unit used for m_outputSize, and convert the old m_outputSize value
// to the value in new unit
void SetUnit( EDA_UNITS_T aUnit );
// Accessors:
void SetOriginalDPI( int aDPI )
{
m_originalDPI = aDPI;
}
void SetOriginalSizePixels( int aPixels )
{
m_originalSizePixels = aPixels;
}
double GetOutputSize()
{
return m_outputSize;
}
void SetOutputSize( double aSize, EDA_UNITS_T aUnit )
{
m_unit = aUnit;
m_outputSize = aSize;
}
int GetOriginalSizePixels()
{
return m_originalSizePixels;
}
// Set the m_outputSize value from the m_originalSizePixels and the selected unit
void SetOutputSizeFromInitialImageSize();
/** @return the pixels per inch value to build the output image.
* It is used by potrace to build the polygonal image
*/
int GetOutputDPI();
private:
EDA_UNITS_T m_unit; // The units for m_outputSize (mm, inch, dpi)
double m_outputSize; // The size in m_unit of the output image, depending on
// the user settings. Set to the initial image size
int m_originalDPI; // The image DPI if specified in file, or 0 if unknown
int m_originalSizePixels; // The original image size read from file, in pixels
};
class BM2CMP_FRAME : public BM2CMP_FRAME_BASE
{
public:
BM2CMP_FRAME( KIWAY* aKiway, wxWindow* aParent );
~BM2CMP_FRAME();
// overload KIWAY_PLAYER virtual
bool OpenProjectFiles( const std::vector<wxString>& aFilenames, int aCtl = 0 ) override;
private:
// Event handlers
void OnPaintInit( wxPaintEvent& event ) override;
void OnPaintGreyscale( wxPaintEvent& event ) override;
void OnPaintBW( wxPaintEvent& event ) override;
void OnLoadFile( wxCommandEvent& event ) override;
void OnExportToFile( wxCommandEvent& event ) override;
void OnExportToClipboard( wxCommandEvent& event ) override;
///> @return the EDA_UNITS_T from the m_PixelUnit choice
EDA_UNITS_T getUnitFromSelection();
// return a string giving the output size, according to the selected unit
wxString FormatOutputSize( double aSize );
/**
* Generate a schematic library which contains one component:
* the logo
*/
void exportEeschemaFormat();
/**
* Generate a module in S expr format
*/
void exportPcbnewFormat();
/**
* Generate a postscript file
*/
void exportPostScriptFormat();
/**
* Generate a file suitable to be copied into a page layout
* description file (.kicad_wks file
*/
void OnExportLogo();
void Binarize( double aThreshold ); // aThreshold = 0.0 (black level) to 1.0 (white level)
void OnNegativeClicked( wxCommandEvent& event ) override;
void OnThresholdChange( wxScrollEvent& event ) override;
void OnSizeChangeX( wxCommandEvent& event ) override;
void OnSizeChangeY( wxCommandEvent& event ) override;
void OnSizeUnitChange( wxCommandEvent& event ) override;
void ToggleAspectRatioLock( wxCommandEvent& event ) override;
void NegateGreyscaleImage();
/**
* generate a export data of the current bitmap.
* @param aOutput is a string buffer to fill with data
* @param aFormat is the format to generate
*/
void ExportToBuffer( std::string& aOutput, OUTPUT_FMT_ID aFormat );
void updateImageInfo();
void OnFormatChange( wxCommandEvent& event ) override;
void exportBitmap( OUTPUT_FMT_ID aFormat );
void LoadSettings( wxConfigBase* aCfg ) override;
void SaveSettings( wxConfigBase* aCfg ) override;
private:
wxImage m_Pict_Image;
wxBitmap m_Pict_Bitmap;
wxImage m_Greyscale_Image;
wxBitmap m_Greyscale_Bitmap;
wxImage m_NB_Image;
wxBitmap m_BN_Bitmap;
IMAGE_SIZE m_outputSizeX;
IMAGE_SIZE m_outputSizeY;
bool m_Negative;
wxString m_BitmapFileName;
wxString m_ConvertedFileName;
wxSize m_frameSize;
wxPoint m_framePos;
std::unique_ptr<wxConfigBase> m_config;
bool m_exportToClipboard;
bool m_AspectRatioLocked;
double m_AspectRatio;
};
#endif// BITMOP2CMP_GUI_H_
+65 -96
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Dec 1 2018)
// C++ code generated with wxFormBuilder (version Jan 17 2019)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -47,9 +47,9 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
fgSizerInfo->SetFlexibleDirection( wxBOTH );
fgSizerInfo->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticTextISize = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("Bitmap size:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextISize->Wrap( -1 );
fgSizerInfo->Add( m_staticTextISize, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_staticTextSize = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("Size:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextSize->Wrap( -1 );
fgSizerInfo->Add( m_staticTextSize, 0, wxALIGN_RIGHT|wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_SizeXValue = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
m_SizeXValue->Wrap( -1 );
@@ -63,25 +63,25 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
m_SizePixUnits->Wrap( -1 );
fgSizerInfo->Add( m_SizePixUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
m_staticTextDPI = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("Bitmap PPI:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDPI->Wrap( -1 );
fgSizerInfo->Add( m_staticTextDPI, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticTextSize1 = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("Size:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextSize1->Wrap( -1 );
fgSizerInfo->Add( m_staticTextSize1, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_RIGHT, 5 );
m_InputXValueDPI = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
m_InputXValueDPI->Wrap( -1 );
fgSizerInfo->Add( m_InputXValueDPI, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
m_SizeXValue_mm = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
m_SizeXValue_mm->Wrap( -1 );
fgSizerInfo->Add( m_SizeXValue_mm, 0, wxBOTTOM|wxRIGHT, 5 );
m_InputYValueDPI = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
m_InputYValueDPI->Wrap( -1 );
fgSizerInfo->Add( m_InputYValueDPI, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
m_SizeYValue_mm = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
m_SizeYValue_mm->Wrap( -1 );
fgSizerInfo->Add( m_SizeYValue_mm, 0, wxBOTTOM|wxRIGHT, 5 );
m_DPIUnit = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("PPI"), wxDefaultPosition, wxDefaultSize, 0 );
m_DPIUnit->Wrap( -1 );
fgSizerInfo->Add( m_DPIUnit, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
m_Size_mmxUnits = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
m_Size_mmxUnits->Wrap( -1 );
fgSizerInfo->Add( m_Size_mmxUnits, 0, wxBOTTOM|wxRIGHT, 5 );
m_staticTextBPP = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("BPP:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextBPP->Wrap( -1 );
fgSizerInfo->Add( m_staticTextBPP, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
fgSizerInfo->Add( m_staticTextBPP, 0, wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_BPPValue = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("0000"), wxDefaultPosition, wxDefaultSize, 0 );
m_BPPValue->Wrap( -1 );
@@ -92,81 +92,52 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
fgSizerInfo->Add( m_BPPunits, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
fgSizerInfo->Add( 0, 0, 0, 0, 5 );
fgSizerInfo->Add( 0, 0, 1, wxEXPAND, 5 );
m_staticTextBPI = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("Resolution:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextBPI->Wrap( -1 );
fgSizerInfo->Add( m_staticTextBPI, 0, wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
m_DPIValueX = new wxTextCtrl( sbSizerInfo->GetStaticBox(), wxID_ANY, _("300"), wxDefaultPosition, wxDefaultSize, 0 );
m_DPIValueX->SetMinSize( wxSize( 40,-1 ) );
fgSizerInfo->Add( m_DPIValueX, 0, wxBOTTOM|wxRIGHT, 5 );
m_DPIValueY = new wxTextCtrl( sbSizerInfo->GetStaticBox(), wxID_ANY, _("300"), wxDefaultPosition, wxDefaultSize, 0 );
m_DPIValueY->SetMinSize( wxSize( 40,-1 ) );
fgSizerInfo->Add( m_DPIValueY, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
m_DPI_Units = new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY, _("DPI"), wxDefaultPosition, wxDefaultSize, 0 );
m_DPI_Units->Wrap( -1 );
fgSizerInfo->Add( m_DPI_Units, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
sbSizerInfo->Add( fgSizerInfo, 0, wxEXPAND, 5 );
sbSizerInfo->Add( fgSizerInfo, 0, wxEXPAND|wxBOTTOM, 5 );
brightSizer->Add( sbSizerInfo, 0, wxEXPAND|wxALL, 5 );
wxStaticBoxSizer* sbSizerImgPrms;
sbSizerImgPrms = new wxStaticBoxSizer( new wxStaticBox( m_panelRight, wxID_ANY, _("Output Parameters:") ), wxVERTICAL );
wxBoxSizer* bSizerLock;
bSizerLock = new wxBoxSizer( wxHORIZONTAL );
m_textLock = new wxStaticText( sbSizerImgPrms->GetStaticBox(), wxID_ANY, _("Lock height/width ratio"), wxDefaultPosition, wxDefaultSize, 0 );
m_textLock->Wrap( -1 );
bSizerLock->Add( m_textLock, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_AspectRatioLockButton = new wxBitmapButton( sbSizerImgPrms->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizerLock->Add( m_AspectRatioLockButton, 0, wxALL, 5 );
sbSizerImgPrms->Add( bSizerLock, 0, wxEXPAND, 5 );
wxBoxSizer* bSizerRes;
bSizerRes = new wxBoxSizer( wxHORIZONTAL );
m_staticTextOSize = new wxStaticText( sbSizerImgPrms->GetStaticBox(), wxID_ANY, _("Size:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextOSize->Wrap( -1 );
bSizerRes->Add( m_staticTextOSize, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_UnitSizeX = new wxTextCtrl( sbSizerImgPrms->GetStaticBox(), wxID_ANY, _("300"), wxDefaultPosition, wxDefaultSize, 0 );
m_UnitSizeX->SetMinSize( wxSize( 60,-1 ) );
bSizerRes->Add( m_UnitSizeX, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
m_UnitSizeY = new wxTextCtrl( sbSizerImgPrms->GetStaticBox(), wxID_ANY, _("300"), wxDefaultPosition, wxDefaultSize, 0 );
m_UnitSizeY->SetMinSize( wxSize( 60,-1 ) );
bSizerRes->Add( m_UnitSizeY, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
wxArrayString m_PixelUnitChoices;
m_PixelUnit = new wxChoice( sbSizerImgPrms->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_PixelUnitChoices, 0 );
m_PixelUnit->SetSelection( 0 );
m_PixelUnit->SetMinSize( wxSize( 80,-1 ) );
bSizerRes->Add( m_PixelUnit, 0, wxTOP|wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
sbSizerImgPrms->Add( bSizerRes, 0, wxEXPAND, 5 );
brightSizer->Add( sbSizerImgPrms, 0, wxEXPAND|wxALL, 5 );
m_buttonLoad = new wxButton( m_panelRight, wxID_ANY, _("Load Bitmap"), wxDefaultPosition, wxDefaultSize, 0 );
brightSizer->Add( m_buttonLoad, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_buttonExportFile = new wxButton( m_panelRight, wxID_ANY, _("Export to File"), wxDefaultPosition, wxDefaultSize, 0 );
brightSizer->Add( m_buttonExportFile, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_buttonExport = new wxButton( m_panelRight, wxID_ANY, _("Export"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonExport->SetToolTip( _("Create a library file for Eeschema\nThis library contains only one component: logo") );
m_buttonExportClipboard = new wxButton( m_panelRight, wxID_ANY, _("Export to Clipboard"), wxDefaultPosition, wxDefaultSize, 0 );
brightSizer->Add( m_buttonExportClipboard, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
brightSizer->Add( m_buttonExport, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxString m_rbOutputFormatChoices[] = { _("Eeschema (.lib file)"), _("Pcbnew (.kicad_mod file)"), _("Postscript (.ps file)"), _("Logo for title block (.kicad_wks file)") };
int m_rbOutputFormatNChoices = sizeof( m_rbOutputFormatChoices ) / sizeof( wxString );
m_rbOutputFormat = new wxRadioBox( m_panelRight, wxID_ANY, _("Format:"), wxDefaultPosition, wxDefaultSize, m_rbOutputFormatNChoices, m_rbOutputFormatChoices, 1, wxRA_SPECIFY_COLS );
m_rbOutputFormat->SetSelection( 1 );
brightSizer->Add( m_rbOutputFormat, 0, wxEXPAND|wxALL, 5 );
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->SetSelection( 1 );
brightSizer->Add( m_radioBoxFormat, 0, wxEXPAND|wxALL, 5 );
wxStaticBoxSizer* sbSizer2;
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 );
sbSizer2->Add( m_ThresholdText, 0, wxTOP|wxLEFT, 5 );
sbSizer2->Add( m_ThresholdText, 0, 0, 5 );
m_sliderThreshold = new wxSlider( sbSizer2->GetStaticBox(), wxID_ANY, 50, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
m_sliderThreshold->SetToolTip( _("Adjust the level to convert the greyscale picture to a black and white picture.") );
@@ -174,18 +145,18 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
sbSizer2->Add( m_sliderThreshold, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_checkNegative = new wxCheckBox( sbSizer2->GetStaticBox(), wxID_ANY, _("Negative"), wxDefaultPosition, wxDefaultSize, 0 );
sbSizer2->Add( m_checkNegative, 0, wxTOP|wxBOTTOM, 10 );
sbSizer2->Add( m_checkNegative, 0, wxBOTTOM|wxTOP, 10 );
brightSizer->Add( sbSizer2, 0, wxALL|wxEXPAND, 5 );
wxString m_rbPCBLayerChoices[] = { _("Front silk screen"), _("Front solder mask"), _("User layer Eco1"), _("User layer Eco2") };
int m_rbPCBLayerNChoices = sizeof( m_rbPCBLayerChoices ) / sizeof( wxString );
m_rbPCBLayer = new wxRadioBox( m_panelRight, wxID_ANY, _("Board Layer for Outline:"), wxDefaultPosition, wxDefaultSize, m_rbPCBLayerNChoices, m_rbPCBLayerChoices, 1, wxRA_SPECIFY_COLS );
m_rbPCBLayer->SetSelection( 0 );
m_rbPCBLayer->SetToolTip( _("Choose the board layer to place the outline.\nThe 2 invisible fields reference and value are always placed on the silk screen layer.") );
wxString m_radio_PCBLayerChoices[] = { _("Front silk screen"), _("Front solder mask"), _("User layer Eco1"), _("User layer Eco2") };
int m_radio_PCBLayerNChoices = sizeof( m_radio_PCBLayerChoices ) / sizeof( wxString );
m_radio_PCBLayer = new wxRadioBox( m_panelRight, wxID_ANY, _("Board Layer for Outline:"), wxDefaultPosition, wxDefaultSize, m_radio_PCBLayerNChoices, m_radio_PCBLayerChoices, 1, wxRA_SPECIFY_COLS );
m_radio_PCBLayer->SetSelection( 3 );
m_radio_PCBLayer->SetToolTip( _("Choose the board layer to place the outline.\nThe 2 invisible fields reference and value are always placed on the silk screen layer.") );
brightSizer->Add( m_rbPCBLayer, 0, wxALL|wxEXPAND, 5 );
brightSizer->Add( m_radio_PCBLayer, 0, wxALL|wxEXPAND, 5 );
m_panelRight->SetSizer( brightSizer );
@@ -202,14 +173,13 @@ BM2CMP_FRAME_BASE::BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id, const wxS
m_InitialPicturePanel->Connect( wxEVT_PAINT, wxPaintEventHandler( BM2CMP_FRAME_BASE::OnPaintInit ), NULL, this );
m_GreyscalePicturePanel->Connect( wxEVT_PAINT, wxPaintEventHandler( BM2CMP_FRAME_BASE::OnPaintGreyscale ), NULL, this );
m_BNPicturePanel->Connect( wxEVT_PAINT, wxPaintEventHandler( BM2CMP_FRAME_BASE::OnPaintBW ), NULL, this );
m_AspectRatioLockButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::ToggleAspectRatioLock ), NULL, this );
m_UnitSizeX->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnSizeChangeX ), NULL, this );
m_UnitSizeY->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnSizeChangeY ), NULL, this );
m_PixelUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnSizeUnitChange ), NULL, this );
m_DPIValueX->Connect( wxEVT_LEAVE_WINDOW, wxMouseEventHandler( BM2CMP_FRAME_BASE::UpdatePPITextValueX ), NULL, this );
m_DPIValueX->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnResolutionChange ), NULL, this );
m_DPIValueY->Connect( wxEVT_LEAVE_WINDOW, wxMouseEventHandler( BM2CMP_FRAME_BASE::UpdatePPITextValueY ), NULL, this );
m_DPIValueY->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnResolutionChange ), NULL, this );
m_buttonLoad->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnLoadFile ), NULL, this );
m_buttonExportFile->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnExportToFile ), NULL, this );
m_buttonExportClipboard->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnExportToClipboard ), NULL, this );
m_rbOutputFormat->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnFormatChange ), NULL, this );
m_buttonExport->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnExport ), NULL, this );
m_radioBoxFormat->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnFormatChange ), NULL, this );
m_sliderThreshold->Connect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( BM2CMP_FRAME_BASE::OnThresholdChange ), NULL, this );
m_checkNegative->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnNegativeClicked ), NULL, this );
}
@@ -220,14 +190,13 @@ BM2CMP_FRAME_BASE::~BM2CMP_FRAME_BASE()
m_InitialPicturePanel->Disconnect( wxEVT_PAINT, wxPaintEventHandler( BM2CMP_FRAME_BASE::OnPaintInit ), NULL, this );
m_GreyscalePicturePanel->Disconnect( wxEVT_PAINT, wxPaintEventHandler( BM2CMP_FRAME_BASE::OnPaintGreyscale ), NULL, this );
m_BNPicturePanel->Disconnect( wxEVT_PAINT, wxPaintEventHandler( BM2CMP_FRAME_BASE::OnPaintBW ), NULL, this );
m_AspectRatioLockButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::ToggleAspectRatioLock ), NULL, this );
m_UnitSizeX->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnSizeChangeX ), NULL, this );
m_UnitSizeY->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnSizeChangeY ), NULL, this );
m_PixelUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnSizeUnitChange ), NULL, this );
m_DPIValueX->Disconnect( wxEVT_LEAVE_WINDOW, wxMouseEventHandler( BM2CMP_FRAME_BASE::UpdatePPITextValueX ), NULL, this );
m_DPIValueX->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnResolutionChange ), NULL, this );
m_DPIValueY->Disconnect( wxEVT_LEAVE_WINDOW, wxMouseEventHandler( BM2CMP_FRAME_BASE::UpdatePPITextValueY ), NULL, this );
m_DPIValueY->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnResolutionChange ), NULL, this );
m_buttonLoad->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnLoadFile ), NULL, this );
m_buttonExportFile->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnExportToFile ), NULL, this );
m_buttonExportClipboard->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnExportToClipboard ), NULL, this );
m_rbOutputFormat->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnFormatChange ), NULL, this );
m_buttonExport->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnExport ), NULL, this );
m_radioBoxFormat->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnFormatChange ), NULL, this );
m_sliderThreshold->Disconnect( wxEVT_SCROLL_THUMBTRACK, wxScrollEventHandler( BM2CMP_FRAME_BASE::OnThresholdChange ), NULL, this );
m_checkNegative->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( BM2CMP_FRAME_BASE::OnNegativeClicked ), NULL, this );
File diff suppressed because it is too large Load Diff
+19 -27
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Dec 1 2018)
// C++ code generated with wxFormBuilder (version Jan 17 2019)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -22,13 +22,10 @@
#include <wx/icon.h>
#include <wx/notebook.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include <wx/bmpbuttn.h>
#include <wx/button.h>
#include <wx/textctrl.h>
#include <wx/valtext.h>
#include <wx/choice.h>
#include <wx/radiobox.h>
#include <wx/slider.h>
#include <wx/checkbox.h>
@@ -52,44 +49,39 @@ class BM2CMP_FRAME_BASE : public KIWAY_PLAYER
wxScrolledWindow* m_GreyscalePicturePanel;
wxScrolledWindow* m_BNPicturePanel;
wxPanel* m_panelRight;
wxStaticText* m_staticTextISize;
wxStaticText* m_staticTextSize;
wxStaticText* m_SizeXValue;
wxStaticText* m_SizeYValue;
wxStaticText* m_SizePixUnits;
wxStaticText* m_staticTextDPI;
wxStaticText* m_InputXValueDPI;
wxStaticText* m_InputYValueDPI;
wxStaticText* m_DPIUnit;
wxStaticText* m_staticTextSize1;
wxStaticText* m_SizeXValue_mm;
wxStaticText* m_SizeYValue_mm;
wxStaticText* m_Size_mmxUnits;
wxStaticText* m_staticTextBPP;
wxStaticText* m_BPPValue;
wxStaticText* m_BPPunits;
wxStaticText* m_textLock;
wxBitmapButton* m_AspectRatioLockButton;
wxStaticText* m_staticTextOSize;
wxTextCtrl* m_UnitSizeX;
wxTextCtrl* m_UnitSizeY;
wxChoice* m_PixelUnit;
wxStaticText* m_staticTextBPI;
wxTextCtrl* m_DPIValueX;
wxTextCtrl* m_DPIValueY;
wxStaticText* m_DPI_Units;
wxButton* m_buttonLoad;
wxButton* m_buttonExportFile;
wxButton* m_buttonExportClipboard;
wxRadioBox* m_rbOutputFormat;
wxButton* m_buttonExport;
wxRadioBox* m_radioBoxFormat;
wxStaticText* m_ThresholdText;
wxSlider* m_sliderThreshold;
wxCheckBox* m_checkNegative;
wxRadioBox* m_rbPCBLayer;
wxRadioBox* m_radio_PCBLayer;
wxStatusBar* m_statusBar;
// Virtual event handlers, overide them in your derived class
virtual void OnPaintInit( wxPaintEvent& event ) { event.Skip(); }
virtual void OnPaintGreyscale( wxPaintEvent& event ) { event.Skip(); }
virtual void OnPaintBW( wxPaintEvent& event ) { event.Skip(); }
virtual void ToggleAspectRatioLock( wxCommandEvent& event ) { event.Skip(); }
virtual void OnSizeChangeX( wxCommandEvent& event ) { event.Skip(); }
virtual void OnSizeChangeY( wxCommandEvent& event ) { event.Skip(); }
virtual void OnSizeUnitChange( wxCommandEvent& event ) { event.Skip(); }
virtual void UpdatePPITextValueX( wxMouseEvent& event ) { event.Skip(); }
virtual void OnResolutionChange( wxCommandEvent& event ) { event.Skip(); }
virtual void UpdatePPITextValueY( wxMouseEvent& event ) { event.Skip(); }
virtual void OnLoadFile( wxCommandEvent& event ) { event.Skip(); }
virtual void OnExportToFile( wxCommandEvent& event ) { event.Skip(); }
virtual void OnExportToClipboard( wxCommandEvent& event ) { event.Skip(); }
virtual void OnExport( wxCommandEvent& event ) { event.Skip(); }
virtual void OnFormatChange( wxCommandEvent& event ) { event.Skip(); }
virtual void OnThresholdChange( wxScrollEvent& event ) { event.Skip(); }
virtual void OnNegativeClicked( wxCommandEvent& event ) { event.Skip(); }
@@ -97,7 +89,7 @@ class BM2CMP_FRAME_BASE : public KIWAY_PLAYER
public:
BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Bitmap to Component Converter"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 746,684 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL );
BM2CMP_FRAME_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Bitmap to Component Converter"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 733,634 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL );
~BM2CMP_FRAME_BASE();
-99
View File
@@ -1,99 +0,0 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 1992-2010 jean-pierre.charras
* Copyright (C) 1992-2019 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
*/
#include "bitmap2cmp_gui.h"
#include <kiface_i.h>
#include <kiway.h>
#include <pgm_base.h>
//-----<KIFACE>-----------------------------------------------------------------
namespace BMP2CMP {
static struct IFACE : public KIFACE_I
{
bool OnKifaceStart( PGM_BASE* aProgram, int aCtlBits ) override;
wxWindow* CreateWindow( wxWindow* aParent, int aClassId, KIWAY* aKiway, int aCtlBits = 0 ) override
{
return new BM2CMP_FRAME( aKiway, aParent );
}
/**
* Function IfaceOrAddress
* return a pointer to the requested object. The safest way to use this
* is to retrieve a pointer to a static instance of an interface, similar to
* how the KIFACE interface is exported. But if you know what you are doing
* use it to retrieve anything you want.
*
* @param aDataId identifies which object you want the address of.
*
* @return void* - and must be cast into the know type.
*/
void* IfaceOrAddress( int aDataId ) override
{
return NULL;
}
IFACE( const char* aDSOname, KIWAY::FACE_T aType ) :
KIFACE_I( aDSOname, aType )
{}
} kiface( "BMP2CMP", KIWAY::FACE_BMP2CMP );
} // namespace BMP2CMP
using namespace BMP2CMP;
static PGM_BASE* process;
KIFACE_I& Kiface()
{
return kiface;
}
// KIFACE_GETTER's actual spelling is a substitution macro found in kiway.h.
// KIFACE_GETTER will not have name mangling due to declaration in kiway.h.
KIFACE* KIFACE_GETTER( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram )
{
process = (PGM_BASE*) aProgram;
return &kiface;
}
#if defined(BUILD_KIWAY_DLLS)
PGM_BASE& Pgm()
{
wxASSERT( process ); // KIFACE_GETTER has already been called.
return *process;
}
#endif
bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits )
{
return start_common( aCtlBits );
}
+155 -139
View File
@@ -1,8 +1,8 @@
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 1992-2019 jean-pierre.charras
* Copyright (C) 1992-2019 Kicad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2013 jean-pierre.charras
* Copyright (C) 1992-2019 Kicad Developers, see change_log.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
@@ -24,7 +24,6 @@
#include <algorithm> // std::max
#include <cmath>
#include <string>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@@ -32,15 +31,13 @@
#include <vector>
#include <common.h>
#include <geometry/shape_poly_set.h>
#include <layers_id_colors_and_visibility.h>
#include <potracelib.h>
#include "bitmap2component.h"
// Unit conversion. Coord unit from potrace is mm
#define MM2MICRON 1e3 // For pl_editor
#define MM2NANOMETER 1e6 // For pcbew
/* free a potrace bitmap */
static void bm_free( potrace_bitmap_t* bm )
@@ -53,6 +50,61 @@ static void bm_free( potrace_bitmap_t* bm )
}
/* Helper class to handle useful info to convert a bitmap image to
* a polygonal object description
*/
class BITMAPCONV_INFO
{
public:
enum OUTPUT_FMT_ID m_Format; // File format
int m_PixmapWidth;
int m_PixmapHeight; // the bitmap size in pixels
double m_ScaleX;
double m_ScaleY; // the conversion scale
potrace_path_t* m_Paths; // the list of paths, from potrace (list of lines and bezier curves)
FILE* m_Outfile; // File to create
const char * m_CmpName; // The string used as cmp/footprint name
public:
BITMAPCONV_INFO();
/**
* Function CreateOutputFile
* Creates the output file specified by m_Outfile,
* depending on file format given by m_Format
*/
void CreateOutputFile( BMP2CMP_MOD_LAYER aModLayer = (BMP2CMP_MOD_LAYER) 0 );
private:
/**
* Function OuputFileHeader
* write to file the header depending on file format
*/
void OuputFileHeader( const char * aBrdLayerName );
/**
* Function OuputFileEnd
* write to file the last strings depending on file format
*/
void OuputFileEnd();
/**
* @return the board layer name depending on the board layer selected
* @param aChoice = the choice (MOD_LYR_FSILKS to MOD_LYR_FINAL)
*/
const char * getBrdLayerName( BMP2CMP_MOD_LAYER aChoice );
/**
* Function OuputOnePolygon
* write one polygon to output file.
* Polygon coordinates are expected scaled by the polugon extraction function
*/
void OuputOnePolygon( SHAPE_LINE_CHAIN & aPolygon, const char* aBrdLayerName );
};
static void BezierToPolyline( std::vector <potrace_dpoint_t>& aCornersBuffer,
potrace_dpoint_t p1,
potrace_dpoint_t p2,
@@ -60,8 +112,7 @@ static void BezierToPolyline( std::vector <potrace_dpoint_t>& aCornersBuffer,
potrace_dpoint_t p4 );
BITMAPCONV_INFO::BITMAPCONV_INFO( std::string& aData ):
m_Data( aData )
BITMAPCONV_INFO::BITMAPCONV_INFO()
{
m_Format = POSTSCRIPT_FMT;
m_PixmapWidth = 0;
@@ -69,11 +120,12 @@ BITMAPCONV_INFO::BITMAPCONV_INFO( std::string& aData ):
m_ScaleX = 1.0;
m_ScaleY = 1.0;
m_Paths = NULL;
m_Outfile = NULL;
m_CmpName = "LOGO";
}
int BITMAPCONV_INFO::ConvertBitmap( potrace_bitmap_t* aPotrace_bitmap,
int bitmap2component( potrace_bitmap_t* aPotrace_bitmap, FILE* aOutfile,
OUTPUT_FMT_ID aFormat, int aDpi_X, int aDpi_Y,
BMP2CMP_MOD_LAYER aModLayer )
{
@@ -82,23 +134,15 @@ int BITMAPCONV_INFO::ConvertBitmap( potrace_bitmap_t* aPotrace_bitmap,
// set tracing parameters, starting from defaults
param = potrace_param_default();
if( !param )
{
char msg[256];
sprintf( msg, "Error allocating parameters: %s\n", strerror( errno ) );
m_errors += msg;
fprintf( stderr, "Error allocating parameters: %s\n", strerror( errno ) );
return 1;
}
// For parameters: see http://potrace.sourceforge.net/potracelib.pdf
param->turdsize = 0; // area (in pixels) of largest path to be ignored.
// Potrace default is 2
param->opttolerance = 0.2; // curve optimization tolerance. Potrace default is 0.2
param->turdsize = 0;
/* convert the bitmap to curves */
st = potrace_trace( param, aPotrace_bitmap );
if( !st || st->status != POTRACE_STATUS_OK )
{
if( st )
@@ -107,45 +151,46 @@ int BITMAPCONV_INFO::ConvertBitmap( potrace_bitmap_t* aPotrace_bitmap,
}
potrace_param_free( param );
char msg[256];
sprintf( msg, "Error tracing bitmap: %s\n", strerror( errno ) );
m_errors += msg;
fprintf( stderr, "Error tracing bitmap: %s\n", strerror( errno ) );
return 1;
}
m_PixmapWidth = aPotrace_bitmap->w;
m_PixmapHeight = aPotrace_bitmap->h; // the bitmap size in pixels
m_Paths = st->plist;
printf("Step 1\n");
BITMAPCONV_INFO info;
info.m_PixmapWidth = aPotrace_bitmap->w;
info.m_PixmapHeight = aPotrace_bitmap->h; // the bitmap size in pixels
info.m_Paths = st->plist;
info.m_Outfile = aOutfile;
switch( aFormat )
{
case KICAD_LOGO:
m_Format = KICAD_LOGO;
m_ScaleX = MM2MICRON * 25.4 / aDpi_X; // the conversion scale from PPI to micron
m_ScaleY = MM2MICRON * 25.4 / aDpi_Y; // Y axis is top to bottom
createOutputData();
info.m_Format = KICAD_LOGO;
info.m_ScaleX = 1e3 * 25.4 / aDpi_X; // the conversion scale from PPI to micro
info.m_ScaleY = 1e3 * 25.4 / aDpi_Y; // Y axis is top to bottom
info.CreateOutputFile();
break;
case POSTSCRIPT_FMT:
m_Format = POSTSCRIPT_FMT;
m_ScaleX = 1.0; // the conversion scale
m_ScaleY = m_ScaleX;
info.m_Format = POSTSCRIPT_FMT;
info.m_ScaleX = 1.0; // the conversion scale
info.m_ScaleY = info.m_ScaleX;
// output vector data, e.g. as a rudimentary EPS file (mainly for tests)
createOutputData();
info.CreateOutputFile();
break;
case EESCHEMA_FMT:
m_Format = EESCHEMA_FMT;
m_ScaleX = 1000.0 / aDpi_X; // the conversion scale from PPI to UI (mil)
m_ScaleY = -1000.0 / aDpi_Y; // Y axis is bottom to Top for components in libs
createOutputData();
info.m_Format = EESCHEMA_FMT;
info.m_ScaleX = 1000.0 / aDpi_X; // the conversion scale from PPI to UI
info.m_ScaleY = -1000.0 / aDpi_Y; // Y axis is bottom to Top for components in libs
info.CreateOutputFile();
break;
case PCBNEW_KICAD_MOD:
m_Format = PCBNEW_KICAD_MOD;
m_ScaleX = MM2NANOMETER * 25.4 / aDpi_X; // the conversion scale from PPI to UI
m_ScaleY = MM2NANOMETER * 25.4 / aDpi_Y; // Y axis is top to bottom in modedit
createOutputData( aModLayer );
info.m_Format = PCBNEW_KICAD_MOD;
info.m_ScaleX = 1e6 * 25.4 / aDpi_X; // the conversion scale from PPI to UI
info.m_ScaleY = 1e6 * 25.4 / aDpi_Y; // Y axis is top to bottom in modedit
info.CreateOutputFile( aModLayer );
break;
default:
@@ -160,8 +205,7 @@ int BITMAPCONV_INFO::ConvertBitmap( potrace_bitmap_t* aPotrace_bitmap,
return 0;
}
const char* BITMAPCONV_INFO::getBoardLayerName( BMP2CMP_MOD_LAYER aChoice )
const char* BITMAPCONV_INFO::getBrdLayerName( BMP2CMP_MOD_LAYER aChoice )
{
const char * layerName = "F.SilkS";
@@ -187,96 +231,87 @@ const char* BITMAPCONV_INFO::getBoardLayerName( BMP2CMP_MOD_LAYER aChoice )
return layerName;
}
void BITMAPCONV_INFO::outputDataHeader( const char * aBrdLayerName )
void BITMAPCONV_INFO::OuputFileHeader( const char * aBrdLayerName )
{
int Ypos = (int) ( m_PixmapHeight / 2 * m_ScaleY );
int fieldSize; // fields text size = 60 mils
char strbuf[1024];
switch( m_Format )
{
case POSTSCRIPT_FMT:
/* output vector data, e.g. as a rudimentary EPS file */
m_Data += "%%!PS-Adobe-3.0 EPSF-3.0\n";
sprintf( strbuf, "%%%%BoundingBox: 0 0 %d %d\n", m_PixmapWidth, m_PixmapHeight );
m_Data += strbuf;
m_Data += "gsave\n";
fprintf( m_Outfile, "%%!PS-Adobe-3.0 EPSF-3.0\n" );
fprintf( m_Outfile, "%%%%BoundingBox: 0 0 %d %d\n",
m_PixmapWidth, m_PixmapHeight );
fprintf( m_Outfile, "gsave\n" );
break;
case PCBNEW_KICAD_MOD:
// fields text size = 1.5 mm
// fields text thickness = 1.5 / 5 = 0.3mm
sprintf( strbuf, "(module %s (layer F.Cu)\n (at 0 0)\n", m_CmpName.c_str() );
m_Data += strbuf;
sprintf( strbuf, " (fp_text reference \"G***\" (at 0 0) (layer %s)\n"
fprintf( m_Outfile, "(module %s (layer F.Cu)\n (at 0 0)\n",
m_CmpName );
fprintf( m_Outfile, " (fp_text reference \"G***\" (at 0 0) (layer %s) hide\n"
" (effects (font (thickness 0.3)))\n )\n", aBrdLayerName );
m_Data += strbuf;
sprintf( strbuf, " (fp_text value \"%s\" (at 0.75 0) (layer %s) hide\n"
" (effects (font (thickness 0.3)))\n )\n", m_CmpName.c_str(), aBrdLayerName );
m_Data += strbuf;
fprintf( m_Outfile, " (fp_text value \"%s\" (at 0.75 0) (layer %s) hide\n"
" (effects (font (thickness 0.3)))\n )\n", m_CmpName, aBrdLayerName );
break;
case KICAD_LOGO:
m_Data += "(polygon (pos 0 0 rbcorner) (rotate 0) (linewidth 0.01)\n";
fprintf( m_Outfile, "(polygon (pos 0 0 rbcorner) (rotate 0) (linewidth 0.01)\n" );
break;
case EESCHEMA_FMT:
sprintf( strbuf, "EESchema-LIBRARY Version 2.3\n" );
m_Data += strbuf;
sprintf( strbuf, "#\n# %s\n", m_CmpName.c_str() );
m_Data += strbuf;
sprintf( strbuf, "# pixmap size w = %d, h = %d\n#\n",
fprintf( m_Outfile, "EESchema-LIBRARY Version 2.3\n" );
fprintf( m_Outfile, "#\n# %s\n", m_CmpName );
fprintf( m_Outfile, "# pixmap size w = %d, h = %d\n#\n",
m_PixmapWidth, m_PixmapHeight );
m_Data += strbuf;
// print reference and value
fieldSize = 50; // fields text size = 50 mils
fieldSize = 60; // fields text size = 60 mils
Ypos += fieldSize / 2;
sprintf( strbuf, "DEF %s G 0 40 Y Y 1 F N\n", m_CmpName.c_str() );
m_Data += strbuf;
sprintf( strbuf, "F0 \"#G\" 0 %d %d H I C CNN\n", Ypos, fieldSize );
m_Data += strbuf;
sprintf( strbuf, "F1 \"%s\" 0 %d %d H I C CNN\n", m_CmpName.c_str(), -Ypos, fieldSize );
m_Data += strbuf;
m_Data += "DRAW\n";
fprintf( m_Outfile, "DEF %s G 0 40 Y Y 1 F N\n", m_CmpName );
fprintf( m_Outfile, "F0 \"#G\" 0 %d %d H I C CNN\n", Ypos, fieldSize );
fprintf( m_Outfile, "F1 \"%s\" 0 %d %d H I C CNN\n", m_CmpName, -Ypos, fieldSize );
fprintf( m_Outfile, "DRAW\n" );
break;
}
}
void BITMAPCONV_INFO::outputDataEnd()
void BITMAPCONV_INFO::OuputFileEnd()
{
switch( m_Format )
{
case POSTSCRIPT_FMT:
m_Data += "grestore\n";
m_Data += "%%EOF\n";
fprintf( m_Outfile, "grestore\n" );
fprintf( m_Outfile, "%%EOF\n" );
break;
case PCBNEW_KICAD_MOD:
m_Data += ")\n";
fprintf( m_Outfile, ")\n" );
break;
case KICAD_LOGO:
m_Data += ")\n";
fprintf( m_Outfile, ")\n" );
break;
case EESCHEMA_FMT:
m_Data += "ENDDRAW\n";
m_Data += "ENDDEF\n";
fprintf( m_Outfile, "ENDDRAW\n" );
fprintf( m_Outfile, "ENDDEF\n" );
break;
}
}
void BITMAPCONV_INFO::outputOnePolygon( SHAPE_LINE_CHAIN & aPolygon, const char* aBrdLayerName )
/**
* Function OuputOnePolygon
* write one polygon to output file.
* Polygon coordinates are expected scaled by the polygon extraction function
*/
void BITMAPCONV_INFO::OuputOnePolygon( SHAPE_LINE_CHAIN & aPolygon, const char* aBrdLayerName )
{
// write one polygon to output file.
// coordinates are expected in target unit.
int ii, jj;
VECTOR2I currpoint;
char strbuf[1024];
int offsetX = (int)( m_PixmapWidth / 2 * m_ScaleX );
int offsetY = (int)( m_PixmapHeight / 2 * m_ScaleY );
@@ -287,106 +322,95 @@ void BITMAPCONV_INFO::outputOnePolygon( SHAPE_LINE_CHAIN & aPolygon, const char*
{
case POSTSCRIPT_FMT:
offsetY = (int)( m_PixmapHeight * m_ScaleY );
sprintf( strbuf, "newpath\n%d %d moveto\n",
fprintf( m_Outfile, "newpath\n%d %d moveto\n",
startpoint.x, offsetY - startpoint.y );
m_Data += strbuf;
jj = 0;
for( ii = 1; ii < aPolygon.PointCount(); ii++ )
{
currpoint = aPolygon.CPoint( ii );
sprintf( strbuf, " %d %d lineto",
fprintf( m_Outfile, " %d %d lineto",
currpoint.x, offsetY - currpoint.y );
m_Data += strbuf;
if( jj++ > 6 )
{
jj = 0;
m_Data += "\n";
fprintf( m_Outfile, ("\n") );
}
}
m_Data += "\nclosepath fill\n";
fprintf( m_Outfile, "\nclosepath fill\n" );
break;
case PCBNEW_KICAD_MOD:
{
double width = 0.0; // outline thickness in mm: no thickness
m_Data += " (fp_poly (pts";
double width = 0.01; // outline thickness in mm
fprintf( m_Outfile, " (fp_poly (pts" );
jj = 0;
for( ii = 0; ii < aPolygon.PointCount(); ii++ )
{
currpoint = aPolygon.CPoint( ii );
sprintf( strbuf, " (xy %f %f)",
( currpoint.x - offsetX ) / MM2NANOMETER,
( currpoint.y - offsetY ) / MM2NANOMETER );
m_Data += strbuf;
fprintf( m_Outfile, " (xy %f %f)",
( currpoint.x - offsetX ) / 1e6,
( currpoint.y - offsetY ) / 1e6 );
if( jj++ > 6 )
{
jj = 0;
m_Data += "\n ";
fprintf( m_Outfile, ("\n ") );
}
}
// No need to close polygon
m_Data += " )";
sprintf( strbuf, "(layer %s) (width %f)\n )\n", aBrdLayerName, width );
m_Data += strbuf;
// Close polygon
fprintf( m_Outfile, " (xy %f %f) )",
( startpoint.x - offsetX ) / 1e6, ( startpoint.y - offsetY ) / 1e6 );
fprintf( m_Outfile, "(layer %s) (width %f)\n )\n", aBrdLayerName, width );
}
break;
case KICAD_LOGO:
m_Data += " (pts";
fprintf( m_Outfile, " (pts" );
// Internal units = micron, file unit = mm
jj = 0;
for( ii = 0; ii < aPolygon.PointCount(); ii++ )
{
currpoint = aPolygon.CPoint( ii );
sprintf( strbuf, " (xy %.3f %.3f)",
( currpoint.x - offsetX ) / MM2MICRON,
( currpoint.y - offsetY ) / MM2MICRON );
m_Data += strbuf;
fprintf( m_Outfile, " (xy %.3f %.3f)",
( currpoint.x - offsetX ) / 1e3,
( currpoint.y - offsetY ) / 1e3 );
if( jj++ > 4 )
{
jj = 0;
m_Data += "\n ";
fprintf( m_Outfile, ("\n ") );
}
}
// Close polygon
sprintf( strbuf, " (xy %.3f %.3f) )\n",
( startpoint.x - offsetX ) / MM2MICRON,
( startpoint.y - offsetY ) / MM2MICRON );
m_Data += strbuf;
fprintf( m_Outfile, " (xy %.3f %.3f) )\n",
( startpoint.x - offsetX ) / 1e3, ( startpoint.y - offsetY ) / 1e3 );
break;
case EESCHEMA_FMT:
// The polygon outline thickness is fixed here to 1 mil, the minimal
// value in Eeschema (0 means use default thickness for graphics)
#define EE_LINE_THICKNESS 1
sprintf( strbuf, "P %d 0 0 %d",
(int) aPolygon.PointCount() + 1, EE_LINE_THICKNESS );
m_Data += strbuf;
fprintf( m_Outfile, "P %d 0 0 1", (int) aPolygon.PointCount() + 1 );
for( ii = 0; ii < aPolygon.PointCount(); ii++ )
{
currpoint = aPolygon.CPoint( ii );
sprintf( strbuf, " %d %d",
fprintf( m_Outfile, " %d %d",
currpoint.x - offsetX, currpoint.y - offsetY );
m_Data += strbuf;
}
// Close polygon
sprintf( strbuf, " %d %d",
fprintf( m_Outfile, " %d %d",
startpoint.x - offsetX, startpoint.y - offsetY );
m_Data += strbuf;
m_Data += " F\n";
fprintf( m_Outfile, " F\n" );
break;
}
}
void BITMAPCONV_INFO::createOutputData( BMP2CMP_MOD_LAYER aModLayer )
void BITMAPCONV_INFO::CreateOutputFile( BMP2CMP_MOD_LAYER aModLayer )
{
std::vector <potrace_dpoint_t> cornersBuffer;
@@ -403,7 +427,7 @@ void BITMAPCONV_INFO::createOutputData( BMP2CMP_MOD_LAYER aModLayer )
// The layer name has meaning only for .kicad_mod files.
// For these files the header creates 2 invisible texts: value and ref
// (needed but not usefull) on silk screen layer
outputDataHeader( getBoardLayerName( MOD_LYR_FSILKS ) );
OuputFileHeader( getBrdLayerName( MOD_LYR_FSILKS ) );
bool main_outline = true;
@@ -411,12 +435,8 @@ void BITMAPCONV_INFO::createOutputData( BMP2CMP_MOD_LAYER aModLayer )
* Bezier curves are approximated by a polyline
*/
potrace_path_t* paths = m_Paths; // the list of paths
if(!m_Paths)
{
m_errors += "No path in black and white image: no outline created\n";
}
printf("NULL Paths!\n");
while( paths != NULL )
{
int cnt = paths->curve.n;
@@ -470,21 +490,17 @@ void BITMAPCONV_INFO::createOutputData( BMP2CMP_MOD_LAYER aModLayer )
*/
if( paths->next == NULL || paths->next->sign == '+' )
{
polyset_areas.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
polyset_holes.Simplify( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
polyset_areas.BooleanSubtract( polyset_holes, SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
// Ensure there are no self intersecting polygons
polyset_areas.NormalizeAreaOutlines();
// Convert polygon with holes to a unique polygon
// Substract holes to main polygon:
polyset_areas.Simplify( SHAPE_POLY_SET::PM_FAST );
polyset_holes.Simplify( SHAPE_POLY_SET::PM_FAST );
polyset_areas.BooleanSubtract( polyset_holes, SHAPE_POLY_SET::PM_FAST );
polyset_areas.Fracture( SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
// Output current resulting polygon(s)
for( int ii = 0; ii < polyset_areas.OutlineCount(); ii++ )
{
SHAPE_LINE_CHAIN& poly = polyset_areas.Outline( ii );
outputOnePolygon( poly, getBoardLayerName( aModLayer ));
OuputOnePolygon(poly, getBrdLayerName( aModLayer ) );
}
polyset_areas.RemoveAllContours();
@@ -494,7 +510,7 @@ void BITMAPCONV_INFO::createOutputData( BMP2CMP_MOD_LAYER aModLayer )
paths = paths->next;
}
outputDataEnd();
OuputFileEnd();
}
// a helper function to calculate a square value
-66
View File
@@ -24,9 +24,6 @@
#ifndef BITMAP2COMPONENT_H
#define BITMAP2COMPONENT_H
#include <geometry/shape_poly_set.h>
#include <potracelib.h>
// for consistency this enum should conform to the
// indices in m_radioBoxFormat from bitmap2cmp_gui.cpp
enum OUTPUT_FMT_ID
@@ -47,67 +44,4 @@ enum BMP2CMP_MOD_LAYER
MOD_LYR_FINAL = MOD_LYR_ECO2
};
/* Helper class to handle useful info to convert a bitmap image to
* a polygonal object description
*/
class BITMAPCONV_INFO
{
private:
enum OUTPUT_FMT_ID m_Format; // File format
int m_PixmapWidth;
int m_PixmapHeight; // the bitmap size in pixels
double m_ScaleX;
double m_ScaleY; // the conversion scale
potrace_path_t* m_Paths; // the list of paths, from potrace (list of lines and bezier curves)
std::string m_CmpName; // The string used as cmp/footprint name
std::string& m_Data; // the buffer containing the conversion
std::string m_errors; // a buffer to return error messages
public:
BITMAPCONV_INFO( std::string& aData );
/**
* Run the conversion of the bitmap
*/
int ConvertBitmap( potrace_bitmap_t* aPotrace_bitmap,
OUTPUT_FMT_ID aFormat, int aDpi_X, int aDpi_Y,
BMP2CMP_MOD_LAYER aModLayer );
std::string& GetErrorMessages() {return m_errors; }
private:
/**
* Creates the data specified by m_Format
*/
void createOutputData( BMP2CMP_MOD_LAYER aModLayer = (BMP2CMP_MOD_LAYER) 0 );
/**
* Function outputDataHeader
* write to file the header depending on file format
*/
void outputDataHeader( const char * aBrdLayerName );
/**
* Function outputDataEnd
* write to file the last strings depending on file format
*/
void outputDataEnd();
/**
* @return the board layer name depending on the board layer selected
* @param aChoice = the choice (MOD_LYR_FSILKS to MOD_LYR_FINAL)
*/
const char * getBoardLayerName( BMP2CMP_MOD_LAYER aChoice );
/**
* Function outputOnePolygon
* write one polygon to output file.
* Polygon coordinates are expected scaled by the polygon extraction function
*/
void outputOnePolygon( SHAPE_LINE_CHAIN & aPolygon, const char* aBrdLayerName );
};
#endif // BITMAP2COMPONENT_H
+74 -3
View File
@@ -131,6 +131,7 @@ set( BMAPS_MID
add_line_label
add_line
add_pcb_target
add_polygon
add_power
add_rectangle
add_tracks
@@ -163,15 +164,14 @@ set( BMAPS_MID
axis3d
bitmap2component
bom
book
break_bus
break_line
browse_files
bus_definition_tool
calculator
cancel
change_entry_orient
contrast_mode
curved_ratsnest
create_cmp_file
checked_ok
color_materials
@@ -186,10 +186,25 @@ set( BMAPS_MID
custom_pad_to_primitives
cut
cvpcb
dashline
datasheet
delete_association
delete_bus
delete_circle
delete_connection
delete_dimension
delete_field
delete_gerber
delete_glabel
delete_line
delete_module
delete_net
delete_node
delete_pad
delete_polygon
delete_rectangle
delete_sheet
delete_track
delete
directory
directory_browser
@@ -198,10 +213,13 @@ set( BMAPS_MID
distribute_vertical
down
drag
drag_outline_segment
drag_pad
drag_segment_withslope
drc_off
drc
duplicate
edges_sketch
edit_comp_footprint
edit_comp_ref
edit_comp_value
@@ -245,6 +263,9 @@ set( BMAPS_MID
gerbview_clear_layers
general_deletions
general_ratsnest
glabel2label
glabel2text
gl_change
go_down
go_up
green
@@ -257,6 +278,8 @@ set( BMAPS_MID
hierarchy_nav
highlight_remove
hotkeys
hotkeys_import
hotkeys_export
html
icon
icon_cvpcb_small
@@ -270,12 +293,14 @@ set( BMAPS_MID
import_module
import_part
import_project
import_vector
import_setup
import
info
insert_module_board
invisible_text
kicad_icon_small
label2glabel
label2text
label
lang_ca
lang_bg
@@ -315,6 +340,7 @@ set( BMAPS_MID
list_nets
load_gerber
load_module_board
load_module_lib
local_ratsnest
lock_unlock
locked
@@ -325,6 +351,7 @@ set( BMAPS_MID
mirror_v
mode_module
mode_track
modratsnest
module_check
module_editor
module_wizard
@@ -334,11 +361,18 @@ set( BMAPS_MID
module_pin_filtered_list
module_library_list
module_name_filtered_list
module_ratsnest
module
modview_icon
morgan1
morgan2
move_glabel
move_exactly
move_pad
move_polygon
move_rectangle
move_sheet
move_target
move
move_relative
mw_add_gap
@@ -365,15 +399,34 @@ set( BMAPS_MID
noconn
normal
online_help
open_brd_file
open_library
open_page_layout
open_project
open_document
options_3drender
options_all_tracks_and_vias
options_all_tracks
options_all_vias
options_arc
options_board
options_circle
options_generic
options_module
options_pad
options_pinsheet
options_pin
options_rectangle
options_segment
options_tracks
options_track
options_vias
opt_show_polygon
orient
ortho
pad_sketch
pad
pad_dimensions
pad_enumerate
pads_mask_layers
path
@@ -387,11 +440,18 @@ set( BMAPS_MID
pcbcalculator
pcb_offset
pin2pin
pin_name_to
pin_number_to
pin_size_to
pin_show_etype
pin_table
pin_to
pin
plot
plot_dxf
plot_hpg
plot_pdf
plot_ps
plot_svg
plus
polar_coord
@@ -438,6 +498,10 @@ set( BMAPS_MID
rotate_pos_z
save_as
save_fp_to_board
save_gerber
save_library
save_project
save_setup
save
select_grid
select_layer_pair
@@ -481,6 +545,7 @@ set( BMAPS_MID
track_locked
track_sketch
track_unlocked
transistor
undelete
undo
unit_inch
@@ -490,6 +555,7 @@ set( BMAPS_MID
unzip
up
update_fields
update_module_board
update_pcb_from_sch
use_3D_copper_thickness
via
@@ -497,9 +563,14 @@ set( BMAPS_MID
via_microvia
via_sketch
warning
web_support
width_net
width_segment
width_track_via
width_track
width_vias
wizard_add_fplib_small
zip_tool
zip
zone_duplicate
zone_unfill
+13 -7
View File
@@ -8,13 +8,19 @@
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, 0x00, 0x52, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x63, 0x60, 0x18, 0x2c, 0xa0,
0x0d, 0x88, 0xf7, 0x02, 0xf1, 0x7f, 0x20, 0x7e, 0x0b, 0xc4, 0xa7, 0x81, 0x58, 0x82, 0x14, 0x03,
0x0e, 0x01, 0x31, 0x1f, 0x12, 0xbf, 0x0a, 0x88, 0x57, 0x90, 0x62, 0xc0, 0x7f, 0x12, 0x31, 0xc8,
0xb5, 0x2d, 0xe8, 0x06, 0x90, 0x02, 0xf8, 0x81, 0xf8, 0x00, 0x25, 0x06, 0x60, 0xe8, 0x19, 0x35,
0x80, 0x0a, 0x06, 0xec, 0x82, 0x26, 0x24, 0x46, 0x22, 0xb1, 0x00, 0x10, 0xef, 0x40, 0x4f, 0xca,
0x7b, 0x28, 0x49, 0x48, 0x03, 0x07, 0x00, 0x53, 0x4f, 0x2f, 0x0f, 0x29, 0x5f, 0x3d, 0xf7, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0x61, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0e, 0xc4, 0x00, 0x00, 0x0e,
0xc4, 0x01, 0x95, 0x2b, 0x0e, 0x1b, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f,
0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63,
0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 0xee, 0x3c, 0x1a, 0x00, 0x00, 0x00, 0x69, 0x49,
0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0xd2, 0x31, 0x0e, 0x82, 0x40, 0x14, 0x06, 0xe1, 0x4f, 0x0e,
0x20, 0x94, 0x9c, 0xd5, 0xda, 0x78, 0x16, 0x1a, 0xe8, 0x0d, 0xd9, 0xc4, 0xd8, 0xca, 0x55, 0xb8,
0x82, 0x6b, 0x01, 0x41, 0xb4, 0xda, 0xd5, 0x86, 0x82, 0x49, 0xfe, 0xe2, 0x15, 0x33, 0xd5, 0x63,
0x2b, 0x5c, 0x10, 0x10, 0x31, 0xe2, 0x81, 0x3a, 0x27, 0x70, 0xc7, 0x71, 0x75, 0x9f, 0xd0, 0xe4,
0x04, 0x62, 0xe6, 0x02, 0xce, 0xdf, 0x81, 0x1c, 0x4a, 0xdc, 0xfe, 0x09, 0x2c, 0x4e, 0xf1, 0x83,
0xf8, 0xc1, 0x1e, 0x78, 0x07, 0x7a, 0xd3, 0x23, 0x1d, 0x12, 0x57, 0xe1, 0xba, 0x0e, 0x0c, 0xe8,
0xf0, 0x4c, 0x5c, 0x3b, 0x3b, 0x1b, 0xe0, 0x05, 0x48, 0x07, 0x25, 0x8f, 0x26, 0x9b, 0x81, 0x8e,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE folder_xpm[1] = {{ png, sizeof( png ), "folder_xpm" }};
+51
View File
@@ -0,0 +1,51 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x02, 0x1d, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0xa0, 0x27, 0xc8,
0xcd, 0xcd, 0x65, 0x4f, 0xc9, 0x4e, 0x9d, 0x94, 0x92, 0x95, 0xf2, 0x01, 0x84, 0x93, 0x73, 0x52,
0x27, 0x80, 0xc4, 0xa8, 0x6e, 0x11, 0xc8, 0x92, 0xb0, 0xba, 0xa8, 0x6f, 0x86, 0x3b, 0x1c, 0xff,
0x1b, 0xec, 0x70, 0xf8, 0x1f, 0x56, 0x17, 0xf3, 0x15, 0x64, 0x19, 0x31, 0x7a, 0x53, 0x53, 0x53,
0xdd, 0xd3, 0xd2, 0xd2, 0x0a, 0x81, 0xd8, 0x8d, 0xb0, 0x45, 0x40, 0x5f, 0x80, 0x2c, 0xd0, 0x3a,
0x64, 0x03, 0xc6, 0x20, 0x0b, 0xe3, 0xd3, 0x32, 0x7f, 0x33, 0x30, 0x9c, 0x98, 0xc7, 0xc0, 0x70,
0xbc, 0x01, 0x88, 0x53, 0x80, 0xd8, 0x93, 0x81, 0xe1, 0x94, 0x36, 0x03, 0xc3, 0x19, 0x7e, 0x98,
0xbe, 0xa4, 0xec, 0x94, 0xcd, 0xb1, 0x25, 0x09, 0x9f, 0xbc, 0xfb, 0x82, 0x7f, 0xc5, 0x16, 0xc7,
0x7f, 0x4a, 0xca, 0x4e, 0xda, 0x48, 0xb2, 0x45, 0x71, 0x29, 0xd9, 0xff, 0x81, 0x16, 0xe1, 0xc2,
0x9f, 0x15, 0x14, 0x56, 0x3c, 0x8c, 0x2c, 0x48, 0xf9, 0xad, 0x7d, 0xd0, 0x16, 0xac, 0x47, 0xfb,
0x80, 0xed, 0xff, 0x38, 0xa0, 0xa5, 0xe9, 0xe9, 0xe9, 0xae, 0x38, 0x2d, 0x02, 0x05, 0x53, 0x78,
0x6d, 0xf4, 0x37, 0x90, 0x65, 0x20, 0x4b, 0xc2, 0x6a, 0x62, 0xbe, 0x07, 0x84, 0x95, 0xad, 0x87,
0xfa, 0xa4, 0x01, 0xe2, 0xb3, 0x13, 0x3b, 0x81, 0xf8, 0x2a, 0xc8, 0x12, 0x90, 0x65, 0x7a, 0x7a,
0x73, 0xfe, 0x7b, 0x75, 0x87, 0xc1, 0x1d, 0x07, 0xc2, 0x3e, 0xbd, 0xc1, 0x3f, 0x81, 0x16, 0x15,
0xe1, 0x4d, 0x0c, 0x20, 0xcb, 0x52, 0xb2, 0x53, 0xde, 0x83, 0x70, 0x72, 0x56, 0x6a, 0x5f, 0x68,
0x68, 0x28, 0x1b, 0xee, 0x30, 0x38, 0xc3, 0xef, 0xee, 0xde, 0x96, 0x1a, 0x5d, 0x98, 0xf0, 0x0d,
0xe4, 0x13, 0x64, 0x1f, 0x01, 0xe3, 0xcc, 0x85, 0xea, 0x89, 0x08, 0x14, 0x27, 0x20, 0xc3, 0xbd,
0x7b, 0xc2, 0xfe, 0x45, 0xe6, 0xa5, 0xfd, 0x8f, 0x88, 0xcf, 0x3f, 0x46, 0xb3, 0xac, 0x01, 0x4a,
0x6d, 0xf6, 0xf6, 0xdd, 0xdb, 0xa4, 0xa5, 0xd7, 0x81, 0xe2, 0x6e, 0x31, 0x8d, 0x73, 0xe2, 0x51,
0x79, 0xa0, 0x25, 0xff, 0x80, 0xf8, 0x0b, 0x03, 0xc3, 0x7e, 0x1e, 0x1a, 0x5b, 0x76, 0xe2, 0x30,
0x34, 0x45, 0xc6, 0xd2, 0xd8, 0xa2, 0x93, 0x19, 0x50, 0x8b, 0x76, 0xd0, 0xd8, 0xa2, 0xc3, 0x82,
0x40, 0xcb, 0x7e, 0x00, 0x2d, 0xfa, 0x03, 0xcc, 0xd8, 0x12, 0xb4, 0x0e, 0xbe, 0xf5, 0x10, 0x5f,
0x9d, 0x2c, 0xa4, 0xb5, 0x45, 0xc1, 0xd0, 0xe0, 0x3b, 0x43, 0x53, 0x6b, 0xac, 0xad, 0xe7, 0xf2,
0x5a, 0xdb, 0xf7, 0x7e, 0x8f, 0x4b, 0xc9, 0xfa, 0x9f, 0x9c, 0x99, 0xfa, 0x99, 0xa6, 0xb5, 0x40,
0x48, 0x4d, 0xec, 0x6f, 0x72, 0x6a, 0x01, 0x22, 0xc1, 0x45, 0x6e, 0x06, 0x86, 0x63, 0xf6, 0x89,
0xe9, 0xe9, 0xdf, 0xd1, 0x0b, 0x67, 0x50, 0x91, 0x46, 0x49, 0x06, 0x55, 0x06, 0xc6, 0x43, 0x0c,
0x10, 0x4f, 0x01, 0xe2, 0xb3, 0x40, 0x0c, 0xaa, 0x52, 0xfe, 0x83, 0x82, 0x0c, 0xaf, 0x45, 0xf8,
0x6b, 0xd8, 0x33, 0x5c, 0x40, 0x43, 0x6c, 0x80, 0x38, 0x1f, 0x88, 0x57, 0x01, 0xf1, 0x0b, 0x2c,
0xd5, 0xc6, 0x1f, 0x50, 0xc9, 0xee, 0xe4, 0xd1, 0x7a, 0x3d, 0xac, 0x26, 0xf6, 0x27, 0xbc, 0x16,
0xa8, 0x05, 0x06, 0x1d, 0xb0, 0x80, 0xc6, 0x59, 0xc3, 0x86, 0xd6, 0xc4, 0xfe, 0x70, 0xf5, 0x6e,
0x3e, 0x0f, 0xd4, 0x7c, 0x04, 0x9a, 0x37, 0xd0, 0x0d, 0xfe, 0x00, 0xc4, 0xbb, 0xa1, 0x95, 0xa2,
0x2f, 0x03, 0xc3, 0x79, 0x01, 0xa2, 0x6a, 0x01, 0x02, 0x15, 0xdf, 0x6f, 0x68, 0xf0, 0x4c, 0x81,
0x04, 0x17, 0x28, 0xd8, 0xc8, 0x4d, 0x2d, 0x58, 0x2c, 0x02, 0x45, 0x2c, 0x28, 0x82, 0x21, 0x11,
0x4d, 0x25, 0x80, 0x51, 0xc3, 0xa2, 0x87, 0x2d, 0x35, 0x9b, 0x5b, 0xa4, 0xd5, 0xb0, 0x83, 0x18,
0x00, 0x00, 0x06, 0xd3, 0x8e, 0xf0, 0xd7, 0x9a, 0xbb, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE add_polygon_xpm[1] = {{ png, sizeof( png ), "add_polygon_xpm" }};
//EOF
+46 -61
View File
@@ -8,67 +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, 0x00, 0x04, 0x73, 0x42, 0x49, 0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64,
0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0e, 0xc4, 0x00, 0x00, 0x0e,
0xc4, 0x01, 0x95, 0x2b, 0x0e, 0x1b, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f,
0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63,
0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 0xee, 0x3c, 0x1a, 0x00, 0x00, 0x03, 0x6a, 0x49,
0x44, 0x41, 0x54, 0x48, 0x89, 0xb5, 0xd5, 0x5d, 0x88, 0xd6, 0x45, 0x14, 0x06, 0xf0, 0xdf, 0xbc,
0xbb, 0xb4, 0x9b, 0xa2, 0x52, 0x62, 0x9f, 0x62, 0x6a, 0xa9, 0xb9, 0x57, 0x19, 0xe9, 0x8d, 0x8a,
0x41, 0xa5, 0x45, 0xc6, 0xde, 0x44, 0x4a, 0x46, 0x84, 0x94, 0xd1, 0x5d, 0x88, 0xd5, 0x4a, 0xda,
0x7b, 0x16, 0x57, 0xcd, 0x0a, 0x2a, 0x6f, 0x02, 0xa1, 0x0b, 0x31, 0x2f, 0x0a, 0xca, 0xa0, 0x2e,
0x44, 0xa5, 0x04, 0xc3, 0xec, 0x1b, 0x0c, 0xda, 0x4a, 0x5c, 0x25, 0x71, 0x55, 0x6a, 0x57, 0x2a,
0x65, 0x5d, 0x7d, 0x77, 0xa7, 0x8b, 0xf7, 0xdd, 0xdd, 0xb7, 0xfd, 0x08, 0xcc, 0x75, 0xe0, 0xcf,
0x7f, 0x66, 0xce, 0xcc, 0x3c, 0x33, 0xcf, 0x79, 0xce, 0x39, 0x49, 0x38, 0x87, 0xdf, 0x5d, 0xdd,
0x36, 0xa9, 0x16, 0x67, 0x70, 0xe0, 0x2a, 0x03, 0x2d, 0x2c, 0x8c, 0xc2, 0x21, 0xf5, 0xb8, 0x16,
0xe9, 0xbf, 0x16, 0xd5, 0xfe, 0xaf, 0xa3, 0x93, 0x9b, 0x64, 0x33, 0x71, 0x0b, 0xea, 0x2a, 0xb3,
0x97, 0xd0, 0x8e, 0x5f, 0x70, 0xea, 0x4a, 0x81, 0x6a, 0x30, 0x4f, 0x36, 0x03, 0xfb, 0xf0, 0x8a,
0x82, 0x23, 0x28, 0xe9, 0x35, 0x0b, 0xcb, 0xb1, 0x54, 0xd2, 0x26, 0x3b, 0x84, 0xd2, 0xe5, 0x03,
0x65, 0x49, 0xb2, 0x48, 0x32, 0x06, 0xf7, 0x29, 0xda, 0x1f, 0x11, 0x73, 0xf4, 0xba, 0xa7, 0xb2,
0xe2, 0xdb, 0x88, 0x68, 0x14, 0xe6, 0xe3, 0x23, 0x2c, 0xc2, 0x67, 0xc8, 0x90, 0x84, 0xa3, 0x86,
0x8a, 0xe1, 0x36, 0x4c, 0x1d, 0x04, 0x54, 0x2f, 0x99, 0xa0, 0x60, 0x6e, 0xf4, 0xc6, 0xdf, 0x78,
0x17, 0xf7, 0x0f, 0xda, 0xb7, 0x17, 0x4f, 0x47, 0x4d, 0x8c, 0x55, 0xf2, 0xb5, 0xe4, 0x08, 0x0e,
0x1b, 0x41, 0x0c, 0x35, 0x98, 0xab, 0xcc, 0xf3, 0x37, 0xfd, 0x5f, 0x72, 0x40, 0xb2, 0x2c, 0x7a,
0xe3, 0x98, 0x32, 0x6d, 0x83, 0x41, 0xe0, 0x01, 0xec, 0x8f, 0x9e, 0x38, 0xa1, 0x60, 0x1d, 0x1a,
0x70, 0x0d, 0xc3, 0x51, 0x97, 0xdd, 0x21, 0x49, 0x58, 0x2a, 0x74, 0x0e, 0xb1, 0x87, 0x4d, 0x98,
0x51, 0x19, 0x75, 0xe3, 0x3d, 0x65, 0xc5, 0xad, 0x50, 0x16, 0xc6, 0x34, 0xac, 0x95, 0x6d, 0xc4,
0x16, 0xd9, 0xad, 0xd2, 0x50, 0xa0, 0x24, 0x99, 0x85, 0x6d, 0x42, 0x67, 0x44, 0x7c, 0x8c, 0xc6,
0x61, 0x6e, 0x5e, 0x5e, 0x9c, 0xd2, 0x8a, 0x62, 0xb1, 0xf8, 0x21, 0x34, 0x37, 0x37, 0xef, 0xce,
0x39, 0x7f, 0x50, 0x31, 0x2d, 0x16, 0x5e, 0x16, 0xbe, 0x97, 0x4c, 0x84, 0xc1, 0xd4, 0x4d, 0xc1,
0x38, 0xbc, 0xb9, 0x61, 0xc3, 0x86, 0xd9, 0x78, 0x64, 0x24, 0x10, 0xa8, 0xaf, 0xaf, 0xdf, 0x53,
0xd5, 0xdf, 0x5d, 0x65, 0x9a, 0x55, 0xf9, 0x9f, 0xaa, 0xbc, 0x72, 0x08, 0xd0, 0x6c, 0xc9, 0xfb,
0xc2, 0x6f, 0x3d, 0x3d, 0x3d, 0x6b, 0x86, 0xb1, 0xff, 0xab, 0x75, 0x75, 0x75, 0x2d, 0xa9, 0xea,
0x3f, 0x54, 0x65, 0xfa, 0xb9, 0xf2, 0xbf, 0x59, 0x99, 0xde, 0x2a, 0xd5, 0x95, 0x83, 0x70, 0x31,
0xee, 0x6a, 0xa9, 0x6d, 0xe9, 0x28, 0x95, 0x4a, 0x6d, 0x2a, 0x8e, 0xc4, 0xfc, 0x88, 0x38, 0x08,
0x11, 0xb1, 0x09, 0x6b, 0x2b, 0xf3, 0xdd, 0xd8, 0xa9, 0xec, 0xa3, 0xc7, 0x0d, 0x04, 0xef, 0xc6,
0x18, 0x1b, 0x9b, 0x9d, 0xd7, 0x21, 0xfb, 0x4a, 0x32, 0x79, 0xc0, 0x47, 0x59, 0x03, 0xf6, 0x09,
0x87, 0x4b, 0x51, 0x7a, 0xad, 0x0a, 0xe4, 0x8b, 0x88, 0x38, 0xa8, 0xd9, 0x0a, 0x5c, 0x90, 0xb5,
0xe0, 0x51, 0x65, 0x41, 0xd4, 0x61, 0xe5, 0xa0, 0x87, 0xb6, 0xe1, 0x55, 0xe7, 0x3d, 0xa3, 0x1c,
0x7d, 0x27, 0x31, 0xb9, 0x8f, 0x9a, 0xeb, 0x30, 0x59, 0xb2, 0x39, 0x22, 0xc6, 0x63, 0x55, 0xd5,
0xc6, 0xd7, 0x85, 0x7a, 0xd9, 0x5b, 0xb2, 0x1d, 0x21, 0xa6, 0x2b, 0x4b, 0x7b, 0xef, 0x30, 0x6c,
0xee, 0xa9, 0xad, 0xad, 0xbd, 0x37, 0xc4, 0x14, 0xb4, 0xa0, 0x15, 0x17, 0x19, 0xf0, 0x41, 0x03,
0x7e, 0x50, 0xf4, 0x79, 0x4a, 0xe9, 0x39, 0x4c, 0xa8, 0xe2, 0xfa, 0x53, 0x3c, 0x29, 0x1b, 0x8f,
0x4e, 0xc9, 0xfe, 0x48, 0x71, 0x7b, 0x44, 0x2c, 0xc1, 0x9c, 0x94, 0xd2, 0xaa, 0x94, 0xd2, 0xaa,
0x42, 0xa1, 0x70, 0x77, 0x44, 0x3c, 0xb8, 0xae, 0xb4, 0x6e, 0x9a, 0x64, 0xbf, 0xec, 0x2c, 0x7e,
0xec, 0xbb, 0x41, 0x12, 0xce, 0x60, 0x22, 0x96, 0x6f, 0xbd, 0x7e, 0xeb, 0x27, 0x9d, 0x9d, 0x9d,
0x6d, 0xca, 0xc9, 0x52, 0x4a, 0x69, 0x65, 0x31, 0x17, 0xb7, 0xe3, 0x08, 0xba, 0x65, 0xdf, 0x49,
0xe6, 0x55, 0x68, 0xdb, 0x27, 0xd9, 0x21, 0xf9, 0x55, 0xaf, 0x1e, 0xdc, 0x89, 0x65, 0x78, 0x58,
0x76, 0x54, 0x72, 0x08, 0x3d, 0x15, 0x9c, 0x85, 0xb5, 0xb8, 0x01, 0xc7, 0x35, 0xd8, 0x75, 0xb6,
0xf5, 0xec, 0x53, 0x7d, 0x20, 0x38, 0x99, 0x73, 0xde, 0x29, 0x69, 0x94, 0x4d, 0xc5, 0x2e, 0x49,
0x0f, 0xbe, 0x94, 0x1c, 0xc3, 0x4c, 0xd9, 0x36, 0x59, 0x7d, 0x65, 0xfd, 0x45, 0xb4, 0xcb, 0xf6,
0x4a, 0x23, 0x67, 0xef, 0x2d, 0x1e, 0xd3, 0x9b, 0x23, 0xaf, 0xee, 0x7f, 0x6a, 0x4a, 0x6f, 0x17,
0x8b, 0xc5, 0x8b, 0x42, 0x13, 0x8e, 0xe1, 0x5c, 0xff, 0xae, 0xec, 0x34, 0x4e, 0x57, 0x46, 0xf5,
0x48, 0xb2, 0x0b, 0x92, 0x3c, 0x52, 0x55, 0x2a, 0x48, 0x3a, 0x8c, 0xb7, 0x3d, 0x22, 0x1a, 0x2b,
0xbe, 0x82, 0xbf, 0xea, 0xea, 0xea, 0xb6, 0x09, 0x0b, 0x30, 0x4f, 0xf2, 0xd3, 0xf0, 0xdb, 0xc1,
0x05, 0x74, 0x49, 0xe5, 0x2c, 0x3d, 0x52, 0x2b, 0xe0, 0x59, 0xab, 0x75, 0xe1, 0x85, 0xaa, 0xf9,
0x77, 0x9a, 0x9a, 0x9a, 0xfe, 0xc4, 0x4b, 0x92, 0x13, 0xf2, 0x30, 0x39, 0xef, 0x32, 0x5b, 0x82,
0x88, 0x58, 0x60, 0xa0, 0x54, 0x74, 0x63, 0x7a, 0xd4, 0xc4, 0x38, 0x3d, 0x5a, 0x95, 0x33, 0x75,
0xfb, 0x15, 0xe2, 0xf4, 0x97, 0x89, 0x35, 0x55, 0x93, 0x3b, 0x23, 0xa2, 0x5d, 0xc9, 0x8b, 0x92,
0x3f, 0x46, 0x01, 0x04, 0x03, 0x71, 0xd4, 0x57, 0x5b, 0x7a, 0x6b, 0x6a, 0x6a, 0xde, 0xb0, 0xd1,
0x8d, 0x92, 0x27, 0xe4, 0xfe, 0x9c, 0x35, 0x6a, 0x40, 0x5b, 0x95, 0x9d, 0xba, 0x65, 0xfd, 0xfa,
0xf5, 0xad, 0x2e, 0x79, 0xbe, 0x32, 0x3e, 0x3e, 0x5a, 0x40, 0x43, 0xc5, 0x18, 0xc6, 0xc8, 0x4e,
0x29, 0x48, 0xb2, 0x8e, 0x51, 0xc2, 0x99, 0xf4, 0x0f, 0x91, 0x83, 0x1f, 0x42, 0x3f, 0x13, 0xec,
0x28, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
0xce, 0x00, 0x00, 0x02, 0xbb, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x4d, 0x68, 0x15,
0x67, 0x14, 0x86, 0x9f, 0x58, 0x0a, 0x1a, 0x6b, 0x29, 0xae, 0xda, 0x85, 0x59, 0x9b, 0xd2, 0x96,
0x1a, 0x0a, 0x81, 0xfe, 0x2c, 0xb4, 0x6b, 0x91, 0x62, 0xdc, 0xa8, 0xdd, 0x08, 0x4a, 0x17, 0xa5,
0x4b, 0xb7, 0xf3, 0x9c, 0xb9, 0xd7, 0xc0, 0x25, 0x60, 0xd7, 0x01, 0x23, 0x4d, 0x15, 0xdb, 0x4a,
0x0b, 0x55, 0x37, 0x7a, 0x15, 0x04, 0xf1, 0x8f, 0xd2, 0xd2, 0x8d, 0x94, 0xb6, 0x1a, 0xab, 0xa6,
0xa0, 0x69, 0xb5, 0xad, 0x69, 0x24, 0x31, 0x36, 0xde, 0x2e, 0xfc, 0x26, 0x4c, 0x6e, 0x6e, 0x12,
0x91, 0x9b, 0x81, 0x03, 0xc3, 0xfc, 0x9c, 0x67, 0xde, 0xef, 0x9c, 0xf3, 0x7e, 0x03, 0x32, 0x81,
0xfc, 0xb6, 0xcc, 0x31, 0x01, 0x32, 0x82, 0x7c, 0xb6, 0xcc, 0x31, 0xb2, 0x14, 0x68, 0x18, 0xf9,
0x0a, 0xf9, 0x72, 0xb9, 0x40, 0x75, 0x82, 0x1b, 0xc8, 0x34, 0xd2, 0x48, 0x31, 0x49, 0x70, 0x1d,
0x39, 0xd9, 0x0e, 0xd0, 0x61, 0x32, 0x46, 0x90, 0xc7, 0xc8, 0x31, 0x64, 0x3b, 0xd2, 0x43, 0x4e,
0x2f, 0xb2, 0x93, 0x8c, 0xd3, 0xe9, 0xde, 0x2f, 0x64, 0x1c, 0x7a, 0x56, 0xd0, 0xe7, 0xc8, 0x28,
0x32, 0x86, 0xbc, 0x0d, 0x74, 0xa8, 0x3d, 0xea, 0x9e, 0x14, 0x3d, 0x40, 0x07, 0xb2, 0x89, 0xe0,
0x2e, 0x72, 0x93, 0x8c, 0xe1, 0x67, 0x01, 0xfd, 0x88, 0x8c, 0x23, 0xeb, 0xd5, 0x2e, 0xf5, 0xb4,
0xda, 0x68, 0x8a, 0xba, 0xda, 0x85, 0xbc, 0x86, 0x4c, 0x92, 0x71, 0xbb, 0x45, 0x87, 0x9d, 0x5d,
0x0c, 0x74, 0x84, 0x60, 0x0a, 0xf9, 0x58, 0xed, 0x54, 0x7f, 0x6d, 0x01, 0x29, 0xe2, 0xba, 0xfa,
0x02, 0xc1, 0x66, 0xe4, 0x68, 0x53, 0x5c, 0x4c, 0xe3, 0x72, 0x68, 0x21, 0xd0, 0x39, 0x64, 0x92,
0xfd, 0xac, 0x52, 0xfb, 0x4b, 0x49, 0xa7, 0xd4, 0x03, 0xea, 0x50, 0x3a, 0x2f, 0xae, 0x57, 0x69,
0x75, 0xc8, 0x5a, 0xe4, 0x01, 0x19, 0x97, 0x16, 0x02, 0x5d, 0x41, 0xce, 0x03, 0xa8, 0xdf, 0x17,
0x09, 0x23, 0x62, 0xeb, 0x6c, 0x0e, 0xed, 0x5b, 0x44, 0x65, 0x43, 0xfd, 0x36, 0xc1, 0x3e, 0x45,
0xfe, 0x4a, 0xa3, 0x31, 0x0f, 0x74, 0x15, 0xf9, 0x26, 0x25, 0x1c, 0x2f, 0x5e, 0xae, 0xd5, 0x6a,
0x6b, 0x0a, 0x50, 0xad, 0x56, 0x5b, 0xb3, 0x04, 0x68, 0xa6, 0x52, 0xa9, 0x74, 0x23, 0x5d, 0xc8,
0xa3, 0xa6, 0x5a, 0xcd, 0x51, 0x74, 0xa1, 0x59, 0x91, 0xda, 0x57, 0x80, 0x22, 0x62, 0xdb, 0x12,
0xa0, 0x86, 0x3a, 0xf4, 0xe4, 0x61, 0x0e, 0x23, 0x77, 0x16, 0xae, 0x91, 0x74, 0xb6, 0xa8, 0xd1,
0xc1, 0x14, 0x0f, 0x5b, 0xd5, 0x28, 0xcf, 0xf3, 0xde, 0xd2, 0xf5, 0xe9, 0x6a, 0xb5, 0xba, 0x0e,
0x79, 0x03, 0x79, 0x4c, 0xcc, 0x0e, 0x77, 0xa9, 0xeb, 0x64, 0x0a, 0xf9, 0xe4, 0x29, 0xba, 0x6e,
0x64, 0x60, 0x60, 0x60, 0x35, 0xc1, 0x56, 0x82, 0x1d, 0x69, 0x15, 0xce, 0x97, 0xee, 0xd7, 0x52,
0xad, 0xea, 0xc8, 0xad, 0xd6, 0x73, 0x94, 0xf1, 0x2f, 0x15, 0xba, 0xd3, 0x1c, 0xd5, 0x5b, 0x40,
0x4e, 0x55, 0xab, 0xd5, 0x75, 0xe4, 0xbc, 0x9e, 0x56, 0xe0, 0x4f, 0x64, 0x65, 0x44, 0x6c, 0x29,
0x3d, 0x73, 0x5f, 0x7d, 0x89, 0x60, 0x63, 0xc9, 0x61, 0xe6, 0x80, 0x86, 0x91, 0x51, 0x82, 0x3f,
0xc8, 0x79, 0x0f, 0xe8, 0xc8, 0xf3, 0x7c, 0x43, 0x44, 0xec, 0x8e, 0x88, 0xdd, 0xea, 0x9b, 0x40,
0x07, 0xc1, 0xfb, 0xc8, 0x3d, 0xe4, 0x77, 0x32, 0x1e, 0x22, 0x7b, 0x92, 0x8b, 0x5c, 0x29, 0xc1,
0xf6, 0x26, 0x55, 0x3f, 0xa4, 0x46, 0x6b, 0xe1, 0x75, 0x72, 0x2d, 0x7d, 0xc9, 0x09, 0x82, 0x1d,
0xc8, 0x5b, 0xe4, 0xf4, 0x12, 0x7c, 0x88, 0x9c, 0x69, 0xf2, 0xba, 0x9f, 0xd2, 0xfb, 0x2b, 0xd4,
0x5d, 0x25, 0xd0, 0x6d, 0x75, 0x25, 0xd2, 0x87, 0xfc, 0x87, 0x8c, 0x2d, 0xe4, 0xde, 0xa7, 0x92,
0x9d, 0xcc, 0x75, 0x6f, 0xe7, 0xb9, 0xf7, 0xd7, 0xc8, 0x0c, 0xc1, 0x07, 0x83, 0x83, 0x83, 0xcf,
0xab, 0xb7, 0x4a, 0xb0, 0x5d, 0x1c, 0xe5, 0xb9, 0x94, 0xa7, 0xb1, 0xf8, 0x7e, 0x94, 0xcd, 0xee,
0x47, 0x5f, 0x2c, 0x62, 0x98, 0xd7, 0x90, 0xef, 0x52, 0x53, 0xec, 0x2d, 0x81, 0x7e, 0x56, 0x57,
0x20, 0x1f, 0x2d, 0x0d, 0x7a, 0x9a, 0x08, 0x8e, 0x27, 0xc5, 0xef, 0xaa, 0x2f, 0xaa, 0x7f, 0x97,
0x9c, 0x65, 0x0b, 0xfb, 0x59, 0x45, 0x70, 0xb7, 0x5d, 0x5b, 0xf9, 0x28, 0x72, 0x22, 0xa9, 0xaa,
0x95, 0x54, 0x5d, 0x4e, 0x4d, 0xd1, 0xd7, 0x2e, 0x50, 0x3d, 0x35, 0xc9, 0xab, 0xea, 0xcb, 0xea,
0x64, 0x01, 0xcb, 0xf3, 0xfc, 0x9d, 0xc2, 0x71, 0xdb, 0xf5, 0x73, 0x32, 0x46, 0x70, 0x20, 0xa9,
0x1a, 0x9a, 0x67, 0xb6, 0x6d, 0x04, 0x9d, 0x43, 0xa6, 0xd9, 0xc7, 0x2b, 0x95, 0x4a, 0xa5, 0x5b,
0x9d, 0x49, 0xa0, 0x89, 0x76, 0x83, 0x86, 0x91, 0x7f, 0x90, 0xfe, 0xa4, 0xaa, 0x3f, 0x2d, 0x61,
0x7f, 0x01, 0x6a, 0xdf, 0x0f, 0x64, 0x30, 0x4e, 0xc6, 0x7d, 0xa4, 0xb3, 0x79, 0x4f, 0xfc, 0x1f,
0xf5, 0x11, 0xa2, 0x95, 0x85, 0x61, 0xe4, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE add_zone_xpm[1] = {{ png, sizeof( png ), "add_zone_xpm" }};
+95
View File
@@ -0,0 +1,95 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0xd9, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x7f, 0x6c, 0x53,
0x55, 0x14, 0xc7, 0xbf, 0xef, 0x47, 0xfb, 0x5e, 0xdb, 0xad, 0xdb, 0xba, 0x75, 0x1d, 0xb0, 0x4e,
0xd8, 0x90, 0x6d, 0x20, 0x22, 0x24, 0x6a, 0x20, 0x81, 0x48, 0x86, 0xa8, 0x51, 0xb3, 0x04, 0x21,
0xfe, 0xc2, 0x84, 0xc5, 0x3f, 0xd4, 0x18, 0x8d, 0x21, 0xd1, 0x68, 0x62, 0x22, 0x09, 0x89, 0x21,
0x18, 0x94, 0x18, 0x31, 0xf1, 0x2f, 0x71, 0x89, 0x9a, 0x18, 0x83, 0x81, 0x04, 0x54, 0x02, 0xba,
0xc0, 0x94, 0x00, 0x93, 0x0d, 0x68, 0xe7, 0x7e, 0x65, 0x8e, 0x76, 0x2b, 0x8c, 0xb1, 0xad, 0xdd,
0xd6, 0xf6, 0xf5, 0xfd, 0xf4, 0xdc, 0x36, 0x65, 0xab, 0x1b, 0x5b, 0x63, 0x08, 0x2f, 0x39, 0xbd,
0xbf, 0x9a, 0xf3, 0xb9, 0xe7, 0x9e, 0x73, 0xcf, 0xb9, 0x1c, 0xee, 0xd1, 0xc7, 0xe5, 0xf3, 0xa7,
0x3d, 0x7b, 0x2c, 0x1e, 0x8e, 0xf6, 0x8a, 0x29, 0x23, 0xe5, 0xd7, 0x14, 0xb3, 0x72, 0x62, 0x42,
0x5b, 0x91, 0x50, 0xf5, 0x3a, 0x4d, 0x37, 0xfc, 0x86, 0xce, 0x69, 0x4a, 0xd2, 0xdc, 0xfd, 0xeb,
0xf7, 0x4f, 0x06, 0xf3, 0x02, 0xfd, 0xd1, 0x36, 0xbc, 0x35, 0x1a, 0x53, 0x7c, 0xa1, 0xeb, 0xf1,
0x45, 0xc3, 0x37, 0xe3, 0x75, 0xd1, 0x09, 0x7d, 0x99, 0xaa, 0x6a, 0x55, 0xa2, 0x20, 0xfa, 0x64,
0x59, 0x70, 0x88, 0x22, 0xcf, 0xdb, 0x45, 0x0e, 0xbc, 0x20, 0x40, 0x14, 0x2c, 0x98, 0x16, 0x07,
0xd3, 0x34, 0xa1, 0xa4, 0x4c, 0x74, 0x76, 0x8d, 0x8d, 0x46, 0xff, 0x89, 0x54, 0xb6, 0xb4, 0x34,
0x29, 0xf3, 0x82, 0x7e, 0xf8, 0xb6, 0xe7, 0xa1, 0x1b, 0x53, 0xda, 0x25, 0x95, 0xd3, 0x39, 0xff,
0xa2, 0x02, 0x08, 0x3c, 0x07, 0x8e, 0x56, 0x74, 0xdd, 0x82, 0xaa, 0x99, 0xd0, 0x34, 0x23, 0xdd,
0x66, 0xfa, 0xac, 0xcd, 0x1d, 0x4f, 0xc5, 0x55, 0xb4, 0x5d, 0x1e, 0xf9, 0xec, 0xc2, 0xf1, 0x6d,
0xbb, 0xe7, 0x05, 0x7d, 0xb8, 0xb7, 0xed, 0xf7, 0x2d, 0x5b, 0x96, 0x3c, 0x76, 0xaa, 0x75, 0x10,
0x0f, 0xaf, 0xf1, 0xe6, 0x2a, 0x54, 0xb3, 0xfd, 0xcc, 0x78, 0xba, 0x9f, 0xbb, 0x81, 0x5b, 0x63,
0x8a, 0xd5, 0xde, 0x31, 0x5a, 0xd7, 0x7f, 0xe1, 0x85, 0x9e, 0x39, 0x41, 0x47, 0x9a, 0xfb, 0xca,
0xaf, 0x4d, 0x26, 0x03, 0x64, 0x83, 0x57, 0x72, 0xf3, 0x64, 0x0d, 0xb9, 0x43, 0xe6, 0x6f, 0x2b,
0x48, 0x2b, 0x54, 0xe7, 0xb6, 0x68, 0xe6, 0x06, 0x92, 0x8a, 0x81, 0xde, 0x81, 0x58, 0xb0, 0xe3,
0x97, 0x6d, 0xab, 0x49, 0xad, 0x35, 0x0b, 0x74, 0xe0, 0xe0, 0xd5, 0x1f, 0x57, 0xd4, 0xb9, 0x9f,
0xeb, 0xea, 0x8b, 0xa1, 0xa8, 0xc0, 0x8e, 0xcb, 0xbd, 0x23, 0x58, 0x53, 0x5f, 0x0a, 0x35, 0x7d,
0x6c, 0xd3, 0x16, 0xa4, 0x08, 0x96, 0x4c, 0x1a, 0xe9, 0x96, 0xcd, 0xeb, 0x86, 0x05, 0x9d, 0xad,
0xe9, 0xb4, 0x96, 0xca, 0xcc, 0xb3, 0x4d, 0x9e, 0xbd, 0x18, 0x69, 0x8a, 0x06, 0x9b, 0x0e, 0xcf,
0x02, 0x7d, 0xf5, 0xcd, 0xdf, 0x01, 0x25, 0x69, 0xac, 0xf2, 0x79, 0x65, 0x5c, 0x1b, 0x8a, 0xa3,
0xd0, 0x2d, 0x62, 0x70, 0x38, 0x8e, 0x92, 0x22, 0x29, 0xc7, 0x02, 0x25, 0x95, 0x39, 0xc6, 0xb9,
0xac, 0xc9, 0xf6, 0x19, 0x3c, 0x9e, 0xd0, 0x13, 0x17, 0x03, 0xe3, 0x4b, 0x30, 0xd0, 0x14, 0xcd,
0x01, 0x1d, 0xfe, 0xa9, 0xb7, 0x46, 0x04, 0x7a, 0xfa, 0x7b, 0x26, 0xf9, 0x9a, 0xe5, 0x85, 0xe8,
0xea, 0x8d, 0xe1, 0x66, 0x34, 0x81, 0xc5, 0x3e, 0x17, 0x34, 0x7d, 0x5a, 0xe1, 0x9d, 0x8e, 0x2c,
0xd7, 0x67, 0x26, 0x1c, 0x0e, 0x01, 0x5d, 0xdd, 0xd1, 0xef, 0x22, 0xed, 0x3b, 0x5f, 0x9e, 0x15,
0x0c, 0x5f, 0x36, 0x07, 0x8f, 0x09, 0x16, 0xff, 0x6c, 0x78, 0x28, 0x81, 0x2a, 0xbf, 0x13, 0x43,
0x91, 0x38, 0x06, 0x6e, 0x4c, 0xc1, 0xeb, 0x91, 0x33, 0x0a, 0x74, 0x03, 0x86, 0x61, 0x2d, 0x08,
0xc9, 0xce, 0x79, 0x4b, 0x9d, 0x38, 0x7d, 0xf6, 0xfa, 0x06, 0x0c, 0xbd, 0x7a, 0x2e, 0x07, 0xf4,
0xf9, 0x89, 0x5e, 0x49, 0x0f, 0x27, 0xc7, 0xa7, 0x62, 0xba, 0x83, 0x59, 0x21, 0xb9, 0x04, 0x84,
0x22, 0x93, 0xa0, 0x28, 0x87, 0x61, 0x52, 0x98, 0xd3, 0x8f, 0x45, 0xee, 0xcd, 0x07, 0xc2, 0xc6,
0x82, 0xc0, 0x93, 0x56, 0x33, 0x1c, 0x3c, 0xdd, 0x59, 0x4d, 0xd7, 0x5d, 0xcf, 0xb9, 0xb0, 0x7b,
0x0f, 0xfe, 0xf5, 0xae, 0x2c, 0x89, 0xfb, 0x23, 0x83, 0x09, 0x94, 0xf9, 0x64, 0x8a, 0x22, 0x1d,
0x57, 0xba, 0xc7, 0xe0, 0x76, 0xd9, 0x08, 0x66, 0x11, 0x94, 0xcb, 0x0b, 0x92, 0x8d, 0xd2, 0xfb,
0xfc, 0x85, 0x08, 0x76, 0x8f, 0x7e, 0x30, 0x1e, 0x6c, 0xda, 0xf7, 0xdf, 0x14, 0x64, 0x7f, 0xff,
0xe3, 0xf3, 0x61, 0xc9, 0x2e, 0x96, 0xd3, 0xfe, 0xd3, 0x91, 0x34, 0x3c, 0x12, 0xc7, 0x64, 0x5c,
0xa7, 0x2c, 0x00, 0xd8, 0x44, 0x7e, 0x61, 0x88, 0x3a, 0x7d, 0xb7, 0xd8, 0x51, 0xd7, 0xd5, 0x14,
0xeb, 0xad, 0x6d, 0x43, 0x4b, 0x31, 0xf8, 0xc6, 0x50, 0x16, 0x64, 0x23, 0x71, 0x35, 0xbe, 0xf8,
0xe9, 0xc6, 0x65, 0xb5, 0xeb, 0x8f, 0xda, 0x6d, 0x3c, 0xc7, 0xc2, 0x95, 0x49, 0x77, 0xff, 0x04,
0x68, 0x0c, 0x59, 0xe2, 0xf3, 0x86, 0x64, 0xd7, 0x99, 0x8f, 0x29, 0x75, 0x9d, 0xea, 0x6d, 0x7d,
0xfe, 0xf1, 0x2c, 0x48, 0x26, 0x29, 0x64, 0xb0, 0x57, 0xde, 0x3e, 0x79, 0xbc, 0xc8, 0xed, 0x5a,
0xa9, 0xeb, 0x99, 0xbb, 0x13, 0x9b, 0xd4, 0x30, 0x16, 0x55, 0xe8, 0x12, 0x8b, 0xe9, 0x28, 0x9c,
0xef, 0xb8, 0xe6, 0xba, 0xd4, 0x9b, 0x1e, 0x5d, 0x84, 0xf3, 0x97, 0xae, 0x37, 0x72, 0x33, 0x82,
0xa2, 0x8c, 0xa4, 0xd8, 0x53, 0x5e, 0xe7, 0xdd, 0xba, 0xfd, 0x8b, 0x33, 0xb2, 0x2c, 0x0a, 0x99,
0x8b, 0x68, 0x22, 0x1c, 0x99, 0x42, 0x49, 0xb1, 0x3d, 0x9d, 0x40, 0xf3, 0xb1, 0x24, 0x0b, 0x61,
0x1f, 0xdb, 0xe0, 0xea, 0xda, 0xe2, 0xb1, 0x99, 0x3e, 0x12, 0x48, 0xaa, 0x19, 0xac, 0x61, 0xfb,
0xd7, 0x1f, 0x15, 0x7b, 0x2a, 0x9f, 0xb6, 0x28, 0xd4, 0x18, 0x28, 0x41, 0x81, 0x31, 0x11, 0x53,
0x21, 0xc9, 0x42, 0xda, 0xca, 0x7c, 0x20, 0xcc, 0xa7, 0xa5, 0x25, 0x12, 0xca, 0x4a, 0x1d, 0x58,
0xba, 0xa4, 0x70, 0x56, 0x3d, 0x92, 0x48, 0x1e, 0x64, 0xb0, 0xcd, 0x3b, 0x8e, 0x1d, 0x93, 0x1d,
0x36, 0x39, 0x9d, 0x0d, 0x48, 0xf9, 0xc8, 0xa8, 0x02, 0x2f, 0x65, 0x8f, 0x18, 0x01, 0x67, 0x1e,
0x97, 0x46, 0x4e, 0x97, 0xed, 0x02, 0x0a, 0x9c, 0x22, 0x9c, 0x0e, 0x91, 0xc2, 0x88, 0x23, 0xbf,
0x58, 0x70, 0x4a, 0x06, 0xfc, 0xe5, 0x6a, 0x74, 0xdd, 0xfd, 0xe3, 0x72, 0x91, 0x4b, 0x39, 0x32,
0x57, 0xe1, 0x63, 0xbe, 0x5a, 0x5f, 0xbd, 0xee, 0xad, 0xa7, 0x2a, 0xaa, 0xb6, 0xbc, 0xc3, 0xc2,
0x3a, 0x1b, 0x18, 0xe3, 0xd1, 0x54, 0x3a, 0x6c, 0xd9, 0xce, 0x59, 0x2d, 0x32, 0x0c, 0x03, 0x92,
0x4d, 0x85, 0xd7, 0x9d, 0xc0, 0xaa, 0x9a, 0x24, 0x36, 0xae, 0x05, 0xea, 0x97, 0x4b, 0x94, 0x33,
0x1d, 0x60, 0x75, 0x46, 0x57, 0x86, 0xa1, 0xc6, 0x43, 0xba, 0xd3, 0x5a, 0x5c, 0x76, 0xa7, 0x0a,
0xeb, 0x25, 0x69, 0x58, 0xb9, 0xb9, 0xf9, 0x90, 0xd3, 0x51, 0xe8, 0x61, 0xc7, 0xc1, 0x40, 0x4f,
0xac, 0x07, 0x7c, 0xf2, 0x79, 0xd4, 0x54, 0x6a, 0x58, 0x59, 0xad, 0xc3, 0x53, 0x6c, 0xa3, 0x42,
0xe8, 0x48, 0x0b, 0x27, 0xc8, 0xb7, 0x5b, 0x2a, 0x8f, 0x94, 0x70, 0xa3, 0xd0, 0x12, 0x61, 0x74,
0x74, 0x19, 0xea, 0x33, 0x2f, 0x1d, 0x72, 0xcc, 0x57, 0xca, 0xab, 0x0a, 0x3c, 0x6b, 0x77, 0x95,
0xd7, 0xbf, 0xb7, 0x47, 0xa4, 0x4a, 0x58, 0x5e, 0x2a, 0x60, 0xdb, 0x86, 0x20, 0x49, 0xe0, 0xb6,
0xd2, 0x99, 0x00, 0x66, 0x81, 0x65, 0xa4, 0x60, 0x1a, 0xc9, 0xb4, 0xa4, 0x34, 0x89, 0x72, 0xa6,
0x13, 0x6f, 0x7e, 0xe2, 0xbf, 0xd5, 0xfe, 0x5b, 0x59, 0xc5, 0x42, 0x6f, 0x86, 0xd5, 0xde, 0x55,
0x07, 0x8e, 0xda, 0xe5, 0x8a, 0x65, 0x8f, 0x3c, 0xa0, 0x60, 0xdf, 0xae, 0xa3, 0x90, 0x24, 0x09,
0x1c, 0xcf, 0x20, 0x04, 0x10, 0x0b, 0x30, 0xa1, 0xb8, 0xa0, 0x28, 0x3c, 0x22, 0xb7, 0x04, 0x2a,
0x31, 0x32, 0xce, 0x5d, 0x95, 0x53, 0x2d, 0x17, 0xe5, 0xc0, 0x64, 0xd2, 0xba, 0x42, 0xe9, 0xa4,
0x93, 0x52, 0xd1, 0x05, 0x84, 0x5f, 0x3f, 0xb3, 0xf0, 0xe3, 0x44, 0x2c, 0x6d, 0x70, 0xd7, 0xec,
0x3f, 0xd9, 0xb8, 0x69, 0x84, 0xdf, 0xb1, 0x31, 0x88, 0xbe, 0x48, 0x09, 0xba, 0x42, 0x1e, 0x0c,
0x8e, 0x38, 0xad, 0x40, 0x1f, 0x37, 0x1c, 0xba, 0x81, 0x0e, 0xf0, 0xee, 0xb3, 0xa4, 0x94, 0x4c,
0x15, 0x03, 0x08, 0x85, 0x06, 0x28, 0xbf, 0x99, 0xff, 0xeb, 0x15, 0x24, 0x57, 0xbc, 0xb6, 0xcf,
0x92, 0x6a, 0x77, 0xa6, 0xe2, 0xe1, 0x0e, 0x58, 0xea, 0x9f, 0x90, 0x7c, 0x3f, 0x23, 0x62, 0x5e,
0xcd, 0x26, 0xcc, 0xbb, 0xf6, 0xdc, 0xba, 0x67, 0xef, 0xba, 0xbb, 0xf1, 0xfd, 0x0b, 0x51, 0x82,
0xd2, 0x46, 0x06, 0xab, 0x0f, 0xee, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE book_xpm[1] = {{ png, sizeof( png ), "book_xpm" }};
//EOF
@@ -1,87 +0,0 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0x58, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x6b, 0x48, 0xa4,
0x55, 0x18, 0xc7, 0x4f, 0x52, 0xb1, 0x49, 0xd4, 0xba, 0x50, 0x51, 0x81, 0x0b, 0xed, 0x87, 0xed,
0x02, 0xa2, 0x89, 0x8a, 0xe6, 0xad, 0x56, 0x51, 0x51, 0xd1, 0xe6, 0x83, 0x09, 0x86, 0xa0, 0x48,
0xa9, 0x69, 0x48, 0x5e, 0xc2, 0xdb, 0xec, 0x5c, 0xb6, 0x12, 0x9c, 0x34, 0x42, 0x74, 0x57, 0x45,
0x68, 0x26, 0xbf, 0x2c, 0x53, 0xe8, 0x8a, 0x69, 0xea, 0x07, 0xef, 0x97, 0x41, 0x4a, 0x44, 0x2b,
0x16, 0x46, 0x28, 0x5d, 0xc6, 0x51, 0xca, 0x0f, 0x66, 0x9a, 0x33, 0xce, 0xd3, 0xff, 0x39, 0x3b,
0xef, 0xf0, 0x2a, 0xe6, 0x8e, 0xd1, 0x1e, 0xf8, 0x31, 0x73, 0xce, 0x9c, 0xf7, 0xf9, 0x9f, 0xf3,
0x3c, 0xff, 0x73, 0xde, 0x11, 0xe2, 0xd4, 0xb6, 0xf8, 0xb4, 0x10, 0xf3, 0xcb, 0x42, 0x2c, 0x7c,
0x7e, 0x6c, 0xd8, 0x28, 0xde, 0x12, 0x06, 0xf1, 0xde, 0xb9, 0xb9, 0x21, 0xde, 0x3e, 0x5d, 0x47,
0xcc, 0x87, 0x03, 0x02, 0xbf, 0xf8, 0x86, 0x0c, 0xe2, 0x5d, 0x08, 0xdd, 0xc3, 0x43, 0xb7, 0xce,
0x8d, 0x41, 0x34, 0xfb, 0x27, 0x74, 0x43, 0xbc, 0x23, 0x45, 0x0c, 0xe2, 0x35, 0xf1, 0xff, 0x36,
0x95, 0xd0, 0xc3, 0x13, 0x51, 0x09, 0x5d, 0x18, 0xbb, 0xf7, 0x10, 0x45, 0x54, 0x42, 0x97, 0xac,
0x2e, 0x08, 0xbd, 0xe2, 0x1b, 0xd6, 0x89, 0x40, 0xf0, 0xd2, 0x7f, 0xe0, 0x85, 0xb3, 0x85, 0x02,
0xa6, 0xec, 0xbe, 0xa1, 0xcf, 0x44, 0x10, 0x44, 0x17, 0xc1, 0xaf, 0x48, 0xa7, 0xfd, 0x5c, 0x18,
0xc5, 0x5d, 0x25, 0x4c, 0x1d, 0x78, 0x11, 0x58, 0xc0, 0x6d, 0x21, 0xcc, 0xb1, 0xc7, 0xcc, 0xa0,
0x13, 0x17, 0x31, 0xd9, 0x86, 0x14, 0xfa, 0xec, 0x4e, 0x44, 0x17, 0xc0, 0x07, 0x40, 0x07, 0xc2,
0xfc, 0xc9, 0x13, 0x56, 0x2f, 0x66, 0x41, 0x21, 0xb8, 0x03, 0x3a, 0x84, 0x08, 0xd3, 0xfb, 0x84,
0x4e, 0x11, 0xf1, 0x0a, 0xfd, 0xb4, 0xb2, 0xb2, 0x42, 0x63, 0x63, 0x63, 0x74, 0x78, 0x78, 0xe8,
0x41, 0xff, 0xe5, 0x07, 0x09, 0x25, 0x82, 0x56, 0x60, 0x05, 0x1a, 0x50, 0x21, 0xc4, 0xab, 0xcd,
0x52, 0xe8, 0x91, 0xd9, 0xbb, 0x8a, 0x08, 0x02, 0xbd, 0x0f, 0x4c, 0xe0, 0x71, 0xaf, 0xd0, 0x51,
0x6c, 0x6c, 0x2c, 0x65, 0x67, 0x67, 0xd3, 0xd0, 0xd0, 0x10, 0xba, 0xd4, 0xec, 0x1d, 0xd7, 0x80,
0x9b, 0xe0, 0xe2, 0x49, 0xa1, 0x40, 0x2e, 0x0a, 0xb0, 0x01, 0x2e, 0xbc, 0x43, 0x88, 0xaa, 0x4c,
0x29, 0x14, 0xf4, 0xed, 0x3e, 0x1f, 0x36, 0x3c, 0x74, 0x6b, 0x6b, 0x6b, 0x8b, 0xe6, 0xe6, 0xe6,
0x38, 0xe0, 0x9f, 0xe0, 0x9b, 0xed, 0xed, 0x6d, 0xd2, 0x68, 0x34, 0x64, 0x36, 0x9b, 0x49, 0xab,
0xd5, 0xf2, 0xf8, 0x26, 0x98, 0xdf, 0xd9, 0xd9, 0xa1, 0xc9, 0xc9, 0x49, 0xee, 0xff, 0x0e, 0x2e,
0xa9, 0x85, 0x1e, 0x05, 0x01, 0xde, 0xef, 0x8f, 0x81, 0x27, 0x7c, 0x66, 0x08, 0xfc, 0xde, 0x89,
0xc9, 0x97, 0xf7, 0xf7, 0xf7, 0x29, 0x2e, 0x2e, 0x8e, 0x72, 0x73, 0x73, 0xa9, 0xb8, 0xb8, 0x98,
0x26, 0x26, 0x26, 0x28, 0x2b, 0x2b, 0x8b, 0x0c, 0x06, 0x03, 0x4d, 0x4d, 0x4d, 0x51, 0x68, 0x68,
0x28, 0x75, 0x74, 0x74, 0x90, 0xd5, 0x6a, 0xa5, 0xf8, 0xf8, 0x78, 0x4a, 0x4d, 0x4d, 0xa5, 0xc1,
0xc1, 0x41, 0x16, 0x1b, 0x50, 0x0b, 0x45, 0x83, 0x3f, 0x78, 0xd7, 0xc0, 0x03, 0x56, 0x84, 0xd0,
0xa7, 0x28, 0x35, 0xc2, 0xe4, 0x27, 0x3d, 0x1e, 0x8f, 0x3b, 0x3d, 0x3d, 0x5d, 0x3e, 0xdc, 0xd5,
0xd5, 0x45, 0x45, 0x45, 0x45, 0xd4, 0xd7, 0xd7, 0x27, 0x45, 0x98, 0xf1, 0xf1, 0x71, 0xd2, 0xeb,
0xf5, 0x54, 0x51, 0x51, 0x21, 0x77, 0xcd, 0x8b, 0x58, 0x5e, 0x5e, 0x66, 0x21, 0xd3, 0x59, 0x35,
0xd3, 0x0a, 0x11, 0xf2, 0x89, 0xda, 0x75, 0x78, 0xe0, 0xd3, 0xb5, 0xb5, 0x35, 0xb9, 0xd2, 0xd9,
0xd9, 0x59, 0x19, 0x7c, 0x66, 0x66, 0x46, 0x7e, 0x57, 0x98, 0x9e, 0x9e, 0x96, 0x63, 0x2d, 0x2d,
0x2d, 0xd4, 0xd0, 0xd0, 0xc0, 0x22, 0xdb, 0x27, 0x03, 0x73, 0xea, 0x82, 0xbc, 0x3c, 0x0f, 0x6e,
0xc2, 0x88, 0x5a, 0xd5, 0x8e, 0xae, 0x01, 0x8b, 0xd3, 0xe9, 0x94, 0x42, 0x2c, 0xc2, 0x81, 0xb9,
0x36, 0x19, 0x19, 0x19, 0x72, 0xac, 0xba, 0xba, 0x5a, 0x8a, 0xb0, 0x98, 0xc9, 0x64, 0xa2, 0xa6,
0xa6, 0x26, 0x16, 0x72, 0x80, 0x62, 0xb5, 0x29, 0xa2, 0xc0, 0x96, 0x37, 0x7d, 0xbf, 0x81, 0xef,
0x84, 0xe8, 0x8e, 0x67, 0xa1, 0x2b, 0x57, 0x7e, 0x3c, 0x74, 0x38, 0x1c, 0xd4, 0xdf, 0xdf, 0x4f,
0x39, 0x39, 0x39, 0x32, 0x08, 0x07, 0xe4, 0xb4, 0xa5, 0xa4, 0xa4, 0x10, 0x17, 0x1e, 0xcd, 0xd3,
0xd6, 0xd6, 0x46, 0x65, 0x65, 0x65, 0x72, 0x01, 0x6c, 0x84, 0xa8, 0xa8, 0x28, 0xea, 0xec, 0xec,
0xa4, 0xa5, 0xa5, 0x25, 0x3a, 0x3a, 0x3a, 0x62, 0xeb, 0xbf, 0x79, 0x72, 0x77, 0xcf, 0x80, 0x60,
0xc5, 0x0c, 0x57, 0xaf, 0x2e, 0x51, 0x48, 0x48, 0x08, 0xe9, 0x74, 0x3a, 0xea, 0xed, 0xed, 0x95,
0x22, 0x4c, 0x55, 0x55, 0x95, 0xac, 0x0b, 0xda, 0x17, 0xe0, 0x59, 0xe0, 0x4e, 0x4b, 0x4b, 0x93,
0xf5, 0xe1, 0x1d, 0xb3, 0xdd, 0x39, 0x85, 0x5c, 0x2b, 0x8b, 0xc5, 0xc2, 0xf3, 0xbe, 0xe2, 0xe0,
0x4f, 0x01, 0xbe, 0x22, 0x86, 0x01, 0xd7, 0xc4, 0x29, 0x44, 0xa9, 0x46, 0x11, 0x8a, 0x88, 0x88,
0xa0, 0xfc, 0xfc, 0x7c, 0x32, 0x1a, 0x8d, 0x32, 0x38, 0x0b, 0xd5, 0xd5, 0xd5, 0xd1, 0xc0, 0xc0,
0x00, 0x07, 0x18, 0x01, 0x59, 0xbc, 0xea, 0xe4, 0xe4, 0x64, 0x9f, 0x50, 0x4f, 0x4f, 0x0f, 0x95,
0x97, 0x97, 0x53, 0x4c, 0x4c, 0x8c, 0xcc, 0x06, 0x5a, 0x17, 0x0b, 0xc5, 0x81, 0x2f, 0xef, 0x9b,
0x00, 0x6f, 0x43, 0x1c, 0x22, 0x64, 0xb3, 0x96, 0x85, 0x82, 0x83, 0x7f, 0xd8, 0xe3, 0x59, 0x76,
0xbb, 0x9d, 0x6a, 0x6b, 0x6b, 0xa5, 0xb3, 0xb8, 0x0e, 0xa3, 0xa3, 0xa3, 0xd2, 0xee, 0x9c, 0xaa,
0xf5, 0xf5, 0x75, 0x69, 0x79, 0x5e, 0x08, 0xf7, 0x79, 0x31, 0xca, 0x6f, 0x7c, 0x2c, 0xd0, 0x76,
0x95, 0x5b, 0xe3, 0x9a, 0x57, 0x48, 0x07, 0x3e, 0x04, 0xd7, 0x85, 0x88, 0x68, 0x54, 0x99, 0x81,
0xef, 0xb4, 0xd2, 0xdd, 0xdd, 0x5d, 0x79, 0x46, 0x14, 0xc7, 0x0d, 0x0f, 0x0f, 0x53, 0x49, 0x49,
0x09, 0xe5, 0xe5, 0xe5, 0x51, 0x7b, 0x7b, 0xbb, 0xcf, 0x79, 0x8d, 0x8d, 0x8d, 0xb2, 0x3e, 0x7c,
0x45, 0xf1, 0x19, 0x54, 0xd7, 0xe5, 0x0d, 0x60, 0x3f, 0x4e, 0xc2, 0x47, 0x27, 0xec, 0x7d, 0x7b,
0x61, 0x61, 0x41, 0x1a, 0x42, 0x49, 0x8f, 0xda, 0xde, 0x8a, 0xe3, 0xf8, 0x93, 0xd3, 0x56, 0x50,
0x50, 0xc0, 0x42, 0x7f, 0x81, 0x40, 0xbf, 0xdf, 0xb0, 0x5c, 0x6c, 0x97, 0xcb, 0xe5, 0x49, 0x4c,
0x4c, 0x94, 0x37, 0x42, 0x7d, 0x7d, 0x3d, 0x25, 0x25, 0x25, 0x51, 0x6b, 0x6b, 0xab, 0x74, 0x18,
0x0b, 0xf0, 0x8d, 0xc0, 0xc1, 0xf9, 0xde, 0x1b, 0x19, 0x19, 0xa1, 0xc2, 0xc2, 0x42, 0x79, 0xd9,
0xa2, 0x7d, 0x7d, 0x6e, 0x21, 0x76, 0x50, 0x42, 0x42, 0x02, 0xb1, 0x95, 0xf9, 0xde, 0xab, 0xa9,
0xa9, 0xa1, 0xca, 0xca, 0x4a, 0x59, 0x93, 0xf0, 0xf0, 0x70, 0xb9, 0xb3, 0xd5, 0xd5, 0x55, 0x62,
0x53, 0x44, 0x47, 0x47, 0x93, 0xcd, 0x66, 0x63, 0x21, 0xb3, 0xff, 0xff, 0x19, 0xee, 0xa7, 0xae,
0xf4, 0xe0, 0xe0, 0xc0, 0xb3, 0xb9, 0xb9, 0x29, 0xbd, 0x01, 0x2a, 0xb9, 0x66, 0x99, 0x99, 0x99,
0xd4, 0xdd, 0xdd, 0xad, 0x1c, 0xd0, 0x55, 0xbe, 0xb5, 0xdd, 0x6e, 0xb7, 0x67, 0x63, 0x63, 0x43,
0xe9, 0x07, 0x3c, 0x40, 0x68, 0xee, 0x75, 0xaf, 0xd0, 0xcf, 0xaa, 0xf7, 0x4f, 0x18, 0xc8, 0x56,
0xf5, 0x5d, 0xec, 0xae, 0xc8, 0xc8, 0x48, 0x59, 0x33, 0xb4, 0xeb, 0xde, 0xf1, 0xcb, 0xa0, 0xc0,
0xcf, 0xff, 0x0c, 0x8b, 0x28, 0xe2, 0xfc, 0x20, 0x04, 0x3f, 0xfe, 0xb7, 0x19, 0x08, 0x36, 0xba,
0xb7, 0xb7, 0x47, 0x7c, 0x73, 0xa0, 0xfd, 0x0d, 0x9e, 0x3b, 0x2b, 0xe2, 0x3f, 0x64, 0x1d, 0xf5,
0x90, 0x43, 0x37, 0x56, 0xad, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
0x82,
};
const BITMAP_OPAQUE bus_definition_tool_xpm[1] = {{ png, sizeof( png ), "bus_definition_tool_xpm" }};
//EOF
-45
View File
@@ -1,45 +0,0 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0x00, 0x00, 0x00, 0x03, 0x43, 0x84,
0x45, 0x00, 0x00, 0x01, 0xc7, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x95, 0x94, 0xbb, 0x4f, 0xc2,
0x50, 0x14, 0xc6, 0xbf, 0x2a, 0x21, 0x91, 0xd5, 0x8d, 0x38, 0x34, 0xba, 0xa1, 0xb8, 0xd0, 0xc1,
0x41, 0x01, 0x11, 0x16, 0xf1, 0x1f, 0x70, 0x70, 0xd1, 0x89, 0x38, 0xaa, 0x69, 0xe2, 0xa4, 0x4e,
0x1a, 0x07, 0x56, 0xcb, 0x66, 0x34, 0xf2, 0x1a, 0x1c, 0xd4, 0xc1, 0x18, 0x12, 0x17, 0x9c, 0x40,
0x37, 0x95, 0x89, 0xc6, 0xc4, 0x26, 0xb2, 0xc0, 0x40, 0x4c, 0x0c, 0x31, 0xf5, 0xf6, 0x45, 0xef,
0x6d, 0x0b, 0xea, 0x39, 0xcb, 0xbd, 0x3d, 0xfd, 0xf5, 0x9e, 0x47, 0xbf, 0x0b, 0xfc, 0xd3, 0x4e,
0x42, 0xf4, 0x6e, 0x04, 0xdc, 0xd0, 0xb7, 0xf5, 0xb8, 0x94, 0x95, 0x54, 0x29, 0xac, 0xef, 0x83,
0x81, 0x48, 0x29, 0x29, 0x27, 0xe5, 0x48, 0x31, 0x18, 0x20, 0x5b, 0x1e, 0xeb, 0xc8, 0xe1, 0x8a,
0x78, 0x8e, 0xac, 0x78, 0x3b, 0x2e, 0x36, 0x08, 0x92, 0x35, 0x3f, 0x12, 0x29, 0x96, 0x7b, 0x8a,
0xaa, 0xa8, 0xe5, 0xde, 0x74, 0x0d, 0x55, 0xb4, 0x70, 0x86, 0x0c, 0x56, 0x88, 0x67, 0xc8, 0xaa,
0x85, 0x6a, 0xa8, 0xae, 0xc5, 0x2b, 0xaa, 0xa4, 0x8a, 0xaf, 0xd6, 0xc1, 0xdc, 0x92, 0xac, 0x21,
0x9a, 0x2f, 0x74, 0x91, 0x86, 0x8f, 0x49, 0xcb, 0x87, 0x74, 0xb4, 0x6b, 0x20, 0x77, 0x6a, 0xa2,
0x69, 0x15, 0xc1, 0x25, 0xfa, 0xd0, 0xe2, 0x9b, 0x47, 0x65, 0x24, 0xae, 0x21, 0x47, 0x24, 0x6e,
0x43, 0x10, 0x0a, 0x25, 0x3d, 0xbd, 0xc2, 0xf7, 0xd4, 0x17, 0x44, 0x8c, 0x3a, 0xa9, 0x9d, 0x67,
0x0d, 0xd9, 0x52, 0x4b, 0x3d, 0xe1, 0xa2, 0xff, 0x30, 0x18, 0x08, 0xd5, 0x63, 0xdd, 0x54, 0x53,
0xc8, 0xfb, 0x67, 0x70, 0x8b, 0x27, 0xcc, 0xd1, 0x48, 0xee, 0x90, 0xd4, 0xd2, 0xe0, 0xdb, 0x7c,
0x5b, 0xc8, 0x4f, 0x8c, 0xd1, 0x91, 0x07, 0x2c, 0x9b, 0x07, 0x73, 0x58, 0x83, 0x82, 0x63, 0xf8,
0x6d, 0x44, 0xef, 0xd8, 0x1e, 0x71, 0xc6, 0x78, 0x7c, 0x30, 0xe5, 0x8f, 0xe3, 0x12, 0x35, 0x4c,
0x52, 0x88, 0x07, 0xb4, 0x81, 0x73, 0x57, 0xf9, 0x9b, 0x78, 0x3f, 0x38, 0xa5, 0xe6, 0xe2, 0x82,
0x24, 0x32, 0x11, 0x97, 0xed, 0x96, 0x29, 0xc4, 0x03, 0xba, 0x21, 0xd3, 0x71, 0x18, 0x95, 0xd8,
0x00, 0xe8, 0x9a, 0x4c, 0xdf, 0x85, 0xac, 0x7e, 0x22, 0x3e, 0x0c, 0x72, 0xa4, 0x67, 0x9e, 0x32,
0x4f, 0xda, 0x93, 0x18, 0x0c, 0x31, 0x8d, 0xa0, 0x12, 0xa3, 0xb1, 0x61, 0x2d, 0x77, 0xd4, 0x62,
0x63, 0x2e, 0xa8, 0x3f, 0x5c, 0x57, 0xf9, 0x36, 0xb6, 0xef, 0x80, 0xc8, 0x6f, 0xf4, 0x18, 0xeb,
0x26, 0xe5, 0xed, 0x17, 0x17, 0xa2, 0x63, 0x5c, 0x2b, 0x7c, 0x1f, 0xef, 0xc4, 0x3b, 0xa6, 0xde,
0x68, 0x3d, 0xb1, 0x7a, 0xa1, 0x6d, 0xb6, 0x52, 0x50, 0x0d, 0xbd, 0x09, 0x79, 0x46, 0x4f, 0x86,
0x5e, 0xa2, 0x6d, 0x3d, 0x77, 0x87, 0xc7, 0xda, 0x96, 0x74, 0x18, 0x3d, 0x19, 0x88, 0x32, 0x00,
0x8a, 0x7a, 0x40, 0xba, 0x5e, 0x34, 0x84, 0xd1, 0x0b, 0x65, 0x96, 0xde, 0xa8, 0xb8, 0x76, 0xc3,
0x88, 0x8d, 0x54, 0x53, 0xd3, 0x13, 0xab, 0x17, 0xbb, 0x51, 0x42, 0x81, 0x89, 0x4b, 0x61, 0xb3,
0x63, 0xdc, 0x2f, 0x57, 0x18, 0x1b, 0x67, 0xaf, 0xbf, 0xbf, 0xd8, 0x0f, 0x3c, 0x1e, 0x28, 0x8f,
0xaa, 0xd6, 0xe8, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE curved_ratsnest_xpm[1] = {{ png, sizeof( png ), "curved_ratsnest_xpm" }};
//EOF
+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_png/bitmaps_list.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, 0x75, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0xbf, 0x4b, 0xc3,
0x40, 0x14, 0x80, 0x2f, 0xbd, 0xa4, 0x22, 0x38, 0x14, 0x1d, 0x3a, 0x28, 0x8a, 0x20, 0x3a, 0x3b,
0xf9, 0x0b, 0xc5, 0x7f, 0xc0, 0xa9, 0x28, 0xb8, 0x08, 0x0e, 0xfe, 0xc0, 0x45, 0x14, 0x6c, 0xdd,
0x04, 0x27, 0x1d, 0x1c, 0x1c, 0x9c, 0x1d, 0x5d, 0x04, 0x87, 0x0a, 0x8e, 0x2e, 0x96, 0x82, 0x93,
0x93, 0x8b, 0x60, 0x0b, 0x82, 0x9b, 0x83, 0x83, 0x5a, 0x29, 0xf6, 0xfc, 0x72, 0x3e, 0xdb, 0x0c,
0x1d, 0xef, 0x34, 0xf0, 0x91, 0xdc, 0x05, 0xde, 0x97, 0x97, 0x77, 0xf7, 0x12, 0xa5, 0xfe, 0xeb,
0x30, 0x4a, 0xf5, 0x43, 0x01, 0xf2, 0xb0, 0x2a, 0x2c, 0xc3, 0xbc, 0xd0, 0xeb, 0x4a, 0xd4, 0x05,
0x1f, 0x60, 0x4c, 0x10, 0x18, 0x7b, 0x6e, 0x71, 0x0d, 0x69, 0x97, 0x59, 0x5d, 0x5a, 0x89, 0xd6,
0xc6, 0xa4, 0x52, 0xbf, 0x92, 0x7b, 0xc8, 0xb8, 0x7e, 0x7d, 0x2b, 0x36, 0x78, 0x2c, 0x89, 0x65,
0x5a, 0x37, 0xb8, 0xde, 0xf0, 0x51, 0xa7, 0x2c, 0x7c, 0x89, 0xac, 0xde, 0x94, 0x85, 0xe1, 0x01,
0x73, 0xda, 0xb5, 0xac, 0x04, 0x0d, 0x58, 0x44, 0xb2, 0x04, 0xef, 0x22, 0x8c, 0xeb, 0x94, 0x75,
0x29, 0x8a, 0x57, 0x5d, 0xbe, 0x39, 0x8e, 0xa2, 0x51, 0x24, 0x8f, 0x22, 0x7b, 0x62, 0x3c, 0xee,
0x6c, 0xf5, 0xb5, 0x99, 0xeb, 0x41, 0x72, 0x25, 0xb2, 0x1a, 0xaf, 0x75, 0xd3, 0xe7, 0x3e, 0x4b,
0x51, 0xab, 0x7d, 0x5b, 0xb3, 0x1f, 0xe1, 0x29, 0x73, 0x9d, 0xee, 0x45, 0x61, 0x38, 0x4b, 0xf0,
0x62, 0x42, 0xf4, 0x49, 0x66, 0x5b, 0xee, 0xb2, 0xd0, 0x7a, 0x0e, 0xca, 0x12, 0x3c, 0xe6, 0x15,
0xe9, 0x31, 0xf7, 0xfa, 0xdc, 0x74, 0x09, 0xea, 0x40, 0xd0, 0x6a, 0x42, 0x50, 0x61, 0xae, 0xe0,
0x6c, 0xf3, 0x12, 0xec, 0xc4, 0x3e, 0x75, 0x4b, 0x70, 0x0b, 0x0b, 0x4e, 0xf7, 0x11, 0xc1, 0x86,
0xa1, 0x2e, 0xfd, 0xee, 0x01, 0x41, 0xce, 0xd7, 0xca, 0x1a, 0x80, 0xf3, 0x44, 0x33, 0x3d, 0xf3,
0xfd, 0xc9, 0x98, 0x82, 0x32, 0x4c, 0xc8, 0x78, 0x1d, 0x26, 0x7d, 0x4b, 0x07, 0xa1, 0x26, 0x19,
0x16, 0x61, 0xc8, 0x97, 0x28, 0x0d, 0xdb, 0xf0, 0x22, 0xb2, 0x92, 0xef, 0xcc, 0xba, 0xe1, 0x08,
0x66, 0x64, 0xbc, 0x0b, 0x3b, 0xd0, 0xe1, 0x5b, 0xfa, 0x26, 0x19, 0x56, 0x6c, 0xa7, 0x57, 0x2a,
0xf0, 0x25, 0x1b, 0x83, 0x1b, 0x91, 0xdd, 0xd9, 0x2e, 0xe2, 0x4b, 0x26, 0xc2, 0x1c, 0x4c, 0xcb,
0xf5, 0x1e, 0x5c, 0xc0, 0x88, 0x4f, 0x61, 0x04, 0x55, 0xc9, 0xf0, 0xd9, 0xe9, 0xcf, 0x4c, 0x1b,
0x59, 0x06, 0x0e, 0x61, 0xed, 0xcf, 0xff, 0x17, 0xbf, 0x01, 0x98, 0x8d, 0xef, 0xd2, 0xf8, 0x39,
0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE dashline_xpm[1] = {{ png, sizeof( png ), "dashline_xpm" }};
//EOF
+65
View File
@@ -0,0 +1,65 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0x07, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x95, 0x4b, 0x4c, 0x13,
0x61, 0x10, 0xc7, 0xa1, 0x85, 0x10, 0x81, 0xbe, 0x78, 0x97, 0x57, 0xd3, 0x96, 0x47, 0x36, 0x2d,
0xa1, 0x5c, 0x84, 0xa0, 0x10, 0xb8, 0x20, 0x44, 0x0e, 0x1a, 0x09, 0x48, 0x44, 0xe4, 0x00, 0x9a,
0x18, 0x13, 0x0f, 0xc6, 0x8b, 0x47, 0x6f, 0x1c, 0x0c, 0x89, 0xc6, 0x9b, 0x77, 0x93, 0x56, 0x8f,
0x6a, 0xb8, 0x1a, 0x8b, 0xe2, 0x41, 0xe3, 0x05, 0x0d, 0x6d, 0xda, 0xc4, 0xd4, 0x22, 0x84, 0x94,
0xdd, 0x2e, 0xef, 0x06, 0xc6, 0xff, 0xd4, 0x5d, 0x5c, 0x2a, 0x52, 0xdb, 0x70, 0xf0, 0xe0, 0x97,
0xfc, 0xd2, 0xed, 0x63, 0xe7, 0xb7, 0x33, 0xdf, 0x7c, 0xd3, 0x9c, 0x9c, 0x2c, 0x16, 0x11, 0x59,
0x24, 0x49, 0x7a, 0x1d, 0x08, 0x04, 0x56, 0x70, 0xdd, 0x95, 0xf2, 0x9d, 0x63, 0x69, 0x69, 0xe9,
0x73, 0x24, 0x12, 0x09, 0xe2, 0xba, 0x29, 0x27, 0xdb, 0xc5, 0x92, 0x58, 0x2c, 0xf6, 0xb1, 0xa3,
0xad, 0x8d, 0x8c, 0x85, 0x85, 0xe4, 0xf7, 0xfb, 0x37, 0x55, 0x19, 0x4b, 0x42, 0xa1, 0xd0, 0x37,
0x47, 0x4d, 0x0d, 0xd5, 0x57, 0x56, 0xd2, 0xe2, 0xe2, 0xe2, 0xf7, 0xac, 0x64, 0x5a, 0x49, 0x5f,
0x49, 0x09, 0x4d, 0x57, 0x54, 0x90, 0xe9, 0x97, 0xec, 0xaa, 0x2a, 0x99, 0x2a, 0x2b, 0xa3, 0x5b,
0xe5, 0xe5, 0xd9, 0xcb, 0x76, 0x76, 0x76, 0x7c, 0xaa, 0x24, 0xd6, 0xd4, 0x44, 0x1b, 0x8d, 0x8d,
0x34, 0x83, 0xa0, 0x2c, 0xf3, 0x7a, 0xbd, 0xc4, 0x92, 0x49, 0x8b, 0x85, 0x64, 0xbb, 0x9d, 0xd6,
0x1b, 0x1a, 0x0e, 0x64, 0x5c, 0xc6, 0x8c, 0x44, 0xbb, 0xbb, 0xbb, 0x4f, 0xbb, 0xdb, 0xdb, 0xa9,
0x17, 0xc1, 0x56, 0x11, 0x68, 0x1d, 0x01, 0xe5, 0xba, 0x3a, 0x7a, 0x60, 0x36, 0x53, 0x6e, 0x6e,
0x2e, 0x4d, 0x9a, 0x4c, 0x24, 0x41, 0x26, 0xd7, 0xd7, 0x93, 0xec, 0x70, 0x24, 0x33, 0x63, 0x79,
0x34, 0x1a, 0xfd, 0x92, 0x69, 0xe9, 0x8c, 0xa2, 0x28, 0xbe, 0xef, 0x82, 0xac, 0x07, 0xb2, 0x95,
0xda, 0x5a, 0x8a, 0x5b, 0xad, 0x24, 0xa1, 0x84, 0x73, 0x90, 0x89, 0x08, 0x1c, 0x47, 0x06, 0x92,
0x92, 0x19, 0x4b, 0xb8, 0x9c, 0xbc, 0x77, 0x87, 0x02, 0xb9, 0xdd, 0x74, 0xbe, 0xa5, 0x85, 0x26,
0xfe, 0x84, 0xcb, 0x45, 0x97, 0x58, 0x16, 0x8f, 0xc7, 0xe7, 0x7b, 0x3b, 0x3b, 0xe9, 0x8c, 0xd1,
0x48, 0x51, 0x94, 0x47, 0x44, 0x29, 0x45, 0x64, 0x23, 0x22, 0xb8, 0x88, 0xf7, 0xd7, 0x71, 0x6d,
0xab, 0xaa, 0xe2, 0xfd, 0xf9, 0x4d, 0xa2, 0x63, 0xdc, 0xee, 0xfd, 0x79, 0xc8, 0xe8, 0x18, 0x42,
0x4a, 0x66, 0x9e, 0x85, 0x85, 0x85, 0x7d, 0xbd, 0x4e, 0x47, 0x4f, 0x20, 0x13, 0x91, 0xcd, 0x5a,
0x71, 0x71, 0xf2, 0x75, 0x0e, 0x32, 0x2e, 0xa3, 0xcf, 0xe7, 0xc3, 0xcf, 0x68, 0x4c, 0x2b, 0xd1,
0x03, 0x13, 0xb0, 0xba, 0x5c, 0xdb, 0x1f, 0xd2, 0x89, 0xf8, 0x09, 0xc3, 0xe1, 0x70, 0xc4, 0x89,
0xb2, 0x4d, 0xe0, 0xc9, 0xd7, 0x50, 0x36, 0x89, 0x33, 0x82, 0x40, 0xe2, 0xd2, 0x21, 0x93, 0x47,
0x78, 0x6f, 0x4e, 0x69, 0x7d, 0x5e, 0x85, 0xa0, 0x0d, 0x5c, 0x10, 0x84, 0xe5, 0xc0, 0x71, 0xa2,
0xc1, 0x41, 0xfa, 0x7a, 0xd0, 0xc2, 0x08, 0x16, 0x57, 0xf6, 0x48, 0xc4, 0xbe, 0x70, 0x66, 0xcb,
0x78, 0x95, 0xb9, 0x19, 0x6c, 0x36, 0x9a, 0x39, 0xdc, 0xfa, 0x49, 0x59, 0x11, 0x38, 0x0d, 0x46,
0xf5, 0xfa, 0x92, 0xa9, 0xfc, 0x7c, 0xeb, 0x0d, 0x15, 0x93, 0x69, 0xe8, 0x9e, 0x56, 0xe4, 0xf7,
0x6f, 0x6f, 0x3a, 0x10, 0x7c, 0xbc, 0xb4, 0x94, 0x64, 0xa7, 0x33, 0x19, 0x30, 0x8e, 0xae, 0x9b,
0x44, 0xc9, 0xb8, 0x8c, 0x3d, 0xc8, 0x70, 0x05, 0x9f, 0xad, 0xe3, 0xbb, 0x8d, 0xe6, 0x66, 0x9a,
0x86, 0x98, 0x0f, 0x75, 0x30, 0x18, 0x5c, 0xd6, 0x66, 0x74, 0x11, 0x5c, 0x56, 0x18, 0x05, 0xd7,
0x0c, 0x86, 0xbe, 0xbb, 0x5a, 0x91, 0xd7, 0xbb, 0x2f, 0x5d, 0x19, 0x1e, 0x26, 0x01, 0x4f, 0x1f,
0x66, 0x11, 0x48, 0x76, 0x57, 0x75, 0x35, 0xf1, 0x9e, 0xa9, 0xdd, 0xb8, 0x8a, 0x33, 0xc6, 0xe7,
0xac, 0x0f, 0xd7, 0x1d, 0x1e, 0x0f, 0xf1, 0xb8, 0x52, 0xf7, 0xc8, 0x02, 0xea, 0x80, 0x4d, 0x41,
0xe0, 0x52, 0x1a, 0x0c, 0xe7, 0xee, 0x68, 0x45, 0xad, 0xad, 0x14, 0x4e, 0x24, 0x12, 0xcf, 0x54,
0xd9, 0x38, 0xca, 0xa7, 0x69, 0x61, 0x8f, 0xda, 0xfa, 0xbd, 0xf8, 0x5c, 0x95, 0xf0, 0x24, 0xe1,
0x89, 0xa2, 0xed, 0x3a, 0xbd, 0x86, 0x52, 0x30, 0x90, 0x2a, 0x52, 0x9a, 0x21, 0x8f, 0x65, 0x63,
0x23, 0x23, 0xc4, 0x65, 0xd4, 0x9e, 0x13, 0xf5, 0x9c, 0xf1, 0xa1, 0xe6, 0x09, 0x92, 0x2a, 0x39,
0x6a, 0x99, 0x41, 0xff, 0x51, 0x22, 0x25, 0x60, 0xde, 0xde, 0xde, 0xde, 0xc3, 0xad, 0xad, 0xad,
0x59, 0x5c, 0xdb, 0x53, 0x0f, 0x35, 0x4f, 0x10, 0x1e, 0x57, 0xe9, 0x24, 0x69, 0x45, 0x27, 0xb9,
0xfe, 0x8b, 0x4e, 0x5c, 0x94, 0x00, 0xc1, 0x0c, 0xb9, 0x9d, 0x8d, 0x28, 0x63, 0x30, 0xf1, 0xef,
0xff, 0x3b, 0xa2, 0x82, 0x02, 0xe1, 0xa6, 0xdd, 0xfe, 0x66, 0xf6, 0x27, 0x73, 0xaf, 0x1c, 0x8e,
0xb7, 0x2f, 0xff, 0x8e, 0x77, 0x2f, 0x9c, 0xce, 0x4f, 0xcf, 0x05, 0x41, 0x7e, 0x0c, 0x51, 0x7f,
0x5a, 0x11, 0x18, 0x07, 0x13, 0x59, 0xc0, 0xf7, 0x0d, 0x28, 0x71, 0x8e, 0x5d, 0x06, 0x70, 0x96,
0xe7, 0x9d, 0x32, 0x6c, 0x33, 0x85, 0xef, 0xeb, 0x06, 0xc6, 0x74, 0x22, 0x9e, 0x7d, 0xa7, 0x94,
0xbf, 0x90, 0xe2, 0x2c, 0x28, 0x52, 0xee, 0xd7, 0xa9, 0x01, 0x7f, 0x00, 0x7c, 0x97, 0x16, 0x4f,
0xe9, 0xb8, 0xa5, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_bus_xpm[1] = {{ png, sizeof( png ), "delete_bus_xpm" }};
//EOF
+95
View File
@@ -0,0 +1,95 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0xda, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xa5, 0x55, 0x0b, 0x48, 0x9b,
0x57, 0x14, 0x36, 0x69, 0x12, 0x5f, 0x69, 0xa2, 0xc6, 0x47, 0xac, 0x9a, 0x97, 0x69, 0xf2, 0x27,
0xd1, 0xa9, 0xc8, 0x86, 0x1b, 0xcc, 0xad, 0x3e, 0x46, 0x71, 0x74, 0x63, 0xb0, 0x55, 0x86, 0x0a,
0xb5, 0x9d, 0x1d, 0x6b, 0x19, 0xed, 0xba, 0x87, 0xa8, 0xdd, 0x74, 0x30, 0xc6, 0x60, 0x2b, 0x0c,
0x69, 0x18, 0x5b, 0xa5, 0x1d, 0x14, 0x1c, 0x1b, 0x05, 0x57, 0xd1, 0xb5, 0x63, 0xe0, 0x60, 0x14,
0x6c, 0xa8, 0xce, 0x4d, 0xa4, 0x65, 0x32, 0xdb, 0xd4, 0xb4, 0xf8, 0xa2, 0x9b, 0x51, 0xd3, 0xa8,
0x31, 0xff, 0xd9, 0x77, 0xb3, 0xff, 0xd7, 0xdf, 0x36, 0xea, 0xea, 0x2e, 0x7c, 0x78, 0xff, 0x9b,
0x73, 0xcf, 0x77, 0xcf, 0x39, 0xdf, 0x39, 0xc6, 0xc4, 0x6c, 0x73, 0x11, 0x51, 0xc5, 0xd8, 0xd8,
0xd8, 0x9f, 0xa1, 0x50, 0xe8, 0x14, 0xf6, 0x32, 0xc9, 0xb9, 0x2a, 0x18, 0x0c, 0x9e, 0xf7, 0x7a,
0xbd, 0xd7, 0xb1, 0x2f, 0x8a, 0xf9, 0x3f, 0x0b, 0x0e, 0x2a, 0x7b, 0x7b, 0x7b, 0x97, 0xe2, 0x94,
0x4a, 0x3a, 0x58, 0x57, 0x47, 0x2b, 0x2b, 0x2b, 0x5f, 0x31, 0x32, 0x46, 0x12, 0x08, 0x04, 0x7a,
0xaa, 0xca, 0xcb, 0x29, 0x59, 0xad, 0x26, 0x8f, 0xc7, 0xe3, 0xdf, 0x36, 0x99, 0x48, 0x92, 0x14,
0x1f, 0x4f, 0x5f, 0xef, 0xda, 0x45, 0x05, 0x5a, 0x2d, 0x1d, 0xac, 0xad, 0x65, 0x64, 0x67, 0x44,
0x92, 0xf2, 0x94, 0x14, 0x6a, 0xd7, 0xeb, 0x49, 0xb7, 0x5d, 0x32, 0x5c, 0x48, 0xe8, 0xef, 0xef,
0x0f, 0xa8, 0x63, 0x63, 0xe9, 0x62, 0x76, 0x36, 0x05, 0x6c, 0x36, 0xf2, 0x99, 0xcd, 0xab, 0x64,
0x55, 0x65, 0x65, 0x54, 0x96, 0x94, 0x44, 0x33, 0x46, 0x23, 0x2d, 0xe4, 0xe6, 0xd2, 0x97, 0x78,
0x08, 0x8b, 0x6c, 0x74, 0x74, 0x74, 0xfc, 0x91, 0x88, 0x06, 0x06, 0x06, 0x94, 0x37, 0xb1, 0x8c,
0x78, 0x6d, 0x4b, 0x46, 0x46, 0xc4, 0xd9, 0xbc, 0xc1, 0x40, 0xb7, 0x33, 0x33, 0xa9, 0x60, 0xe7,
0x4e, 0x2a, 0x07, 0xe1, 0x14, 0xf6, 0xf3, 0x39, 0x39, 0x34, 0x87, 0x07, 0x1c, 0x48, 0x4d, 0xa5,
0x42, 0x8e, 0xa3, 0xe9, 0xe9, 0xe9, 0x2b, 0x9b, 0xbd, 0x5f, 0xe6, 0x72, 0x51, 0x99, 0xcb, 0x15,
0x3e, 0xe5, 0x72, 0xf1, 0x57, 0xf3, 0xf2, 0xf8, 0x71, 0xe0, 0xef, 0xbd, 0x7b, 0xc3, 0xe3, 0xd7,
0xae, 0x8d, 0x2d, 0x31, 0xb2, 0x66, 0x9d, 0x8e, 0xe6, 0xb2, 0xb2, 0xc8, 0x9f, 0x9e, 0x4e, 0x33,
0xd8, 0xff, 0x05, 0xb0, 0xfd, 0x2c, 0x22, 0xa9, 0x4f, 0x4e, 0xa6, 0x42, 0xbb, 0x9d, 0x26, 0x27,
0x27, 0x7f, 0x47, 0x26, 0x92, 0xa3, 0x52, 0x80, 0x60, 0x1f, 0x9c, 0x0e, 0xe7, 0xe5, 0x11, 0x45,
0x43, 0x65, 0x25, 0x51, 0x7f, 0xff, 0x2d, 0x32, 0x22, 0xaa, 0x93, 0x48, 0x95, 0x1f, 0x04, 0xb3,
0x1a, 0x0d, 0xcd, 0x22, 0x22, 0x3f, 0xa2, 0x38, 0x84, 0xb3, 0xc7, 0x90, 0x56, 0x81, 0x24, 0x25,
0x1a, 0x81, 0x0a, 0x8e, 0xdc, 0x0f, 0x3b, 0x0f, 0xaf, 0x38, 0x9d, 0xfe, 0x29, 0x8e, 0x9b, 0xf4,
0x3a, 0x9d, 0x73, 0xf7, 0x8a, 0x8a, 0x78, 0xbe, 0xaf, 0x6f, 0x91, 0x2a, 0x4b, 0x4b, 0xe9, 0x79,
0xe6, 0x1c, 0xc5, 0x8f, 0x10, 0x31, 0xd2, 0xb4, 0x34, 0x2a, 0xc6, 0xbe, 0xae, 0xba, 0x9a, 0x09,
0xe4, 0x9c, 0x54, 0xfa, 0x62, 0xaa, 0xe4, 0x70, 0xfa, 0xad, 0x94, 0x80, 0xe3, 0xa6, 0xc6, 0x32,
0x33, 0x3f, 0xed, 0x50, 0x28, 0xb2, 0xdf, 0x85, 0xc1, 0x1b, 0xc0, 0x6b, 0x5a, 0xad, 0xb6, 0x61,
0x78, 0xf8, 0x8f, 0x91, 0x7d, 0x08, 0x8b, 0x15, 0x7e, 0x0a, 0x29, 0x64, 0xce, 0x59, 0x54, 0x2c,
0x9a, 0x39, 0x7c, 0xdf, 0x41, 0xea, 0x8a, 0xf1, 0x5b, 0x7d, 0x4d, 0xcd, 0xaa, 0xf4, 0xa5, 0xd1,
0x7c, 0xb8, 0x46, 0xc2, 0xf3, 0x06, 0x43, 0xd7, 0x85, 0x98, 0x18, 0xf9, 0x71, 0xfc, 0x74, 0x18,
0x78, 0x05, 0xd8, 0x03, 0x14, 0xfb, 0x7c, 0xbe, 0x3e, 0x26, 0xe1, 0x32, 0xd4, 0x60, 0x1a, 0x42,
0x98, 0x87, 0xfa, 0x66, 0x21, 0x80, 0x23, 0xf8, 0x6e, 0x05, 0xd8, 0xf7, 0xbc, 0xc9, 0xf4, 0xaf,
0x1a, 0x41, 0x26, 0x48, 0xbf, 0x5d, 0x24, 0xb1, 0x82, 0x60, 0x51, 0x24, 0xca, 0xca, 0x3a, 0xff,
0x0d, 0x8e, 0x8f, 0x01, 0x75, 0x40, 0x29, 0x60, 0x01, 0x74, 0x6e, 0xb7, 0x5b, 0xdf, 0xdd, 0xdd,
0xcd, 0x2b, 0xe4, 0x72, 0xfa, 0x0d, 0xce, 0x16, 0x2c, 0x16, 0xf2, 0xe3, 0xef, 0x01, 0xa4, 0xae,
0x00, 0x85, 0x67, 0x35, 0x6b, 0x46, 0x54, 0x0b, 0x56, 0x2b, 0x05, 0xf0, 0x7d, 0x19, 0xea, 0x93,
0xc9, 0x64, 0x34, 0x38, 0x38, 0xe8, 0x8f, 0x10, 0xc1, 0xf9, 0xe7, 0x22, 0x89, 0xcd, 0xe6, 0x1d,
0xc1, 0xd1, 0x71, 0x81, 0xe4, 0x71, 0x20, 0x0d, 0x50, 0x01, 0x72, 0x80, 0x75, 0xff, 0x07, 0xef,
0x37, 0x35, 0x91, 0x01, 0xfd, 0x31, 0x82, 0x57, 0x37, 0x20, 0x6d, 0x05, 0x28, 0xbc, 0xc7, 0x33,
0xb5, 0xe4, 0xf1, 0xdc, 0x26, 0x0b, 0xd2, 0xc6, 0xa4, 0xff, 0x2b, 0x7e, 0xd3, 0x27, 0x26, 0xd2,
0xe9, 0xf6, 0x76, 0x1e, 0x77, 0xea, 0x45, 0xa2, 0x3b, 0x22, 0x91, 0x4e, 0x77, 0xe2, 0xb4, 0x90,
0xae, 0xa7, 0x81, 0x54, 0x40, 0x11, 0xa5, 0x71, 0xdb, 0x5a, 0x1a, 0x1b, 0x29, 0x41, 0xa1, 0x88,
0xf4, 0xc9, 0xc4, 0xc4, 0xc4, 0x70, 0x45, 0xc5, 0xdd, 0xd6, 0x55, 0x35, 0xa2, 0x4e, 0x89, 0x18,
0x4f, 0x5f, 0xb8, 0xdd, 0xfc, 0xf2, 0xf2, 0xf2, 0xe1, 0xc8, 0xa5, 0xe2, 0x62, 0xd2, 0xae, 0xd5,
0x66, 0x65, 0x59, 0x2e, 0x8f, 0x3d, 0x21, 0xd4, 0xc4, 0x22, 0x44, 0xb2, 0xd1, 0x94, 0x68, 0xed,
0xec, 0xec, 0xe4, 0x21, 0xe1, 0x21, 0xd6, 0x27, 0x36, 0xdb, 0x30, 0x27, 0x4a, 0xdf, 0xe3, 0xf1,
0x86, 0xbb, 0xba, 0xba, 0xc2, 0x43, 0x43, 0x43, 0x2d, 0x30, 0x8d, 0x15, 0xa2, 0x59, 0x72, 0x88,
0x44, 0x90, 0xf0, 0x3d, 0x1c, 0x1d, 0x05, 0x2a, 0x84, 0x68, 0xe4, 0x5b, 0x8c, 0xa4, 0x1c, 0x40,
0xc9, 0xf6, 0x56, 0xeb, 0x0f, 0xb1, 0xa2, 0x1f, 0x3c, 0x9e, 0x2f, 0x29, 0xd9, 0xf3, 0x1e, 0x8b,
0x03, 0x50, 0xb3, 0x94, 0x43, 0x08, 0x0b, 0x7a, 0xd1, 0xc0, 0xe5, 0x5a, 0xba, 0x8f, 0xc3, 0xd7,
0x81, 0xa7, 0x00, 0x6d, 0xc4, 0xe0, 0x3f, 0xae, 0xf5, 0x7e, 0x96, 0x83, 0x51, 0xfc, 0x7c, 0xb7,
0x03, 0x72, 0x5e, 0x10, 0x8d, 0x34, 0x9a, 0x97, 0xdb, 0xb6, 0x43, 0x84, 0xb4, 0xbf, 0x24, 0xe9,
0x3f, 0x5f, 0xb4, 0x07, 0x63, 0xa6, 0x2d, 0x5e, 0x10, 0x8d, 0xcc, 0xe6, 0x5f, 0x7e, 0x16, 0x52,
0xa7, 0xdb, 0x2a, 0x75, 0xeb, 0x89, 0xf8, 0xcb, 0xa2, 0x0f, 0xa3, 0xb1, 0xe7, 0x12, 0x6b, 0xee,
0x75, 0xa9, 0x63, 0xcb, 0xe1, 0x98, 0xa8, 0x92, 0x8e, 0x1b, 0x9d, 0xee, 0xed, 0x66, 0x1c, 0x9b,
0x37, 0x13, 0xc3, 0x03, 0xa3, 0xeb, 0x55, 0xc9, 0xfd, 0x90, 0x5a, 0x5d, 0xf1, 0x91, 0xd0, 0x1e,
0xf6, 0x55, 0x31, 0x08, 0x4b, 0x81, 0x19, 0x76, 0x69, 0x2d, 0xc7, 0xc1, 0xf9, 0x8c, 0x8c, 0x8f,
0x1b, 0x36, 0x92, 0xb7, 0x74, 0xe5, 0xe7, 0xd3, 0x8b, 0xb8, 0x13, 0x14, 0xef, 0x9a, 0x4c, 0x3f,
0xfd, 0x88, 0xe3, 0x37, 0x81, 0x2a, 0x40, 0x0f, 0xec, 0x90, 0xda, 0xcb, 0x0c, 0x86, 0xb3, 0x16,
0xa7, 0xf3, 0xbe, 0x57, 0xfa, 0xb2, 0xdd, 0xbb, 0x6f, 0x9c, 0x4d, 0x4d, 0x6d, 0xb3, 0x49, 0x1b,
0x56, 0xbc, 0xc0, 0x71, 0x41, 0x13, 0x6c, 0x3a, 0x60, 0xcb, 0x8b, 0x77, 0xec, 0x76, 0xdf, 0x0d,
0xb9, 0x3c, 0xe5, 0x1d, 0x21, 0x9a, 0x02, 0x20, 0x31, 0x5a, 0x9d, 0x15, 0x7a, 0x7d, 0xfb, 0x13,
0x0e, 0x87, 0xff, 0xd6, 0xfa, 0xc9, 0xcd, 0x87, 0x9c, 0xce, 0xc0, 0x55, 0x97, 0x6b, 0xae, 0x03,
0x0f, 0xf9, 0x0c, 0x8a, 0x3a, 0x03, 0x82, 0x41, 0xfc, 0x16, 0x96, 0xda, 0xd9, 0xed, 0xe3, 0xd7,
0x55, 0x2a, 0x53, 0x23, 0xfc, 0xb0, 0x4c, 0x3c, 0x0b, 0xa4, 0x3f, 0x18, 0x8d, 0x74, 0xc5, 0xa9,
0xd5, 0x25, 0x0e, 0xab, 0x75, 0xe4, 0x22, 0x8b, 0x68, 0xa3, 0xff, 0x47, 0x52, 0xb8, 0x5c, 0xa1,
0xa0, 0xc1, 0xd0, 0xfd, 0x3d, 0x1a, 0xfd, 0x2d, 0x41, 0x00, 0x4c, 0x48, 0x39, 0x5b, 0xd5, 0x97,
0x85, 0x19, 0x0f, 0x18, 0xb4, 0xda, 0xda, 0xfd, 0x16, 0xcb, 0x95, 0x1e, 0x8e, 0x9b, 0xb9, 0xfb,
0x30, 0x01, 0xcf, 0x73, 0xdc, 0xc4, 0x4d, 0x10, 0x74, 0xab, 0x54, 0x5c, 0x13, 0xec, 0x8f, 0x00,
0x35, 0xc2, 0x00, 0xce, 0x16, 0x04, 0xb0, 0x65, 0x6b, 0xc8, 0x84, 0xd7, 0xb0, 0x61, 0x9a, 0x0f,
0x3c, 0x17, 0x17, 0xe7, 0x38, 0xa4, 0xd1, 0xec, 0x3f, 0xa9, 0xd3, 0x1d, 0xfd, 0x44, 0xa3, 0x79,
0xa1, 0x55, 0xa9, 0xcc, 0x3c, 0x26, 0xcc, 0x43, 0x36, 0x2c, 0xab, 0x81, 0x72, 0xc0, 0x29, 0x88,
0x47, 0xf5, 0x28, 0xfd, 0x17, 0x23, 0xe4, 0x37, 0x41, 0x20, 0xcc, 0x05, 0x0a, 0x85, 0x06, 0x64,
0xf9, 0x7f, 0x06, 0x78, 0x52, 0x28, 0xb8, 0x59, 0x20, 0x88, 0xdf, 0xac, 0x26, 0xff, 0x00, 0x8c,
0xdc, 0x04, 0xd3, 0xa5, 0xbd, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_circle_xpm[1] = {{ png, sizeof( png ), "delete_circle_xpm" }};
//EOF
+92
View File
@@ -0,0 +1,92 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0xab, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x9d, 0x95, 0x7f, 0x4c, 0xd4,
0x75, 0x18, 0xc7, 0x3f, 0x1c, 0x27, 0xf1, 0x4b, 0x0e, 0x0f, 0x10, 0xb9, 0xe3, 0x44, 0x18, 0xa0,
0x34, 0xc1, 0xc2, 0x1f, 0x07, 0x5b, 0x42, 0x34, 0x17, 0x96, 0xcd, 0x5d, 0xea, 0x40, 0x6d, 0x81,
0x59, 0x03, 0x93, 0x54, 0x9a, 0x22, 0x05, 0x69, 0x1b, 0x6b, 0xe0, 0x68, 0x91, 0xb6, 0xdd, 0xdd,
0xa2, 0xc9, 0x1f, 0xb2, 0x43, 0xcb, 0x89, 0x7f, 0x34, 0x21, 0x62, 0x25, 0x8c, 0x46, 0x8c, 0x5a,
0x80, 0xb2, 0xa8, 0xd9, 0x0a, 0x72, 0xa3, 0x36, 0x60, 0x1c, 0x07, 0x14, 0x52, 0xe7, 0xbb, 0xf7,
0xe7, 0xcb, 0x41, 0x88, 0x07, 0x02, 0x9f, 0xed, 0xbd, 0xbb, 0xef, 0x7d, 0xee, 0xfb, 0xbc, 0x3e,
0xcf, 0xf3, 0xbc, 0x9f, 0xef, 0x57, 0x88, 0x25, 0x2e, 0x00, 0x61, 0xd4, 0x75, 0xaa, 0x8a, 0xf2,
0x73, 0xb3, 0x7f, 0x8a, 0x6a, 0xa2, 0xb6, 0x8b, 0xe5, 0x2e, 0xde, 0xac, 0x1b, 0x1e, 0x1e, 0xbe,
0xb3, 0xdd, 0x68, 0xc4, 0xc1, 0x8c, 0x0c, 0x4c, 0x4e, 0x4e, 0x36, 0xcf, 0x86, 0xf1, 0x7b, 0x99,
0xd5, 0x6a, 0x45, 0xf8, 0x9a, 0x35, 0xe8, 0xea, 0xea, 0xfa, 0x9b, 0xd7, 0xcf, 0x2c, 0x1b, 0x92,
0xbc, 0x79, 0x33, 0x12, 0x56, 0xae, 0x84, 0xde, 0xd7, 0x17, 0x99, 0x7b, 0xf7, 0xce, 0xc0, 0x24,
0xc4, 0x62, 0xb1, 0xc0, 0xcb, 0xd3, 0x13, 0x3b, 0xb8, 0x1f, 0x12, 0x18, 0xb8, 0x74, 0x18, 0xff,
0xac, 0x75, 0x38, 0x1c, 0x77, 0x52, 0x92, 0x92, 0x14, 0xc8, 0xdd, 0xe8, 0x68, 0xfc, 0x18, 0x19,
0x89, 0x08, 0x3f, 0x3f, 0xec, 0x33, 0x99, 0x24, 0xec, 0xf7, 0xca, 0xca, 0x4a, 0x3c, 0xa6, 0x56,
0xa3, 0x26, 0x34, 0x14, 0x63, 0x31, 0x31, 0xc8, 0x09, 0x0a, 0x9a, 0x0d, 0x4b, 0x5e, 0x2c, 0xe8,
0x60, 0x71, 0x71, 0x31, 0xbc, 0x54, 0x2a, 0xf4, 0x44, 0x45, 0x61, 0x3c, 0x36, 0x16, 0x63, 0xfc,
0xec, 0xd2, 0xeb, 0xa1, 0xf7, 0xf1, 0xc1, 0x56, 0x66, 0x29, 0x33, 0xa9, 0x09, 0x0e, 0xc6, 0x68,
0x44, 0x84, 0xb2, 0x37, 0x4a, 0xd8, 0xe3, 0xdc, 0x4b, 0xde, 0xb6, 0x0d, 0xb2, 0x9f, 0x8b, 0x05,
0x85, 0x0c, 0x0c, 0x0c, 0xf4, 0x25, 0x6e, 0xdc, 0x08, 0x63, 0x40, 0x00, 0xfe, 0x60, 0x36, 0x32,
0xa0, 0x83, 0xa0, 0xce, 0x90, 0x10, 0x24, 0x30, 0xa0, 0x8d, 0xa7, 0x77, 0x84, 0x85, 0x61, 0x34,
0x3c, 0x5c, 0xd9, 0xcb, 0xd3, 0x6a, 0x11, 0xe8, 0xef, 0x8f, 0xf6, 0xf6, 0xf6, 0x7b, 0xbc, 0xff,
0xe9, 0xa5, 0x94, 0x6f, 0xdd, 0xd0, 0xd0, 0x50, 0xdf, 0xd6, 0x4d, 0x9b, 0x60, 0x64, 0xf9, 0xfa,
0x75, 0x3a, 0x38, 0xd8, 0xf4, 0x11, 0x66, 0x31, 0xc2, 0xa0, 0x23, 0x2c, 0xd5, 0xc8, 0xea, 0xd5,
0x70, 0xf0, 0xf7, 0x37, 0x09, 0xd5, 0xb0, 0xac, 0x6d, 0x6d, 0x6d, 0x12, 0xb2, 0x6b, 0x39, 0x86,
0x58, 0xa7, 0x64, 0x16, 0x1f, 0x0f, 0x23, 0x4f, 0xdb, 0x4f, 0x88, 0x7d, 0xd5, 0x2a, 0xd8, 0x99,
0xa5, 0x9d, 0xc1, 0x25, 0x34, 0x8f, 0x87, 0x98, 0x95, 0xc9, 0x22, 0x20, 0x67, 0x44, 0x2a, 0x55,
0x4d, 0xe5, 0xf0, 0x4a, 0x4d, 0xa9, 0x5c, 0x30, 0x73, 0x79, 0x79, 0x39, 0x56, 0xb0, 0x5f, 0xad,
0x0c, 0x2e, 0x01, 0xc3, 0x0c, 0xae, 0x7c, 0xb2, 0x8c, 0xe1, 0xde, 0xde, 0x78, 0x3e, 0x3d, 0x5d,
0x1a, 0xa4, 0xc3, 0xdd, 0x9c, 0xb9, 0x03, 0xbd, 0x46, 0x41, 0x9c, 0x16, 0x57, 0x78, 0x15, 0x4f,
0x85, 0x39, 0x9d, 0xce, 0x73, 0xd3, 0xee, 0xb2, 0x31, 0x13, 0x59, 0x2a, 0x59, 0x32, 0xbb, 0x2c,
0x1d, 0xb3, 0x71, 0xd0, 0x71, 0xdd, 0x2c, 0x67, 0x04, 0xad, 0xef, 0x72, 0x63, 0xf3, 0xa3, 0x61,
0xd3, 0xa0, 0x23, 0xe2, 0x26, 0xaf, 0xac, 0xad, 0xad, 0xad, 0xb5, 0xd3, 0x73, 0x52, 0xc3, 0x93,
0x8f, 0xd2, 0x08, 0x4a, 0x8f, 0x18, 0xbc, 0x8a, 0xa5, 0xeb, 0xe7, 0xa7, 0x34, 0xc7, 0xe8, 0xda,
0xb5, 0xb8, 0x65, 0x30, 0x3c, 0x34, 0x67, 0x8f, 0x06, 0xe5, 0x88, 0x96, 0xac, 0xac, 0xac, 0xaf,
0x6d, 0x36, 0x9b, 0x02, 0xb9, 0x4c, 0x67, 0x8d, 0x49, 0xd7, 0x31, 0xa0, 0x74, 0xd8, 0x51, 0x42,
0x64, 0x45, 0x95, 0x9e, 0x11, 0x20, 0xad, 0x3d, 0x4e, 0x6b, 0xdf, 0xe2, 0x7f, 0x74, 0x74, 0xe3,
0xab, 0xd9, 0xd9, 0xd2, 0xde, 0xe5, 0x8b, 0x02, 0x99, 0x4c, 0xa6, 0xc6, 0xba, 0xba, 0xba, 0xfb,
0x5e, 0x2c, 0xd9, 0x79, 0x39, 0x90, 0x1c, 0x58, 0x19, 0x30, 0x8f, 0x7d, 0x91, 0x8d, 0x6f, 0x68,
0x68, 0x80, 0x62, 0x10, 0x42, 0xff, 0xe4, 0xde, 0xf8, 0xfa, 0xf5, 0x68, 0xa1, 0xc5, 0x03, 0xbd,
0xbc, 0xf0, 0x56, 0x41, 0x81, 0x04, 0x9d, 0x75, 0x87, 0x88, 0xa5, 0x2e, 0x08, 0x5f, 0x71, 0x97,
0x82, 0xf0, 0x17, 0x7f, 0xf1, 0xfa, 0x37, 0xb3, 0xd9, 0xdc, 0x50, 0x5b, 0x5b, 0x3b, 0x03, 0x7b,
0xe3, 0xc1, 0x39, 0xc9, 0x99, 0x71, 0xa3, 0x46, 0x83, 0x3a, 0x66, 0x26, 0x21, 0xf9, 0xc7, 0x8e,
0x49, 0xc8, 0x55, 0x4a, 0x3d, 0x17, 0x72, 0x98, 0x9a, 0x88, 0x8c, 0x30, 0xe0, 0xf5, 0x43, 0x99,
0x78, 0xbf, 0x28, 0x0f, 0x27, 0x5f, 0xd9, 0x83, 0xf8, 0x18, 0x83, 0x52, 0x9e, 0xb2, 0xb2, 0xb2,
0xef, 0x25, 0x6c, 0x05, 0x4b, 0x38, 0xd7, 0xc2, 0x33, 0xd6, 0xe7, 0x50, 0xcb, 0xcb, 0xfc, 0xe3,
0xc7, 0xe7, 0x85, 0xa4, 0x52, 0xce, 0x13, 0xb9, 0xd9, 0x98, 0xec, 0x6d, 0x03, 0x7e, 0xf9, 0x0a,
0xe8, 0xbe, 0x06, 0x7c, 0x57, 0x05, 0x67, 0xf3, 0x07, 0xf8, 0x38, 0xff, 0x05, 0xa8, 0x3d, 0x55,
0x28, 0x29, 0x29, 0xe9, 0x6e, 0x6a, 0x6a, 0x72, 0x76, 0x76, 0x76, 0x4e, 0xcc, 0x9d, 0x13, 0x09,
0x1b, 0x1c, 0x1c, 0xec, 0xad, 0xae, 0xae, 0x96, 0x90, 0x4f, 0xdd, 0x41, 0xe4, 0x6a, 0x4c, 0x4d,
0xde, 0x02, 0xf4, 0x7e, 0x03, 0xfc, 0x74, 0x03, 0xe8, 0xb0, 0x01, 0xdf, 0x5a, 0x80, 0x9b, 0xa5,
0x40, 0x7d, 0x21, 0xdf, 0x40, 0x47, 0x50, 0xb8, 0x3b, 0x4e, 0x9e, 0x76, 0x32, 0x2d, 0x2d, 0xed,
0x52, 0x51, 0x51, 0x51, 0x1a, 0xbf, 0x7b, 0xba, 0x19, 0xea, 0x00, 0x2a, 0x89, 0x52, 0x3d, 0xb8,
0xf3, 0x8e, 0x38, 0x2f, 0xde, 0x66, 0x4f, 0x3c, 0x84, 0xb3, 0xea, 0x1c, 0xdf, 0x59, 0xb7, 0x65,
0x16, 0x17, 0x81, 0x96, 0x0a, 0xa0, 0xf1, 0x5d, 0xe0, 0xf3, 0x13, 0x2c, 0xc0, 0x21, 0xa0, 0xda,
0x84, 0x9e, 0x12, 0xa3, 0x52, 0x16, 0x91, 0xc2, 0xfe, 0xbd, 0x4c, 0xdb, 0x17, 0x0a, 0x8b, 0x72,
0x7f, 0x91, 0x52, 0x72, 0x19, 0xd8, 0x63, 0x21, 0x77, 0x41, 0x14, 0x08, 0x25, 0x40, 0xbd, 0xf9,
0xf4, 0x9c, 0x2c, 0x72, 0x81, 0xcb, 0xfb, 0xf9, 0xec, 0x7d, 0x0e, 0xb0, 0x24, 0x63, 0xa4, 0x74,
0xc3, 0x14, 0xe8, 0x00, 0x75, 0x66, 0x96, 0x4e, 0x89, 0x2f, 0xf8, 0x7b, 0x34, 0x15, 0x3c, 0xfd,
0x04, 0x79, 0x78, 0xed, 0x14, 0xed, 0x22, 0x5d, 0xfc, 0xc0, 0x6d, 0xa7, 0xf5, 0xe4, 0x3e, 0x66,
0x71, 0xd6, 0x95, 0x05, 0xfd, 0x7f, 0xc9, 0x04, 0x54, 0xa6, 0x01, 0x1f, 0x3d, 0xc9, 0x49, 0x88,
0x42, 0xe7, 0x51, 0xcd, 0x14, 0x68, 0x8b, 0xe8, 0x15, 0x3b, 0x44, 0x8f, 0x78, 0x56, 0x74, 0x28,
0xf7, 0x26, 0x8a, 0x26, 0xfe, 0x7e, 0x91, 0x3a, 0x40, 0xf9, 0xcc, 0x97, 0xd3, 0x87, 0x94, 0x59,
0x5a, 0x38, 0x31, 0x3a, 0x14, 0xff, 0x5e, 0xcb, 0x01, 0x6a, 0x64, 0x16, 0x3b, 0x95, 0x2c, 0x50,
0x11, 0x07, 0x94, 0xea, 0x38, 0x09, 0x7e, 0xc8, 0x7d, 0x42, 0xc9, 0x7c, 0x82, 0xfa, 0x92, 0xba,
0x41, 0x7d, 0xe2, 0xba, 0x57, 0xaa, 0x82, 0x7a, 0x71, 0x21, 0x90, 0x96, 0x0a, 0xa2, 0xe4, 0x3b,
0xe3, 0x5e, 0xa6, 0x51, 0x0f, 0xfb, 0x85, 0xa7, 0x66, 0xb2, 0x40, 0x89, 0x16, 0xff, 0x14, 0x7a,
0xe2, 0xbd, 0x14, 0x01, 0x0f, 0xa1, 0x80, 0x6e, 0x53, 0xf5, 0xf2, 0xb1, 0xe4, 0x2a, 0x57, 0x90,
0x4b, 0x32, 0x8e, 0xef, 0xc2, 0x7d, 0xfa, 0x7f, 0xed, 0xa1, 0xc6, 0x34, 0xde, 0x2a, 0xec, 0x8e,
0xf3, 0x46, 0xbe, 0x51, 0x8d, 0x8c, 0x0d, 0x02, 0x86, 0x00, 0x05, 0x70, 0x9f, 0xfa, 0x99, 0x92,
0xfd, 0xb8, 0x4a, 0x65, 0xb9, 0x02, 0x2f, 0x6b, 0xc9, 0xd3, 0x24, 0x50, 0x0d, 0x42, 0x23, 0xec,
0x22, 0x8c, 0x80, 0x10, 0xa5, 0x54, 0xbf, 0x52, 0x2d, 0xae, 0x4c, 0x3e, 0xa3, 0x8a, 0x29, 0xdd,
0x62, 0x4f, 0x3f, 0xdf, 0x92, 0xb3, 0xa1, 0x17, 0x26, 0x36, 0x57, 0x3a, 0x6a, 0xbf, 0xe8, 0x73,
0x01, 0xae, 0xbb, 0x7a, 0xf1, 0x92, 0x7c, 0x65, 0xb8, 0x9b, 0xa1, 0xe5, 0x65, 0x56, 0x20, 0xf2,
0x14, 0xd0, 0x61, 0xba, 0x72, 0x2a, 0x8b, 0x7c, 0xca, 0xb0, 0x94, 0x3e, 0xcc, 0x5e, 0xff, 0x01,
0x29, 0x35, 0x2e, 0xb3, 0x3a, 0xac, 0xcc, 0x57, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_connection_xpm[1] = {{ png, sizeof( png ), "delete_connection_xpm" }};
//EOF
+74
View File
@@ -0,0 +1,74 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0x8a, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x94, 0x4b, 0x48, 0x94,
0x51, 0x18, 0x86, 0xff, 0xc9, 0xeb, 0x98, 0xcd, 0x78, 0xbf, 0xdf, 0x66, 0x98, 0xd4, 0xca, 0xc0,
0x4d, 0x21, 0x64, 0x9b, 0xb2, 0x4d, 0x45, 0x66, 0xd0, 0x22, 0xcd, 0x34, 0x17, 0x2d, 0x22, 0x83,
0x0a, 0x42, 0x02, 0xa1, 0x56, 0x49, 0x5a, 0x4a, 0xb4, 0x28, 0xa3, 0x50, 0x43, 0x17, 0x82, 0xda,
0xa2, 0x20, 0x53, 0xcb, 0x91, 0x1c, 0xcc, 0x8d, 0x82, 0x31, 0xc4, 0x78, 0xc3, 0x48, 0x62, 0xb2,
0x9c, 0x9b, 0x46, 0x5e, 0xbf, 0xde, 0x6f, 0x3c, 0x3f, 0x4d, 0xe3, 0x8c, 0x9a, 0xb5, 0x09, 0x3a,
0xf0, 0xf2, 0xff, 0xe7, 0xf6, 0x3d, 0xe7, 0x7c, 0xe7, 0x3d, 0x47, 0x92, 0x36, 0x51, 0x88, 0x28,
0x6b, 0x7c, 0x7c, 0xfc, 0xcb, 0xe4, 0xe4, 0xe4, 0x07, 0xfc, 0xa7, 0xb9, 0xf5, 0xed, 0xfa, 0x88,
0x32, 0x36, 0x36, 0x36, 0x85, 0xff, 0x3d, 0xd2, 0x66, 0x0b, 0x43, 0x06, 0x07, 0x07, 0x1d, 0x91,
0x21, 0x21, 0xa4, 0x4d, 0x48, 0x20, 0x04, 0x34, 0xcb, 0x30, 0x86, 0x8c, 0x8c, 0x8c, 0x4c, 0x25,
0xc7, 0xc6, 0x52, 0x74, 0x68, 0x28, 0x0d, 0x0d, 0x0d, 0xd9, 0x37, 0x05, 0x73, 0x85, 0x5c, 0x8e,
0x8c, 0xa4, 0xfc, 0xb0, 0x30, 0xd2, 0xc6, 0xc7, 0xcb, 0xb0, 0xbc, 0xe1, 0xe1, 0x61, 0x27, 0xa4,
0x38, 0x3c, 0x9c, 0x2e, 0x46, 0x44, 0x6c, 0x0e, 0x86, 0xc1, 0x6a, 0xa3, 0xd1, 0x68, 0x63, 0xc8,
0x15, 0x40, 0x66, 0xd3, 0xd2, 0xc8, 0xae, 0xd3, 0x51, 0x3e, 0xef, 0x0c, 0x30, 0xbd, 0x5e, 0x4f,
0x0c, 0x29, 0x42, 0xdd, 0xae, 0xd1, 0xd0, 0x0c, 0xfa, 0x64, 0x98, 0xc9, 0x64, 0xb2, 0xfc, 0x0e,
0x28, 0xb2, 0xbf, 0xbf, 0x7f, 0x2e, 0x28, 0x20, 0x80, 0x6a, 0x62, 0x62, 0x9c, 0x81, 0x66, 0x52,
0x52, 0xc8, 0x96, 0x98, 0x48, 0xf9, 0x2a, 0x15, 0xf1, 0x90, 0x33, 0xf8, 0x5a, 0x01, 0x75, 0x24,
0x25, 0xd1, 0x8c, 0x56, 0x4b, 0x95, 0xd1, 0xd1, 0xb4, 0x15, 0xe3, 0x07, 0x06, 0x06, 0xbe, 0x7b,
0x8a, 0x79, 0x0f, 0x1a, 0x81, 0xf2, 0x5c, 0xda, 0x0c, 0x50, 0x2d, 0x60, 0xb9, 0x9d, 0x9d, 0x9d,
0x0b, 0x3c, 0xb9, 0x06, 0xbb, 0x72, 0x00, 0x62, 0xc7, 0x2e, 0x2c, 0x51, 0x51, 0xd4, 0x0c, 0x88,
0x05, 0x6d, 0x76, 0x2c, 0xc2, 0x01, 0xd8, 0x2d, 0xa4, 0x2f, 0x38, 0x30, 0x90, 0xba, 0xbb, 0xbb,
0xe7, 0x31, 0xef, 0xa8, 0x27, 0x50, 0x33, 0xb4, 0x0c, 0x2d, 0x42, 0x25, 0xa2, 0x6d, 0x12, 0x7a,
0x0b, 0x6d, 0x67, 0x18, 0xd2, 0x34, 0xbf, 0x4d, 0xa9, 0xa4, 0x2a, 0xa4, 0xc9, 0x06, 0x88, 0x15,
0x67, 0x65, 0x55, 0xab, 0x9d, 0x5f, 0xae, 0xd7, 0xa0, 0x9d, 0x21, 0x5d, 0x5d, 0x5d, 0x5e, 0x21,
0x32, 0xc8, 0x01, 0x3d, 0x13, 0xc0, 0xab, 0x02, 0xf4, 0x0e, 0xca, 0x12, 0x69, 0xbc, 0x54, 0x57,
0x57, 0x47, 0x0a, 0xfc, 0x1a, 0x10, 0x94, 0x21, 0x96, 0xe0, 0x60, 0xb2, 0xe2, 0x3c, 0xf4, 0x90,
0x42, 0xa1, 0xa0, 0xc6, 0xc6, 0x46, 0x0c, 0xa3, 0xd2, 0xb5, 0x8e, 0x43, 0x06, 0xe5, 0x43, 0x4f,
0x5c, 0x76, 0xe7, 0x04, 0x61, 0xf2, 0x4e, 0xbe, 0x23, 0x9a, 0xb8, 0x38, 0x2a, 0x14, 0xe9, 0x62,
0x80, 0x95, 0x77, 0x87, 0x74, 0x59, 0x71, 0x2e, 0x05, 0x68, 0x4f, 0x46, 0x0a, 0xe1, 0x42, 0x76,
0x63, 0xfa, 0x7a, 0xa0, 0x13, 0x50, 0x00, 0x74, 0x1f, 0x5a, 0x62, 0x50, 0x59, 0x59, 0xd9, 0x29,
0xd9, 0xc2, 0xec, 0x2e, 0x3e, 0x78, 0x3b, 0x02, 0xdb, 0x00, 0x1b, 0x06, 0x84, 0xff, 0xed, 0x58,
0x80, 0x0d, 0x66, 0x28, 0x10, 0x6e, 0xc4, 0xa2, 0x3e, 0x7b, 0x83, 0xb9, 0x82, 0xb8, 0xf8, 0x41,
0x5f, 0x55, 0x2a, 0x95, 0x11, 0x90, 0x69, 0x27, 0x04, 0x67, 0xc1, 0x16, 0x66, 0x77, 0xd9, 0xf9,
0xe0, 0x11, 0x74, 0x0b, 0xd2, 0x55, 0x8d, 0x9d, 0xc9, 0x8e, 0x73, 0xa4, 0xa6, 0xd2, 0x69, 0xc0,
0x35, 0xe8, 0x9f, 0x98, 0x98, 0xf8, 0xe4, 0x09, 0x14, 0x0d, 0x95, 0xb9, 0x80, 0xb8, 0xec, 0xc8,
0xc8, 0xc8, 0xa8, 0xea, 0xe9, 0xe9, 0x59, 0xf2, 0xf3, 0xf1, 0xa1, 0x7a, 0xac, 0xda, 0x69, 0x6f,
0xc0, 0x64, 0x77, 0x55, 0x56, 0x56, 0x92, 0xec, 0xc6, 0x59, 0x40, 0xf8, 0x9e, 0x3d, 0xc2, 0xa2,
0xfc, 0x7d, 0x7d, 0xc9, 0x60, 0x30, 0x2c, 0x78, 0x4b, 0x9f, 0x16, 0x8a, 0x77, 0xa9, 0xfb, 0x42,
0xa9, 0x78, 0xdb, 0x4a, 0x5b, 0x5a, 0x5a, 0x96, 0x03, 0xfd, 0xfc, 0xe8, 0x31, 0x82, 0xdc, 0x45,
0xaa, 0x5c, 0xdc, 0x75, 0x53, 0x76, 0xe3, 0x6d, 0x9c, 0x4f, 0x03, 0x16, 0x13, 0xe4, 0xef, 0x4f,
0xad, 0xad, 0xad, 0x4b, 0xe8, 0x2b, 0xe4, 0xeb, 0x71, 0x0c, 0x32, 0x4a, 0xd2, 0x85, 0x03, 0xa8,
0x6c, 0xd9, 0xc0, 0xc5, 0x2d, 0x91, 0x61, 0x0c, 0xe1, 0xe0, 0x68, 0x3b, 0x22, 0xfa, 0x8e, 0x03,
0xea, 0xbc, 0x67, 0x4a, 0xf4, 0xb7, 0xb5, 0x3d, 0xa5, 0x8a, 0x8a, 0x37, 0xad, 0xe8, 0x52, 0x32,
0xa8, 0x58, 0x92, 0x1e, 0xe2, 0x66, 0xef, 0xaf, 0x46, 0x25, 0xd8, 0x2d, 0x6e, 0x92, 0x90, 0x3b,
0xec, 0x6c, 0x7b, 0x7b, 0xfb, 0x52, 0x5f, 0x5f, 0xdf, 0x9c, 0xd9, 0x6c, 0xe6, 0x14, 0x67, 0x43,
0x0a, 0xd1, 0x97, 0xdb, 0xdb, 0xdb, 0x3b, 0xdf, 0xd1, 0xd1, 0xb1, 0x58, 0x58, 0xf8, 0x1a, 0x71,
0xcf, 0xbf, 0x14, 0xd9, 0x59, 0x05, 0x62, 0x15, 0x41, 0x5d, 0x90, 0xd9, 0x03, 0x5c, 0x86, 0xa5,
0x43, 0x1a, 0x51, 0x7d, 0x01, 0x8d, 0x42, 0x37, 0x20, 0x1d, 0xda, 0xb5, 0x4d, 0x4d, 0xa3, 0xd9,
0x2b, 0x71, 0x57, 0x81, 0x32, 0x9f, 0xa3, 0xf2, 0x0a, 0xfa, 0xc6, 0x71, 0x84, 0xfa, 0xa1, 0x93,
0x1b, 0x50, 0x83, 0xcb, 0x1c, 0x5a, 0x81, 0xc6, 0xd6, 0x7a, 0x01, 0xe9, 0x2c, 0x6e, 0x83, 0x59,
0xb3, 0xe2, 0x55, 0x30, 0x41, 0xef, 0xd7, 0xd0, 0xd4, 0xea, 0xb9, 0x21, 0x8e, 0x95, 0xb8, 0xe7,
0xf4, 0x6e, 0xa0, 0xbd, 0xf5, 0xa8, 0x5c, 0x83, 0x3a, 0xa0, 0x69, 0x31, 0x81, 0x21, 0xe5, 0xe2,
0x81, 0xcd, 0x81, 0x0e, 0x7a, 0x50, 0x8e, 0x48, 0x1d, 0x89, 0xfb, 0xd7, 0xbb, 0xf2, 0x30, 0x27,
0x97, 0x7b, 0x01, 0xfd, 0x62, 0x06, 0x85, 0x38, 0x60, 0x6c, 0x5f, 0xda, 0xbd, 0x8e, 0x11, 0x95,
0xe2, 0xf5, 0x38, 0x0c, 0xf9, 0xfc, 0x6c, 0x7e, 0x10, 0xeb, 0x25, 0x75, 0x1e, 0x5d, 0xf7, 0x07,
0xe5, 0x3f, 0xe8, 0x1f, 0x04, 0xdd, 0x81, 0x6b, 0xb2, 0xf6, 0x49, 0x92, 0x3f, 0x5b, 0x38, 0xf0,
0xef, 0x81, 0xae, 0xe3, 0xdd, 0x3c, 0x94, 0x29, 0x49, 0x11, 0xfc, 0x0e, 0xaa, 0x7f, 0x00, 0x16,
0xeb, 0x70, 0x69, 0xbf, 0x1f, 0x42, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_dimension_xpm[1] = {{ png, sizeof( png ), "delete_dimension_xpm" }};
//EOF
+71
View File
@@ -0,0 +1,71 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0x5e, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xd5, 0x94, 0x59, 0x48, 0x54,
0x61, 0x14, 0xc7, 0xdd, 0x18, 0x9b, 0xdc, 0x77, 0x67, 0xdc, 0x37, 0x94, 0x08, 0x35, 0xd2, 0x97,
0x7c, 0x8a, 0x82, 0x16, 0x7d, 0xb2, 0x14, 0xd1, 0x54, 0x88, 0x32, 0x49, 0x2d, 0x24, 0x0a, 0xa4,
0xa4, 0x1e, 0x0a, 0xa2, 0x87, 0x1e, 0x2a, 0x8c, 0xe8, 0xa9, 0x90, 0xd2, 0x0a, 0x53, 0x06, 0xea,
0x35, 0x0a, 0x69, 0x1b, 0x88, 0x74, 0xc4, 0x10, 0x1a, 0x17, 0x94, 0x12, 0x5a, 0x66, 0x51, 0x1a,
0xab, 0xe9, 0xf4, 0x3f, 0xb7, 0x73, 0xe3, 0x7a, 0x99, 0xd1, 0x1c, 0x9f, 0xfa, 0xe0, 0xcf, 0x5c,
0xce, 0x77, 0xbf, 0xf3, 0xbb, 0xe7, 0x9c, 0xff, 0x37, 0x41, 0x41, 0x01, 0x2c, 0x22, 0x32, 0x2c,
0x2d, 0x2d, 0xdd, 0x1d, 0x1d, 0x1d, 0x75, 0xe1, 0xb9, 0x56, 0xb7, 0x67, 0x9e, 0x9f, 0x9f, 0x7f,
0x3b, 0x39, 0x39, 0x39, 0x8d, 0xe7, 0xcd, 0x41, 0x81, 0x2e, 0x86, 0x78, 0x3c, 0x1e, 0x4b, 0x75,
0x55, 0x15, 0x85, 0x85, 0x86, 0x52, 0x7f, 0x7f, 0xbf, 0x17, 0xb1, 0x3a, 0x15, 0x32, 0x33, 0x33,
0x63, 0x2f, 0xca, 0xc9, 0xa1, 0x94, 0xb8, 0x38, 0x1a, 0x19, 0x19, 0xf9, 0x1c, 0x10, 0x4c, 0x0b,
0xd9, 0x12, 0x13, 0x43, 0xb7, 0xcc, 0x66, 0x8a, 0x34, 0x18, 0x54, 0x58, 0x87, 0x0a, 0x69, 0x4e,
0x4c, 0xa4, 0x33, 0xc9, 0xc9, 0x81, 0xc3, 0x70, 0xa0, 0xbb, 0xa1, 0xa6, 0x86, 0x4a, 0x01, 0x99,
0xcb, 0xcf, 0xa7, 0xc5, 0x82, 0x02, 0x1a, 0x34, 0x99, 0x14, 0x58, 0x4f, 0x4f, 0x0f, 0x15, 0x65,
0x67, 0x53, 0x13, 0x92, 0xbb, 0x00, 0x5b, 0xc0, 0xbe, 0x0a, 0x9b, 0x9a, 0x9a, 0x9a, 0x5e, 0x2b,
0xa8, 0xe3, 0x64, 0x67, 0x27, 0x65, 0x45, 0x46, 0xd2, 0x38, 0x92, 0x2e, 0x20, 0xa1, 0x3b, 0x23,
0x83, 0x1e, 0x26, 0x24, 0xd0, 0x06, 0xb4, 0xb1, 0x11, 0x1f, 0xe0, 0x40, 0x95, 0x1c, 0x63, 0x58,
0x33, 0xe2, 0x5c, 0x21, 0xcf, 0x6c, 0xad, 0xa0, 0x60, 0xaf, 0xd7, 0x7b, 0xed, 0x78, 0x7b, 0xbb,
0x02, 0x1b, 0x43, 0x52, 0x17, 0x2a, 0x72, 0xe2, 0xcb, 0xc7, 0xf1, 0xe5, 0x0e, 0xb4, 0xcc, 0x95,
0x92, 0x42, 0x8e, 0xb4, 0x34, 0xa5, 0x32, 0xae, 0x90, 0xdb, 0xc9, 0xb3, 0x0b, 0x64, 0x4e, 0x7f,
0x60, 0x6d, 0x6d, 0x94, 0x15, 0x11, 0x41, 0x36, 0x24, 0x77, 0xc4, 0xc7, 0x93, 0x23, 0x3a, 0x9a,
0x1c, 0xb1, 0xb1, 0xf4, 0x35, 0x29, 0x49, 0xa9, 0x6c, 0x5d, 0x10, 0x0d, 0x2c, 0x6d, 0x6e, 0x6e,
0xce, 0x15, 0x8b, 0xaa, 0xce, 0x43, 0x0a, 0x20, 0x2a, 0x4a, 0xf9, 0x1d, 0x97, 0x36, 0xf2, 0xcc,
0xb8, 0xd5, 0xeb, 0x81, 0x98, 0x67, 0x67, 0x67, 0xdf, 0x6f, 0xca, 0xcb, 0xa3, 0x46, 0x06, 0xa0,
0x55, 0x4e, 0x24, 0xe7, 0xaa, 0x9c, 0xdc, 0xba, 0xd4, 0x54, 0x1a, 0xc4, 0x2f, 0x1b, 0xa4, 0xb7,
0xb7, 0xf7, 0xaf, 0xf5, 0xf5, 0x2b, 0x0a, 0xda, 0xaa, 0xd3, 0x46, 0x0d, 0xc4, 0xa4, 0x5a, 0xb8,
0x89, 0x13, 0xf3, 0xd0, 0x31, 0x27, 0x07, 0x60, 0x17, 0x50, 0xd1, 0x18, 0x66, 0xe5, 0x4e, 0x4f,
0x27, 0x77, 0x56, 0x16, 0x0d, 0x2e, 0xb7, 0xfe, 0xb2, 0x4b, 0xcd, 0xbd, 0x5c, 0xe2, 0x7c, 0x3a,
0x1d, 0xd2, 0x80, 0x2e, 0x6f, 0x2b, 0x2b, 0xa3, 0xdd, 0x98, 0x81, 0x0b, 0xf6, 0x5d, 0xc0, 0x1c,
0x9c, 0x99, 0x99, 0xd4, 0x84, 0xca, 0x62, 0xd0, 0x42, 0x9e, 0xd9, 0x18, 0x40, 0x0b, 0xa8, 0x76,
0xb1, 0xb0, 0x50, 0xb9, 0x67, 0x61, 0x21, 0x21, 0x64, 0xb3, 0xd9, 0x9c, 0x5a, 0x90, 0x09, 0xf2,
0xf8, 0x00, 0x3d, 0xd6, 0x80, 0xf6, 0xf6, 0xf5, 0xf5, 0x79, 0x23, 0xc3, 0xc3, 0xc9, 0x82, 0x84,
0x0c, 0xe3, 0xca, 0x78, 0xf0, 0x13, 0x13, 0x13, 0xa4, 0x18, 0x84, 0xad, 0x9f, 0x9b, 0xab, 0xdc,
0x33, 0xbe, 0xd4, 0xd5, 0x95, 0x95, 0xc4, 0x7f, 0x57, 0xfa, 0xd6, 0x99, 0xa4, 0x5d, 0x33, 0x1a,
0x10, 0x57, 0x19, 0xab, 0x81, 0xd5, 0xab, 0xb0, 0x5d, 0xec, 0x2e, 0xb4, 0x71, 0x78, 0x78, 0x98,
0x4a, 0x4a, 0x4a, 0xae, 0xda, 0xed, 0xf6, 0x7e, 0xd5, 0xfa, 0xa5, 0x70, 0x21, 0x43, 0xac, 0x56,
0xeb, 0x04, 0xff, 0xa3, 0xf8, 0x9a, 0x53, 0x81, 0x00, 0x3e, 0x42, 0xcf, 0xe4, 0xb9, 0x49, 0x67,
0x08, 0x05, 0x56, 0x51, 0x5e, 0x4e, 0xf8, 0x63, 0xfd, 0x62, 0x46, 0x8b, 0x10, 0x6e, 0x55, 0xad,
0xcf, 0x97, 0xfa, 0x40, 0x6d, 0x2d, 0x0d, 0x0c, 0x0c, 0x90, 0xd1, 0x68, 0x1c, 0xf2, 0x67, 0xac,
0x2e, 0x49, 0x7e, 0x1d, 0x3a, 0x26, 0xcf, 0x43, 0x3e, 0xdc, 0xb7, 0x87, 0x67, 0x56, 0x5c, 0x5c,
0x7c, 0x49, 0xde, 0x69, 0x55, 0xef, 0x19, 0xdb, 0xda, 0x62, 0xb1, 0x0c, 0x19, 0x60, 0x06, 0x84,
0x6e, 0xfb, 0x03, 0xbd, 0x92, 0x83, 0x3b, 0xa1, 0x34, 0xe8, 0x97, 0xcc, 0x2e, 0xda, 0xcf, 0xfb,
0xdd, 0xf2, 0x7e, 0x2f, 0xd4, 0x02, 0xb5, 0x41, 0x37, 0xa0, 0x6f, 0xd0, 0x4f, 0xa8, 0xc2, 0xd7,
0xa1, 0x74, 0x49, 0xfc, 0x09, 0x0a, 0x93, 0xd8, 0x4b, 0x49, 0x54, 0xb7, 0x0a, 0xc8, 0x97, 0x5e,
0x68, 0xf2, 0x2c, 0x5b, 0x1d, 0xf2, 0xc2, 0x1b, 0xf9, 0xba, 0x16, 0x71, 0x1d, 0xc7, 0xee, 0x07,
0x00, 0x62, 0x3d, 0x80, 0x82, 0xf5, 0x87, 0x9e, 0xac, 0x70, 0x60, 0x11, 0x8a, 0x58, 0x01, 0xd4,
0xaa, 0xbb, 0xf8, 0xf5, 0x90, 0x5b, 0xf6, 0x76, 0x68, 0x0f, 0x24, 0x42, 0x3f, 0x56, 0xf9, 0xba,
0x7d, 0xff, 0x08, 0x52, 0xd7, 0x69, 0xd9, 0x3b, 0xab, 0x0d, 0x1e, 0x96, 0xe0, 0x3d, 0x1f, 0x07,
0xce, 0xc9, 0xde, 0x9d, 0x35, 0x82, 0x54, 0x07, 0x9f, 0x52, 0x03, 0x0d, 0xd0, 0x3b, 0x09, 0x3e,
0x87, 0x8e, 0x6a, 0x5e, 0xde, 0x0f, 0x3d, 0x92, 0x3d, 0xb7, 0x24, 0x0e, 0x95, 0xbd, 0x83, 0xd0,
0x6b, 0xd9, 0x7b, 0x2a, 0x6e, 0x63, 0xdd, 0x94, 0xd9, 0x7e, 0x97, 0xbd, 0xed, 0x6a, 0xb2, 0x0f,
0x3e, 0xda, 0xa4, 0xce, 0x63, 0xd2, 0xc7, 0x5e, 0xa9, 0x0c, 0x78, 0xb5, 0x56, 0xb3, 0x06, 0xb4,
0x66, 0xe8, 0x12, 0x2b, 0x5a, 0xe5, 0x1e, 0x5d, 0xd1, 0x54, 0x74, 0x42, 0xaa, 0xb4, 0x8a, 0xb8,
0x7d, 0x46, 0xd9, 0xbb, 0x28, 0xf6, 0xb7, 0xea, 0xc4, 0x39, 0xfa, 0xa0, 0x23, 0xfe, 0xec, 0xfd,
0xff, 0xaf, 0xdf, 0x05, 0xe7, 0x4a, 0x51, 0xc1, 0x6d, 0x5e, 0xec, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_field_xpm[1] = {{ png, sizeof( png ), "delete_field_xpm" }};
//EOF
+101
View File
@@ -0,0 +1,101 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x05, 0x38, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x8d, 0x95, 0x6d, 0x50, 0x54,
0x75, 0x14, 0xc6, 0x17, 0x16, 0x45, 0x90, 0x78, 0x11, 0x71, 0x44, 0x40, 0x91, 0x5d, 0x61, 0x18,
0xd8, 0x25, 0xf4, 0x03, 0xa9, 0x35, 0x18, 0x4d, 0xdf, 0xc2, 0x20, 0x35, 0xb3, 0x1c, 0x3f, 0x94,
0x4e, 0x33, 0xd9, 0xd4, 0x34, 0x8d, 0x43, 0x46, 0x4e, 0x6f, 0x4e, 0x63, 0x4e, 0x4d, 0x36, 0x35,
0x69, 0x9a, 0x68, 0x35, 0x59, 0x41, 0x96, 0xf9, 0x81, 0x58, 0xc5, 0x77, 0xe5, 0x45, 0x79, 0x87,
0x5d, 0x96, 0x17, 0x59, 0x75, 0x05, 0xd4, 0x15, 0xd8, 0x65, 0x41, 0x42, 0x83, 0xa7, 0xe7, 0xac,
0x77, 0xed, 0xb6, 0x2e, 0xe2, 0x7f, 0xe6, 0x37, 0xfc, 0xef, 0xbd, 0xdc, 0xf3, 0xdc, 0x73, 0xce,
0x73, 0xfe, 0xab, 0xd1, 0xfc, 0xb7, 0x36, 0x90, 0x6f, 0x7d, 0xd0, 0x6b, 0x26, 0x58, 0x00, 0xd6,
0xd6, 0xd5, 0xd5, 0xb9, 0x6f, 0xdf, 0xbe, 0x5d, 0xc4, 0xbd, 0x56, 0x75, 0xff, 0x91, 0x81, 0x81,
0x81, 0xa3, 0x66, 0xb3, 0xf9, 0x26, 0xf7, 0xd9, 0xbe, 0xef, 0x05, 0x92, 0x7f, 0xe4, 0xff, 0x7c,
0xd8, 0x3a, 0x81, 0xc8, 0xba, 0x7d, 0x45, 0x45, 0xe3, 0x81, 0x01, 0x01, 0x58, 0x9d, 0x9f, 0x8f,
0xd1, 0xd1, 0xd1, 0x9f, 0x45, 0x4c, 0x44, 0xfa, 0xfb, 0xfb, 0x2b, 0x97, 0x2c, 0x5c, 0x88, 0xd0,
0xa9, 0x53, 0x51, 0x5e, 0x5e, 0x3e, 0xc2, 0x7b, 0xcb, 0x7c, 0xdf, 0x7f, 0x81, 0x6c, 0x23, 0x36,
0x95, 0x50, 0x27, 0x09, 0xf0, 0x27, 0x32, 0x23, 0x24, 0x04, 0x7f, 0x25, 0x24, 0xe0, 0x89, 0x19,
0x33, 0xb0, 0x32, 0x37, 0x57, 0xc4, 0x7e, 0x71, 0xb9, 0x5c, 0x95, 0xd9, 0x59, 0x59, 0xc8, 0x8f,
0x8e, 0x46, 0x71, 0x5c, 0x1c, 0xa2, 0x42, 0x43, 0x71, 0xe4, 0xc8, 0x91, 0x11, 0x7f, 0x99, 0x85,
0x90, 0x41, 0x32, 0x4c, 0xda, 0x14, 0xb1, 0x2c, 0x95, 0xc8, 0xcc, 0xb2, 0xb2, 0xb2, 0x3b, 0xa1,
0x53, 0xa6, 0xe0, 0xec, 0xbc, 0x79, 0x18, 0x4e, 0x4e, 0x46, 0x6f, 0x62, 0x22, 0xb2, 0x22, 0x22,
0x3c, 0x99, 0x49, 0x26, 0xcf, 0x45, 0x45, 0x61, 0x80, 0xcf, 0x86, 0x74, 0x3a, 0x1c, 0x98, 0x33,
0xc7, 0x93, 0x19, 0xcb, 0xe8, 0xf0, 0x15, 0x5a, 0xa9, 0x04, 0xff, 0x95, 0xbc, 0xa7, 0xec, 0xbf,
0x50, 0x09, 0x05, 0xdb, 0x6c, 0xb6, 0x4e, 0x1d, 0xbf, 0x76, 0xd3, 0xac, 0x59, 0x18, 0x4a, 0x4a,
0x82, 0x7b, 0xee, 0x5c, 0x74, 0xc7, 0xc6, 0x22, 0x2b, 0x3c, 0x1c, 0x2b, 0x28, 0xd8, 0xcf, 0xbd,
0x3b, 0x3e, 0x1e, 0x4e, 0x8a, 0xad, 0x60, 0x66, 0x22, 0xee, 0x74, 0x3a, 0x8f, 0xfa, 0x0a, 0x95,
0x28, 0xc1, 0xf3, 0x88, 0x8e, 0x8c, 0x93, 0x1e, 0xa2, 0x6e, 0x76, 0x7c, 0x57, 0x57, 0x97, 0x4d,
0xc7, 0x60, 0x9b, 0x66, 0xce, 0xc4, 0x20, 0xbf, 0xda, 0x45, 0x51, 0x17, 0x83, 0x7a, 0xe0, 0xbe,
0x9f, 0xf7, 0x24, 0xb3, 0x25, 0x99, 0x99, 0x90, 0x9e, 0x49, 0xef, 0xd4, 0x22, 0x72, 0x71, 0x8b,
0xb8, 0xc8, 0x34, 0xe5, 0xde, 0x05, 0x45, 0x38, 0xc7, 0xa7, 0x4f, 0x1e, 0xb1, 0x24, 0x66, 0x56,
0xc8, 0x80, 0x22, 0xe0, 0x64, 0x46, 0x4e, 0x66, 0xe4, 0xa2, 0xb8, 0x64, 0x36, 0x91, 0x88, 0xac,
0x17, 0x95, 0xa0, 0x76, 0x95, 0xbd, 0x9b, 0x94, 0x7b, 0xbb, 0x7d, 0x84, 0xc4, 0x5d, 0x55, 0x8b,
0x19, 0x6c, 0x6d, 0x64, 0x24, 0x5c, 0x34, 0x84, 0x47, 0x88, 0x7b, 0x67, 0x4c, 0x8c, 0xa7, 0x67,
0xcf, 0xe7, 0xe5, 0x79, 0x0c, 0xa2, 0xb6, 0xbe, 0x77, 0x1d, 0xf6, 0x63, 0x6f, 0x2f, 0xfd, 0x24,
0xd8, 0x2b, 0xe2, 0x75, 0x57, 0x1e, 0xb3, 0x91, 0x9e, 0xb8, 0x18, 0xdc, 0x53, 0x36, 0xfe, 0x1d,
0x9c, 0x3d, 0x1b, 0xd7, 0x99, 0xe9, 0xe3, 0x7c, 0xb6, 0x6a, 0xf9, 0xf2, 0x7b, 0xd6, 0xf7, 0x8a,
0x44, 0x92, 0xbf, 0x95, 0x80, 0xdb, 0x7c, 0xb0, 0x2a, 0x62, 0xb9, 0xf2, 0x02, 0x33, 0x39, 0x2b,
0x0d, 0x96, 0x46, 0x8b, 0xbb, 0xa4, 0xf1, 0x22, 0x26, 0x99, 0xbd, 0xcb, 0xe0, 0x72, 0x3d, 0x44,
0x27, 0xf6, 0xd2, 0x28, 0x59, 0xbc, 0x16, 0x37, 0xca, 0x50, 0x7b, 0x87, 0xf5, 0x0d, 0x25, 0x58,
0x29, 0x89, 0x56, 0x65, 0x39, 0x95, 0x7c, 0xae, 0x3c, 0xfb, 0xbd, 0xb8, 0xb8, 0x58, 0x4f, 0xc6,
0xa7, 0x05, 0x05, 0xc1, 0x3c, 0x7f, 0xbe, 0xc7, 0x75, 0x22, 0x26, 0x8d, 0x97, 0x32, 0x26, 0xd1,
0x04, 0x62, 0x90, 0x21, 0xbd, 0x1e, 0xc3, 0x29, 0x29, 0x9e, 0x39, 0x93, 0xa1, 0xae, 0xad, 0xad,
0x95, 0x91, 0xd1, 0xec, 0xf1, 0x29, 0x93, 0x9b, 0x84, 0x2b, 0x42, 0x16, 0x9f, 0x67, 0x97, 0x99,
0xd5, 0x87, 0x5b, 0x36, 0x6f, 0xc6, 0xdc, 0xb0, 0x30, 0x34, 0x51, 0x6c, 0x35, 0x03, 0x4b, 0xe3,
0xfb, 0xfa, 0xfa, 0xaa, 0xc4, 0x20, 0x7a, 0x06, 0x7f, 0x93, 0xce, 0xab, 0x60, 0x56, 0x31, 0x1c,
0xd8, 0xfd, 0x1c, 0x6e, 0x39, 0xae, 0x24, 0x58, 0x81, 0x52, 0x36, 0x6f, 0xb0, 0x46, 0x95, 0xeb,
0xfe, 0x50, 0x1d, 0x4d, 0x63, 0xa4, 0x5c, 0xe9, 0xd3, 0x47, 0x85, 0x05, 0x05, 0x08, 0xd6, 0x6a,
0x3d, 0x73, 0xe2, 0x75, 0xd7, 0x3d, 0xeb, 0xb3, 0x47, 0x21, 0x1c, 0xea, 0x7d, 0x77, 0x45, 0xd6,
0xdd, 0x77, 0x86, 0x75, 0xe8, 0xf5, 0xc1, 0x4d, 0x06, 0x43, 0xd4, 0x44, 0xc8, 0x73, 0x95, 0xf3,
0x3e, 0x28, 0x29, 0x29, 0x19, 0x97, 0x9e, 0xa9, 0x2d, 0x2c, 0x62, 0x32, 0xd4, 0x72, 0x82, 0xf8,
0x15, 0xf1, 0xd4, 0xc9, 0x68, 0x7c, 0xa5, 0xd5, 0x68, 0xc4, 0x83, 0xb0, 0x18, 0x0c, 0x37, 0x5b,
0x0c, 0x86, 0xe2, 0x13, 0xa9, 0xa9, 0x8f, 0x39, 0x1c, 0x8e, 0x39, 0xfe, 0xec, 0x2b, 0x27, 0x88,
0x1c, 0x57, 0x13, 0x9d, 0xfc, 0x9a, 0x16, 0xa3, 0x71, 0x7d, 0x7b, 0x76, 0x36, 0x46, 0x2e, 0xd9,
0xe1, 0xee, 0xb4, 0xc3, 0xd9, 0x66, 0x47, 0x9f, 0xc5, 0x8e, 0x1b, 0xcd, 0x76, 0xf4, 0xd4, 0xdb,
0x71, 0xe5, 0xb4, 0x15, 0x5d, 0x3f, 0x99, 0xd0, 0xf6, 0xf2, 0xeb, 0x22, 0x38, 0x56, 0x9a, 0x92,
0xb2, 0x45, 0xb1, 0x7d, 0x80, 0x66, 0xb2, 0x65, 0x59, 0xb4, 0x28, 0xb6, 0xd5, 0x60, 0x28, 0xe2,
0x57, 0xee, 0x37, 0x1b, 0x0c, 0x15, 0x1d, 0x39, 0x39, 0xb8, 0x75, 0x0b, 0x70, 0xbb, 0x81, 0x81,
0x01, 0xc0, 0xe1, 0x00, 0x7a, 0x7b, 0x81, 0xab, 0x57, 0x81, 0x4b, 0x97, 0x80, 0xce, 0x4e, 0xc0,
0x6a, 0x05, 0xcc, 0xdb, 0x7f, 0x00, 0x2b, 0x30, 0xfe, 0x4e, 0x5c, 0xdc, 0xdb, 0xca, 0x61, 0xfc,
0xe0, 0x65, 0x4e, 0x4b, 0x9b, 0xcd, 0x4c, 0xf6, 0x1c, 0x4f, 0x4d, 0x3d, 0x58, 0x91, 0x96, 0xd6,
0xd8, 0xfe, 0x64, 0x0e, 0x06, 0x07, 0xc1, 0x06, 0x03, 0x37, 0x6e, 0x00, 0x3d, 0x3d, 0x80, 0xdd,
0x0e, 0xd8, 0x6c, 0x40, 0x47, 0x07, 0xd0, 0xda, 0x0a, 0x34, 0x37, 0x03, 0x0d, 0x0d, 0x40, 0xcb,
0x9a, 0x57, 0x71, 0x38, 0x39, 0xb9, 0x9b, 0x61, 0x16, 0x93, 0x20, 0xcd, 0x43, 0x2c, 0x49, 0xff,
0xa5, 0xc2, 0xb8, 0xb8, 0xdf, 0x44, 0xa8, 0xaf, 0x0f, 0xb8, 0x7e, 0x1d, 0xe8, 0xee, 0x06, 0xae,
0x5c, 0x01, 0xba, 0xba, 0x80, 0xf6, 0x76, 0xc0, 0x62, 0x01, 0x9a, 0x9a, 0x80, 0xfa, 0x7a, 0xe0,
0xc2, 0x05, 0xa0, 0xee, 0x93, 0x03, 0x52, 0xc2, 0xf1, 0x67, 0x22, 0x22, 0xf6, 0x1c, 0xd2, 0xe9,
0x96, 0xb4, 0x66, 0x64, 0x24, 0x4f, 0x26, 0x24, 0x35, 0x0e, 0x61, 0x46, 0x1b, 0xdb, 0x96, 0xe5,
0xe0, 0xda, 0xb5, 0xbb, 0xa5, 0xba, 0xcc, 0xa9, 0xb9, 0x78, 0x11, 0x68, 0x6b, 0x63, 0xa9, 0xcc,
0x40, 0x63, 0x23, 0x83, 0xd7, 0x01, 0xe7, 0xcf, 0x03, 0x15, 0x15, 0x40, 0xd5, 0xce, 0xd3, 0xff,
0x33, 0x0a, 0xcb, 0x6f, 0x56, 0x0e, 0x67, 0xed, 0x03, 0xd5, 0x68, 0xe1, 0x0d, 0x22, 0x24, 0xa5,
0x52, 0xf7, 0xa3, 0xa5, 0xe5, 0x6e, 0xa9, 0x6a, 0x6b, 0x81, 0xea, 0x6a, 0xe0, 0xdc, 0x39, 0xe0,
0xd4, 0x29, 0xee, 0xdf, 0xff, 0x11, 0xcd, 0x34, 0x45, 0x4c, 0x50, 0xd0, 0xc1, 0x70, 0xad, 0x76,
0xe7, 0xf4, 0xc0, 0xc0, 0x1d, 0x0c, 0xf3, 0x31, 0x49, 0x54, 0x4e, 0x9c, 0x89, 0x85, 0xac, 0xd9,
0x39, 0x7e, 0xfb, 0x51, 0x53, 0xc3, 0x0c, 0xaa, 0x80, 0xb3, 0x9c, 0x9a, 0x93, 0x27, 0x81, 0xe3,
0xe5, 0x63, 0x68, 0xcc, 0x5d, 0x8b, 0xe2, 0x05, 0x0b, 0xe4, 0xf7, 0xea, 0x7b, 0xf2, 0x2c, 0x59,
0x48, 0x8c, 0x64, 0xfa, 0x7d, 0x4e, 0xec, 0xc8, 0xcc, 0x8c, 0xb1, 0x66, 0x64, 0x6c, 0xb3, 0x64,
0x64, 0x7c, 0x6a, 0x36, 0x1a, 0xcb, 0x44, 0xc8, 0x5f, 0x3f, 0x2a, 0x39, 0xfb, 0x67, 0xce, 0x00,
0x27, 0x4e, 0x00, 0xc7, 0x8e, 0x8e, 0xe1, 0xfc, 0xc6, 0xed, 0x52, 0xaa, 0xb1, 0xa5, 0x61, 0x61,
0x26, 0x86, 0xf9, 0x92, 0xc4, 0x28, 0x86, 0xd0, 0xfa, 0xb5, 0x7b, 0x87, 0xd1, 0x18, 0x4f, 0x81,
0x3f, 0xab, 0xd2, 0xd2, 0x8e, 0xd5, 0xa4, 0xa7, 0xb7, 0x5b, 0x17, 0x2f, 0x85, 0x65, 0xaf, 0x09,
0xcd, 0xbb, 0x4d, 0x68, 0xdc, 0x65, 0x42, 0xfd, 0x37, 0x26, 0xd4, 0x7c, 0x65, 0x42, 0xf5, 0x0e,
0x13, 0x2a, 0x3f, 0x2b, 0x45, 0x75, 0xc1, 0x6e, 0x34, 0x3d, 0x9d, 0x8f, 0x06, 0x83, 0xe1, 0xce,
0x9a, 0xe8, 0xe8, 0x73, 0x0c, 0x21, 0x27, 0xf3, 0x2a, 0xef, 0xcf, 0xc8, 0x64, 0x4b, 0xe6, 0x60,
0xfd, 0x5b, 0xb1, 0xb1, 0x87, 0x1a, 0xd2, 0xd3, 0x47, 0xea, 0xd2, 0xd3, 0x47, 0xfd, 0x41, 0xb3,
0x0c, 0xd3, 0xce, 0x8e, 0xad, 0x09, 0x09, 0xe6, 0x79, 0xc1, 0xc1, 0x72, 0x0e, 0xee, 0x25, 0xaf,
0x91, 0xa8, 0x87, 0x1a, 0x5a, 0xaf, 0xeb, 0x48, 0x04, 0x79, 0x94, 0x7c, 0xad, 0x04, 0xf1, 0xc7,
0x77, 0x64, 0x17, 0x29, 0x24, 0x4f, 0x29, 0x27, 0xfd, 0xa4, 0x22, 0xff, 0x02, 0x58, 0x70, 0xe4,
0x4e, 0x94, 0xa5, 0x11, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
0x82,
};
const BITMAP_OPAQUE delete_glabel_xpm[1] = {{ png, sizeof( png ), "delete_glabel_xpm" }};
//EOF
+74
View File
@@ -0,0 +1,74 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0x96, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x95, 0x5b, 0x48, 0x54,
0x61, 0x10, 0xc7, 0x67, 0x75, 0x4b, 0xcd, 0xfb, 0x7a, 0xab, 0x34, 0xef, 0xe2, 0x43, 0x59, 0x14,
0x04, 0x05, 0x11, 0xf5, 0xd0, 0x53, 0x45, 0x42, 0x05, 0x11, 0x6d, 0x0f, 0x51, 0x78, 0xe9, 0xa2,
0x8f, 0x99, 0x52, 0x92, 0x3e, 0x54, 0xae, 0x19, 0xbd, 0x48, 0x11, 0x85, 0x42, 0x08, 0x0b, 0x42,
0x62, 0x94, 0x26, 0xf8, 0xd0, 0xcb, 0xaa, 0x98, 0x4b, 0x22, 0x11, 0x78, 0xa1, 0x82, 0x96, 0x42,
0xdb, 0xf6, 0x66, 0x5e, 0xd2, 0x9d, 0xfe, 0x73, 0x3c, 0xa7, 0x0e, 0xb6, 0x5b, 0x69, 0xec, 0x07,
0xb3, 0xe7, 0x3b, 0xfb, 0x9d, 0x33, 0xbf, 0xf9, 0xcf, 0x37, 0xf3, 0x1d, 0xa2, 0x55, 0x0c, 0x66,
0xde, 0x06, 0xcb, 0x0f, 0xb2, 0x66, 0x84, 0xed, 0x85, 0x99, 0xe8, 0x7f, 0x06, 0x1c, 0x54, 0xf5,
0xf6, 0xf6, 0xfa, 0xed, 0x76, 0xfb, 0x3c, 0xe6, 0xc7, 0x97, 0xad, 0x45, 0xfa, 0xfd, 0xfe, 0xe7,
0xad, 0xad, 0xad, 0x3c, 0x35, 0x35, 0xf5, 0x11, 0xf7, 0x05, 0xab, 0x85, 0x54, 0x5b, 0xad, 0x56,
0x36, 0x86, 0x87, 0x73, 0x7c, 0x74, 0x34, 0xf7, 0xf5, 0xf5, 0x2d, 0x68, 0x30, 0x15, 0xd2, 0x55,
0x5e, 0x5a, 0xca, 0x72, 0xbb, 0x7d, 0xcb, 0x16, 0x9e, 0x9c, 0x9c, 0x74, 0xac, 0x18, 0xa6, 0x87,
0x5c, 0x4f, 0x49, 0x61, 0x73, 0x62, 0xa2, 0x1e, 0x66, 0xd6, 0x20, 0x31, 0x6b, 0xd6, 0x70, 0xdb,
0xc6, 0x8d, 0xbc, 0x19, 0x6b, 0x3b, 0x8a, 0x8a, 0x56, 0x06, 0xc3, 0x83, 0x27, 0xda, 0xdb, 0xdb,
0x15, 0x48, 0x1d, 0x20, 0xd3, 0x85, 0x85, 0xec, 0x2d, 0x28, 0x60, 0x73, 0x7c, 0xbc, 0x06, 0x63,
0x0d, 0xf2, 0x62, 0xfd, 0x7a, 0xf6, 0xe5, 0xe5, 0xf1, 0x7b, 0x98, 0x06, 0x73, 0x3a, 0x9d, 0x1f,
0x96, 0x3c, 0x35, 0xd0, 0x11, 0xb2, 0xd0, 0x45, 0xaa, 0x25, 0x63, 0x10, 0x50, 0x6d, 0x79, 0x59,
0x19, 0xc7, 0xc1, 0xd1, 0x50, 0x4e, 0x0e, 0xfb, 0x00, 0xf1, 0xe1, 0xea, 0xce, 0xcc, 0xe4, 0x53,
0xb1, 0xb1, 0x4a, 0x00, 0x02, 0xe9, 0x42, 0x10, 0xde, 0x4d, 0x9b, 0xd8, 0x9b, 0x9d, 0xad, 0xc0,
0x2a, 0x92, 0x92, 0x78, 0xad, 0xd1, 0xc8, 0x23, 0x23, 0x23, 0x8b, 0x44, 0xb7, 0xc9, 0x04, 0xc8,
0x02, 0x8c, 0xa9, 0x91, 0x1e, 0x93, 0x95, 0xc2, 0x03, 0x80, 0x12, 0x67, 0x67, 0x67, 0xed, 0x47,
0x0e, 0x1d, 0xe2, 0xb4, 0xa8, 0x28, 0x7e, 0x25, 0xce, 0x00, 0xf1, 0x20, 0x45, 0xae, 0xb4, 0x34,
0xbe, 0x82, 0xc8, 0xbb, 0x91, 0x4a, 0x0f, 0xe6, 0xf2, 0x9f, 0xac, 0x55, 0xe1, 0x5e, 0x20, 0x9d,
0x9d, 0x9d, 0x78, 0x9d, 0x2b, 0x48, 0x71, 0x6c, 0x21, 0x9b, 0x02, 0x5a, 0xb2, 0x87, 0xf8, 0x35,
0x04, 0x80, 0x99, 0xe6, 0xe6, 0xe6, 0xec, 0xc5, 0x87, 0x0f, 0x73, 0x4a, 0x64, 0x24, 0xf7, 0xa5,
0xa6, 0x2a, 0x8e, 0xdd, 0xc9, 0xc9, 0xec, 0x82, 0x53, 0x97, 0xc9, 0xa4, 0xcc, 0x3d, 0x48, 0xdd,
0xe5, 0xb8, 0x38, 0x05, 0xd2, 0xd1, 0xd1, 0x21, 0x90, 0xca, 0x5f, 0x5e, 0x9a, 0x28, 0x01, 0x80,
0xc1, 0x9f, 0xb0, 0x46, 0x7a, 0x10, 0x0c, 0x06, 0x65, 0x43, 0xa2, 0x2c, 0x35, 0x22, 0x82, 0x87,
0xe1, 0x5c, 0x20, 0x5f, 0x91, 0x3e, 0x17, 0xf6, 0xcb, 0x8d, 0x54, 0x5d, 0xc3, 0x5c, 0xa7, 0xa4,
0xf2, 0xf7, 0x8d, 0xb8, 0x4b, 0x29, 0x80, 0x8c, 0xe8, 0x94, 0xdd, 0x09, 0x00, 0x92, 0x12, 0xee,
0x2e, 0x2b, 0x29, 0x51, 0xf6, 0xc4, 0x26, 0x4a, 0x12, 0x12, 0xd8, 0x05, 0x05, 0x72, 0x15, 0x45,
0x65, 0x00, 0x49, 0x81, 0x0c, 0x0c, 0x0c, 0x2c, 0xe2, 0xf9, 0x63, 0x81, 0xcb, 0xab, 0x81, 0x52,
0x61, 0x6f, 0x74, 0x30, 0xcb, 0x32, 0x48, 0xd7, 0x85, 0xf3, 0xe7, 0x79, 0x1d, 0x22, 0x7e, 0x8a,
0xe8, 0xdd, 0x48, 0x9f, 0xa8, 0x70, 0x6b, 0x69, 0x93, 0x54, 0xa6, 0xa7, 0xf3, 0x19, 0xb5, 0x1a,
0x6d, 0x36, 0xdb, 0x42, 0x70, 0xd8, 0x4d, 0xca, 0x80, 0xfb, 0x71, 0x1d, 0xac, 0x46, 0xdf, 0x8c,
0xa2, 0xa4, 0x1b, 0xfb, 0xe0, 0xcd, 0xc8, 0x60, 0xcf, 0x86, 0x0d, 0x8a, 0xf3, 0x66, 0x28, 0x7a,
0x25, 0x20, 0xb5, 0x10, 0x3c, 0xa8, 0xc8, 0x53, 0x50, 0x98, 0x10, 0x13, 0xc3, 0xfd, 0xfd, 0xfd,
0x7f, 0x80, 0xdd, 0xa0, 0x4c, 0x00, 0xde, 0x69, 0xb0, 0xb6, 0xb7, 0x6d, 0xcf, 0x6a, 0xaa, 0xab,
0x39, 0x5a, 0xfa, 0x04, 0x00, 0x29, 0x6d, 0x6f, 0x56, 0x96, 0x02, 0x93, 0x8d, 0x17, 0xc1, 0xb2,
0x67, 0x83, 0x00, 0xcb, 0x9a, 0x2f, 0x3f, 0x9f, 0xbd, 0xe8, 0xb5, 0x93, 0x48, 0xad, 0xc0, 0xc6,
0xc6, 0xc6, 0x66, 0x82, 0x77, 0xe9, 0x2d, 0x2a, 0x00, 0xc4, 0x21, 0xa0, 0xd2, 0x9e, 0x52, 0x6e,
0x6e, 0x6e, 0x66, 0x63, 0x58, 0x18, 0x3f, 0x12, 0x67, 0x70, 0xe4, 0xcb, 0xcd, 0xe5, 0x2a, 0x44,
0x2d, 0x1b, 0x2f, 0xcd, 0xac, 0x14, 0x08, 0xaa, 0x71, 0x08, 0x01, 0x48, 0x43, 0x4f, 0xa2, 0xd7,
0xf6, 0x21, 0x88, 0x6c, 0xa4, 0xd2, 0xe1, 0x70, 0x38, 0xff, 0x7c, 0x24, 0xdc, 0xa4, 0x42, 0x80,
0x3e, 0x19, 0x2c, 0x06, 0xbe, 0xf7, 0xfa, 0x1e, 0x37, 0x35, 0x35, 0x71, 0x38, 0x60, 0x0f, 0x00,
0xab, 0x52, 0x9b, 0x51, 0x2d, 0xe1, 0x1a, 0x94, 0xfe, 0x90, 0x56, 0xfa, 0x2f, 0x01, 0xdb, 0x0f,
0x48, 0x26, 0x9e, 0x1b, 0x1d, 0x1d, 0xf5, 0x62, 0x7d, 0xd7, 0xdf, 0xcf, 0x9f, 0x06, 0xda, 0x0a,
0xd8, 0x17, 0x81, 0xdd, 0x1f, 0xbe, 0xef, 0x17, 0x58, 0x98, 0xc1, 0xf0, 0x5b, 0x09, 0xeb, 0x4b,
0x1f, 0x7d, 0xa1, 0x28, 0x19, 0x1f, 0x1f, 0xff, 0x47, 0x88, 0x36, 0x1a, 0x69, 0x3b, 0x60, 0x4e,
0x55, 0x99, 0xbf, 0xa5, 0xa5, 0x85, 0x7b, 0x7a, 0x7a, 0xfc, 0xcb, 0xfb, 0x44, 0x83, 0xd5, 0xd5,
0xd5, 0xf1, 0xc4, 0xc4, 0x84, 0x67, 0x65, 0x90, 0x5f, 0xca, 0x76, 0x03, 0xe6, 0x15, 0x58, 0xf1,
0x93, 0xe2, 0x85, 0x7a, 0x5b, 0xfd, 0x95, 0x20, 0xe7, 0x62, 0x2c, 0xec, 0x34, 0x2c, 0x6f, 0xf5,
0x5f, 0x3d, 0x0b, 0xed, 0x81, 0xf9, 0xd4, 0x6a, 0x9c, 0x03, 0xfc, 0x20, 0x85, 0x6c, 0x58, 0xe8,
0x00, 0x6c, 0x46, 0x85, 0x7d, 0x43, 0x5a, 0xf7, 0x87, 0x0e, 0xb6, 0xf4, 0x59, 0x99, 0x57, 0xcf,
0xc5, 0x69, 0x5c, 0xf7, 0x86, 0x0e, 0xd6, 0x48, 0x47, 0x01, 0xf8, 0xae, 0x2a, 0x73, 0xc3, 0x76,
0x86, 0x32, 0x8d, 0x66, 0xd8, 0xa2, 0x0a, 0xfb, 0x8a, 0x26, 0xdf, 0x11, 0xca, 0x34, 0x9e, 0x03,
0xc4, 0xaf, 0xc2, 0x3e, 0xe3, 0x43, 0x9a, 0x1f, 0x4a, 0xd8, 0x25, 0xdd, 0x21, 0x7c, 0x95, 0x42,
0x3a, 0x2c, 0x74, 0x16, 0x66, 0x85, 0x65, 0x05, 0x5a, 0xfe, 0x01, 0x70, 0xc0, 0xa2, 0x23, 0x6c,
0x9d, 0x3b, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_line_xpm[1] = {{ png, sizeof( png ), "delete_line_xpm" }};
//EOF
+82
View File
@@ -0,0 +1,82 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0x14, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xdd, 0x96, 0x6d, 0x4c, 0x53,
0x67, 0x14, 0xc7, 0xbb, 0x2d, 0x59, 0xd4, 0x28, 0x82, 0x28, 0xc8, 0x14, 0x04, 0x14, 0x89, 0xcb,
0x36, 0x8d, 0x46, 0xb2, 0x19, 0xa3, 0x41, 0xb7, 0xf9, 0x36, 0x67, 0xdb, 0x5b, 0x6c, 0xa9, 0xa5,
0xbc, 0x88, 0x2e, 0x6c, 0x85, 0xd1, 0x25, 0x53, 0x63, 0x82, 0x12, 0x3f, 0x38, 0x70, 0xdf, 0xbb,
0xe0, 0x07, 0x12, 0x48, 0x96, 0x18, 0x20, 0x8b, 0x2c, 0xe1, 0x23, 0x0e, 0x4a, 0x20, 0x34, 0x71,
0x69, 0xa5, 0x05, 0x16, 0x02, 0x99, 0x6c, 0xbc, 0x24, 0x83, 0xb6, 0xf4, 0xcd, 0x25, 0x2c, 0xe1,
0xec, 0xfc, 0x1f, 0xb9, 0xf5, 0x82, 0xb6, 0x10, 0x4d, 0xfc, 0xe0, 0x4d, 0xfe, 0xe9, 0xed, 0x39,
0xcf, 0x3d, 0xbf, 0xfb, 0x9c, 0x97, 0x7b, 0xaf, 0x4a, 0xf5, 0x12, 0x07, 0x11, 0x7d, 0x34, 0x31,
0x31, 0xf1, 0xd7, 0xcc, 0xcc, 0x8c, 0x87, 0xcf, 0x33, 0x96, 0xf9, 0xf6, 0xb2, 0xef, 0xef, 0xd9,
0xd9, 0x59, 0x37, 0x9f, 0xa7, 0xab, 0x5e, 0xf6, 0x00, 0x64, 0x68, 0x68, 0xc8, 0xf7, 0xde, 0xe6,
0xcd, 0xb4, 0x27, 0x3b, 0x9b, 0x26, 0x27, 0x27, 0x1f, 0xcb, 0x30, 0x40, 0x06, 0x07, 0x07, 0xfd,
0x69, 0xc9, 0xc9, 0xf4, 0xfe, 0xce, 0x9d, 0xf0, 0xfd, 0x19, 0x13, 0xa6, 0x56, 0xab, 0x13, 0x25,
0x49, 0xfa, 0x54, 0x96, 0x56, 0xab, 0xfd, 0x18, 0xf6, 0x92, 0x92, 0x92, 0x35, 0xcd, 0xcd, 0xcd,
0x97, 0x38, 0x50, 0x10, 0x90, 0x6f, 0x58, 0xd2, 0xa6, 0x4d, 0x02, 0x36, 0x3e, 0x3e, 0x3e, 0xe5,
0x70, 0x38, 0xac, 0x1e, 0x8f, 0x27, 0x08, 0x48, 0x25, 0x4b, 0x93, 0x94, 0x14, 0x1f, 0xa6, 0xd3,
0xeb, 0x2a, 0x8f, 0x5b, 0x4e, 0x47, 0xf2, 0x6a, 0xf2, 0x7d, 0x90, 0xc6, 0xa0, 0x8d, 0x14, 0x14,
0x14, 0xbc, 0x53, 0x51, 0x51, 0x71, 0xca, 0xe5, 0x7e, 0xb4, 0x00, 0x88, 0x65, 0xcb, 0x16, 0x8a,
0xe4, 0xe6, 0xd2, 0x1c, 0x07, 0x92, 0x12, 0x13, 0x69, 0x4f, 0x56, 0x16, 0x75, 0x77, 0x77, 0x93,
0x80, 0x30, 0x20, 0xcc, 0xf0, 0xc0, 0xae, 0x5d, 0x51, 0x18, 0xd2, 0xf8, 0x1c, 0x48, 0x2a, 0x90,
0xbe, 0xcd, 0xbe, 0x9b, 0x47, 0x2a, 0x47, 0x96, 0xd0, 0x99, 0xb2, 0x73, 0xb3, 0x00, 0x59, 0xad,
0xd6, 0xb3, 0x0f, 0x9d, 0xbf, 0x2f, 0x6c, 0x58, 0xbb, 0x96, 0xee, 0xa4, 0xa6, 0x52, 0x98, 0x03,
0x85, 0x33, 0x33, 0xc9, 0x9f, 0x9e, 0x4e, 0xda, 0x84, 0x04, 0x42, 0xe6, 0x2c, 0xfc, 0x1b, 0xda,
0xb6, 0x8d, 0x42, 0x19, 0x19, 0x02, 0x56, 0xc9, 0x37, 0x05, 0x38, 0xea, 0xb9, 0x6a, 0x90, 0x4e,
0xa7, 0x3b, 0x6e, 0xf9, 0xf9, 0x4a, 0xa8, 0xd3, 0xfe, 0x80, 0x12, 0x18, 0xf6, 0x23, 0x07, 0x09,
0x31, 0x24, 0x98, 0x96, 0x46, 0xde, 0x94, 0x14, 0x6a, 0x63, 0x48, 0x80, 0x77, 0x1a, 0xdc, 0xba,
0x95, 0x42, 0xdb, 0xb7, 0x8b, 0x9d, 0x01, 0x82, 0x9a, 0xa1, 0x76, 0x51, 0x40, 0x71, 0x71, 0xf1,
0xe5, 0xf2, 0xf2, 0xf2, 0x6e, 0x53, 0x91, 0x69, 0x54, 0x09, 0x3a, 0x7b, 0x51, 0x3d, 0xcf, 0x76,
0x3b, 0xfb, 0x1f, 0x1d, 0xac, 0xcd, 0xff, 0xef, 0xb3, 0x3f, 0x8a, 0xe8, 0x41, 0xcf, 0x6f, 0x02,
0x56, 0xcf, 0x69, 0x0b, 0x30, 0x64, 0x8e, 0x83, 0xce, 0x6d, 0xdc, 0x48, 0x73, 0x5c, 0x33, 0xfc,
0xff, 0x8e, 0xcf, 0x53, 0xd9, 0xe6, 0x74, 0x3a, 0x9f, 0x2c, 0x81, 0xe0, 0x28, 0x2b, 0x2b, 0xfb,
0xa5, 0xb5, 0xb5, 0x95, 0x6c, 0x3f, 0xd9, 0x48, 0x09, 0xd2, 0x7d, 0xad, 0xa7, 0xfe, 0xfe, 0x7e,
0x6a, 0x69, 0x69, 0xa1, 0xc3, 0xb7, 0x4f, 0x0a, 0x9b, 0xe5, 0xf1, 0x4d, 0x6a, 0x6a, 0x6a, 0xa2,
0xb7, 0x38, 0x5d, 0x8e, 0x45, 0x88, 0x7f, 0xfd, 0x7a, 0x01, 0x6c, 0x63, 0x38, 0xd2, 0x88, 0x9a,
0x35, 0x36, 0x36, 0xf6, 0x3d, 0x97, 0x32, 0x80, 0xba, 0xba, 0xba, 0xe8, 0x7e, 0xfb, 0x7d, 0xd2,
0x7f, 0x65, 0x24, 0x43, 0xd5, 0x05, 0xa1, 0xa2, 0x4b, 0x66, 0x74, 0x8e, 0x80, 0x15, 0x96, 0x5f,
0xa0, 0x6b, 0xf5, 0xd7, 0xc9, 0xe9, 0x72, 0x92, 0xe8, 0xbc, 0xc5, 0x74, 0x89, 0x1d, 0xb1, 0x02,
0x6c, 0xf3, 0x73, 0xea, 0xf4, 0x0c, 0xce, 0xe5, 0xfa, 0x0d, 0x0f, 0x0f, 0x47, 0x96, 0xcf, 0x59,
0x14, 0x34, 0x35, 0x35, 0x15, 0x53, 0x3c, 0xa0, 0xc4, 0x33, 0x14, 0xed, 0xae, 0x20, 0x17, 0x1e,
0x35, 0x01, 0xcc, 0xc1, 0x69, 0xc3, 0x39, 0x6c, 0xfe, 0x1d, 0x3b, 0x48, 0x62, 0xff, 0xf2, 0x39,
0x53, 0x2d, 0xce, 0x49, 0x1b, 0xcf, 0xc9, 0x42, 0x2c, 0xc8, 0xf4, 0xf4, 0x34, 0x8d, 0x8e, 0x8e,
0x0a, 0x48, 0x15, 0xdf, 0x79, 0x98, 0x5b, 0x1a, 0xdd, 0x85, 0x2e, 0xb3, 0xf0, 0x0e, 0x90, 0xc6,
0x3b, 0x1c, 0x3c, 0xc4, 0x90, 0x30, 0xb7, 0x74, 0x20, 0x27, 0x27, 0x3a, 0x67, 0xdc, 0xde, 0x9e,
0x67, 0xdd, 0x26, 0x49, 0x39, 0x66, 0xb3, 0xb9, 0x93, 0x61, 0xff, 0xc6, 0x02, 0x0d, 0x0c, 0x0c,
0x50, 0xc2, 0xba, 0x75, 0x54, 0x2f, 0xb7, 0x37, 0x5a, 0x78, 0xb1, 0xbb, 0x50, 0x33, 0xd1, 0x8d,
0x98, 0xb1, 0xdd, 0xbb, 0xc5, 0x9c, 0x61, 0xa8, 0x91, 0x62, 0xde, 0xd5, 0xf8, 0x92, 0xf4, 0x19,
0x0c, 0x86, 0xcc, 0xea, 0xea, 0xea, 0x99, 0x58, 0xbb, 0xf2, 0x7a, 0xbd, 0xd4, 0xdb, 0xdb, 0xfb,
0x14, 0xc6, 0x69, 0xaa, 0x62, 0x00, 0x20, 0x48, 0x67, 0x20, 0x10, 0xa0, 0x9e, 0x9e, 0x1e, 0x01,
0xc3, 0x9c, 0x59, 0x00, 0x79, 0xea, 0xf3, 0xe1, 0xb1, 0x15, 0x85, 0x68, 0x34, 0x9a, 0x14, 0xde,
0xd1, 0xbd, 0x86, 0x86, 0x86, 0x48, 0xbc, 0x3a, 0x29, 0x61, 0x32, 0x04, 0xb5, 0x93, 0x7d, 0x80,
0x61, 0xa8, 0xb1, 0x13, 0x97, 0xcb, 0x35, 0xbf, 0x04, 0x82, 0xa3, 0xb4, 0xb4, 0xf4, 0x9e, 0xcd,
0x66, 0x9b, 0xe7, 0x29, 0x8e, 0xdb, 0x10, 0x72, 0x40, 0xb7, 0xdb, 0x4d, 0x63, 0x63, 0x63, 0x51,
0x88, 0xd2, 0x87, 0x14, 0x8f, 0x8c, 0x8c, 0x50, 0x5d, 0x5d, 0x5d, 0x67, 0xcc, 0xf6, 0x5e, 0x09,
0xa2, 0xac, 0x19, 0x14, 0xcb, 0x67, 0xb7, 0xdb, 0x09, 0x31, 0x5f, 0x19, 0xb4, 0x92, 0x10, 0x2b,
0x2e, 0xe8, 0xd9, 0xc0, 0x9a, 0x84, 0xe4, 0x81, 0xed, 0xeb, 0xeb, 0xa3, 0xf3, 0x26, 0x3d, 0x9d,
0xbf, 0x5c, 0x28, 0xa4, 0x37, 0x19, 0x44, 0x8a, 0xe0, 0xc3, 0x9a, 0x42, 0x5e, 0x0b, 0x19, 0xf8,
0xda, 0xf6, 0x5f, 0xdb, 0xe3, 0x83, 0x56, 0xfb, 0x08, 0x82, 0x4e, 0xd4, 0xa8, 0xa9, 0xa3, 0xa3,
0x43, 0xf8, 0xb0, 0x46, 0xb6, 0xe3, 0x5a, 0xc4, 0x40, 0xac, 0x17, 0x82, 0x56, 0xfb, 0x50, 0x95,
0xed, 0x47, 0xbe, 0x3f, 0x31, 0xcf, 0x81, 0x1e, 0xc2, 0x87, 0x35, 0x4a, 0x10, 0x62, 0x20, 0x16,
0x62, 0xc6, 0x7c, 0x55, 0xc7, 0x7b, 0x4d, 0xec, 0xbf, 0x75, 0xd4, 0x27, 0xdb, 0x0f, 0x5f, 0xfd,
0xfc, 0x1f, 0xb6, 0x7f, 0x08, 0x1f, 0xd6, 0x28, 0x41, 0x88, 0xb1, 0xe2, 0x37, 0xc1, 0x6b, 0x03,
0xc9, 0xaf, 0xf2, 0x83, 0x37, 0xf2, 0xfd, 0x90, 0xa6, 0x50, 0xfb, 0x04, 0xc1, 0x58, 0xc7, 0x4e,
0x5f, 0xfc, 0x32, 0x98, 0x57, 0x73, 0xcc, 0x0b, 0x7d, 0x61, 0x3e, 0x17, 0xe4, 0x21, 0xff, 0x00,
0x3e, 0xb5, 0x51, 0x1b, 0xde, 0xf7, 0xc3, 0x11, 0x1f, 0x74, 0xd4, 0x7a, 0x32, 0x82, 0x18, 0x2b,
0x82, 0x8c, 0x46, 0x63, 0x92, 0xf2, 0xe3, 0x84, 0x03, 0x7d, 0x02, 0x3b, 0xff, 0xbe, 0xcb, 0x3a,
0x20, 0x8b, 0x3f, 0x5a, 0xf6, 0xd7, 0xd6, 0xd6, 0xbe, 0x2d, 0x6e, 0x4e, 0xa7, 0x3b, 0xa4, 0xbc,
0x86, 0x6f, 0x20, 0x59, 0xf5, 0xc6, 0x1f, 0xff, 0x03, 0x5a, 0x5d, 0x9a, 0xeb, 0x46, 0xcc, 0x01,
0x08, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_module_xpm[1] = {{ png, sizeof( png ), "delete_module_xpm" }};
//EOF
+68
View File
@@ -0,0 +1,68 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0x33, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xe5, 0x96, 0xbb, 0x4f, 0x93,
0x61, 0x14, 0xc6, 0x8b, 0x01, 0x0a, 0x02, 0xa5, 0xdc, 0xef, 0xd0, 0x42, 0x29, 0x43, 0xd3, 0xc5,
0xbf, 0x81, 0x81, 0x85, 0xa0, 0xc4, 0x26, 0x46, 0x07, 0x9d, 0x5c, 0x74, 0x71, 0x60, 0x04, 0xdb,
0x26, 0x54, 0xd8, 0x28, 0x8d, 0x2c, 0x2c, 0xcc, 0x0c, 0x48, 0x25, 0x26, 0x2d, 0x96, 0xd6, 0x10,
0x12, 0x47, 0x42, 0x70, 0x20, 0x20, 0x21, 0x2c, 0x9d, 0x54, 0x7a, 0x23, 0x85, 0x80, 0x1e, 0x9f,
0xe7, 0xf5, 0x2b, 0x96, 0x0a, 0x94, 0x1a, 0xc3, 0xe2, 0x9b, 0x9c, 0xbc, 0x97, 0xaf, 0x3d, 0xbf,
0xef, 0x9c, 0xe7, 0x9c, 0xb7, 0xd5, 0xe9, 0x0a, 0x1c, 0x22, 0x72, 0x0b, 0x36, 0xb5, 0xbb, 0xbb,
0x9b, 0xc6, 0xec, 0xbc, 0xe0, 0xf9, 0xf0, 0xfe, 0xfe, 0x7e, 0xe2, 0xe8, 0xe8, 0x28, 0x88, 0xb5,
0x21, 0xaf, 0xc3, 0xa8, 0x4e, 0xe7, 0x81, 0xa5, 0x39, 0xe7, 0x40, 0x66, 0x5f, 0x8e, 0x8d, 0x49,
0x51, 0x51, 0x91, 0x4c, 0x7b, 0xbd, 0xd8, 0xca, 0x84, 0xd3, 0xe9, 0xf4, 0xc0, 0xd2, 0x91, 0x48,
0x64, 0x21, 0x1c, 0x0e, 0x9f, 0x56, 0x94, 0x95, 0xc9, 0xe0, 0xc0, 0x80, 0xa4, 0xd3, 0xe9, 0x8f,
0x79, 0x61, 0x00, 0x1c, 0xc3, 0x84, 0x73, 0x2e, 0xc4, 0x50, 0x5a, 0x2a, 0xe3, 0x0d, 0x0d, 0x52,
0x5e, 0x5c, 0xac, 0x60, 0x6b, 0x6b, 0x6b, 0xa7, 0xf3, 0xf3, 0xf3, 0xb2, 0xb2, 0xb2, 0x22, 0x15,
0x7a, 0xbd, 0x8c, 0xd4, 0xd5, 0x89, 0xb5, 0xb2, 0xf2, 0x7a, 0x30, 0x0d, 0xa2, 0x4c, 0x03, 0xb9,
0x33, 0x90, 0x70, 0x67, 0xa7, 0x1c, 0xf6, 0xf5, 0xc9, 0x62, 0x6b, 0xeb, 0x19, 0x0c, 0x91, 0x28,
0x88, 0xbb, 0xb6, 0x56, 0x52, 0x3d, 0x3d, 0xf2, 0xb9, 0xbb, 0xfb, 0x0c, 0x86, 0x34, 0xbe, 0xbf,
0x10, 0x62, 0xb1, 0x58, 0xf4, 0xd3, 0x46, 0xa3, 0xbc, 0x30, 0x99, 0xc4, 0x87, 0x99, 0x7b, 0x80,
0xde, 0x59, 0xcd, 0x66, 0xe9, 0x37, 0x18, 0x24, 0x6e, 0xb5, 0x2a, 0x67, 0x49, 0x3c, 0x7f, 0xa3,
0x45, 0x56, 0x56, 0x52, 0x22, 0xae, 0xea, 0x6a, 0x49, 0x76, 0x74, 0xa8, 0x73, 0x3e, 0x1f, 0xa9,
0xaf, 0x17, 0xa6, 0x11, 0x9a, 0x1d, 0x5c, 0x08, 0xb1, 0xdb, 0xed, 0x9f, 0x26, 0xdd, 0x6e, 0x09,
0x04, 0x02, 0xc2, 0x19, 0xfb, 0xcd, 0x68, 0x34, 0x7a, 0x67, 0x6f, 0x6f, 0xef, 0x8b, 0xb9, 0xbd,
0x5d, 0x86, 0x6b, 0x6a, 0xe4, 0xa0, 0xab, 0x4b, 0x92, 0x58, 0x27, 0x9a, 0x9b, 0x65, 0x09, 0x2f,
0xe3, 0xab, 0xaa, 0x92, 0x78, 0x53, 0x93, 0x24, 0x5a, 0x5a, 0x14, 0x8c, 0x91, 0x31, 0x42, 0x6a,
0x86, 0x97, 0xbc, 0xff, 0xcb, 0xfb, 0x1c, 0x04, 0x9f, 0xd3, 0x9d, 0xc0, 0xc4, 0xf8, 0xdc, 0x28,
0xee, 0x57, 0x6e, 0x81, 0xe3, 0x33, 0x73, 0x79, 0x5c, 0x52, 0xfd, 0xac, 0x5a, 0xec, 0x7e, 0xbb,
0xac, 0xef, 0xac, 0x4b, 0x0f, 0x1c, 0x0d, 0xe1, 0xed, 0xbf, 0xc2, 0x69, 0x1c, 0x11, 0xc5, 0xe0,
0x34, 0x06, 0x78, 0x1c, 0xda, 0x24, 0x00, 0x1b, 0x07, 0xf8, 0x36, 0x52, 0xbc, 0x1c, 0x5a, 0x96,
0xd1, 0xf5, 0xd1, 0x85, 0xdf, 0x61, 0xcc, 0xe9, 0x52, 0x84, 0xd0, 0x4c, 0x0f, 0x4c, 0x12, 0x0c,
0x06, 0xcf, 0x81, 0xb8, 0xe7, 0x39, 0x9f, 0x13, 0xb6, 0xb1, 0xb3, 0x21, 0x9d, 0x88, 0xe4, 0x31,
0xa3, 0x20, 0x04, 0xe9, 0x8c, 0x69, 0x6b, 0x1f, 0xd6, 0x4c, 0x63, 0x38, 0x12, 0x16, 0xc7, 0x07,
0x87, 0x28, 0xdf, 0x59, 0xa0, 0x2b, 0x23, 0x72, 0x8e, 0x3b, 0x55, 0x44, 0x7c, 0xce, 0x2f, 0x87,
0xc2, 0x21, 0x95, 0x16, 0x0f, 0xf5, 0x22, 0x08, 0xd1, 0xc5, 0x10, 0x45, 0x1c, 0x9a, 0x2c, 0x61,
0x9f, 0x29, 0x90, 0xc9, 0xcd, 0xc9, 0xef, 0xca, 0xf7, 0x65, 0x85, 0x40, 0x4d, 0x26, 0x5c, 0x2e,
0xa5, 0x11, 0x9a, 0x44, 0x69, 0x64, 0xb3, 0xd9, 0x4a, 0x91, 0x6b, 0xc7, 0xea, 0xea, 0xea, 0x69,
0x25, 0x04, 0x1e, 0x83, 0x63, 0xea, 0xc3, 0xd4, 0x31, 0x65, 0x84, 0x30, 0x6d, 0x89, 0xb6, 0x36,
0x59, 0x6c, 0x6c, 0x54, 0x30, 0xef, 0xd4, 0x94, 0xea, 0xb3, 0x4b, 0x4b, 0x9b, 0x30, 0x1f, 0xde,
0x52, 0x55, 0x1d, 0x66, 0x0d, 0x32, 0xa8, 0x9a, 0x91, 0x25, 0x0c, 0xc7, 0x49, 0x94, 0x38, 0x9d,
0x52, 0x7c, 0x46, 0xf6, 0x04, 0xf6, 0x0d, 0x7b, 0x9e, 0xa7, 0x50, 0xda, 0x7e, 0xac, 0xcb, 0x91,
0x42, 0xad, 0xa9, 0x5d, 0x85, 0xf4, 0x51, 0xa8, 0x11, 0x80, 0xbb, 0xd0, 0x22, 0x65, 0xb1, 0x48,
0x0a, 0xa5, 0x9e, 0x44, 0xe5, 0xb9, 0x51, 0x04, 0x84, 0x53, 0xb3, 0x7b, 0x4c, 0x21, 0xce, 0x0f,
0x7b, 0x7b, 0x55, 0x9f, 0xb1, 0xa9, 0x79, 0x83, 0xe0, 0xba, 0x3a, 0x2c, 0x04, 0xf4, 0xc8, 0xef,
0xf7, 0xff, 0xd0, 0x23, 0x25, 0xaf, 0xe1, 0x94, 0xce, 0x18, 0x19, 0x21, 0xbc, 0x11, 0xb6, 0xb7,
0xb7, 0xc5, 0x8c, 0x28, 0x86, 0xa1, 0x11, 0xfb, 0x8c, 0x4d, 0xcd, 0xe6, 0x66, 0x93, 0x63, 0x78,
0xaf, 0x0d, 0xd2, 0x60, 0x4f, 0x33, 0xb0, 0x21, 0x44, 0x96, 0xe9, 0x13, 0x5e, 0x3f, 0x33, 0x33,
0x33, 0xb2, 0xb5, 0xb5, 0x25, 0xec, 0xb3, 0x7e, 0x44, 0x96, 0x05, 0x99, 0xe5, 0xf5, 0x55, 0x10,
0x28, 0x1b, 0xd6, 0x04, 0xf1, 0xb5, 0x66, 0x74, 0xe0, 0x42, 0x15, 0x1a, 0x61, 0x6c, 0x6a, 0xde,
0x20, 0xce, 0xeb, 0x40, 0xae, 0x02, 0x69, 0xb0, 0x87, 0xb0, 0x00, 0x0b, 0x84, 0xfb, 0x0c, 0x88,
0x86, 0x61, 0x83, 0xbd, 0xe5, 0x4f, 0x48, 0x5e, 0x48, 0x3e, 0x50, 0xee, 0xc8, 0x06, 0xe5, 0xfb,
0x20, 0x7f, 0x4f, 0x4e, 0xb2, 0xbf, 0x90, 0x0d, 0xca, 0x3e, 0x2f, 0xd0, 0xe8, 0xd3, 0x93, 0x0d,
0x4a, 0xe5, 0x7e, 0xe8, 0x1f, 0x81, 0x68, 0xa9, 0x9b, 0x8f, 0xe8, 0xc6, 0x34, 0xfa, 0x6f, 0x40,
0xe7, 0xfe, 0x9c, 0xe4, 0x01, 0x1d, 0x6b, 0xa0, 0xe3, 0xbf, 0x01, 0xfd, 0xf1, 0x77, 0x2b, 0x4f,
0x7b, 0xa4, 0xf3, 0x0a, 0x7f, 0x13, 0xe3, 0x27, 0xd1, 0x9a, 0x9b, 0x57, 0x27, 0xbf, 0x8f, 0x11,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_net_xpm[1] = {{ png, sizeof( png ), "delete_net_xpm" }};
//EOF
+66
View File
@@ -0,0 +1,66 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0x09, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x94, 0x5d, 0x48, 0x93,
0x61, 0x14, 0xc7, 0x9f, 0xa5, 0x85, 0xdf, 0xba, 0xf9, 0x3d, 0xa7, 0xce, 0xf9, 0x95, 0xe1, 0x45,
0x20, 0x41, 0x17, 0x62, 0x4e, 0xcc, 0x51, 0x22, 0x81, 0x90, 0x8b, 0xba, 0x0a, 0x4a, 0xba, 0x0e,
0xba, 0xe8, 0x6e, 0x53, 0x21, 0xd2, 0x44, 0xbb, 0xd5, 0x9b, 0xb1, 0x9b, 0x2e, 0xc2, 0x76, 0xe5,
0x95, 0xe0, 0x85, 0x46, 0xdd, 0xe9, 0xb0, 0x6c, 0x6d, 0xcc, 0x46, 0x30, 0xb1, 0x12, 0x74, 0xaf,
0xbe, 0x9b, 0xeb, 0xf3, 0xf4, 0x3f, 0x73, 0xaf, 0xcd, 0x35, 0xbf, 0x86, 0x79, 0xd5, 0x81, 0x3f,
0x7b, 0x5e, 0x9e, 0x3d, 0xe7, 0xf7, 0x9e, 0x73, 0xfe, 0xcf, 0x2b, 0x44, 0x12, 0x41, 0x44, 0x0f,
0x16, 0x16, 0x16, 0x7e, 0x84, 0xc3, 0xe1, 0x29, 0xac, 0xb3, 0xe2, 0xf6, 0x9a, 0x96, 0x97, 0x97,
0x3f, 0xf9, 0xfd, 0xfe, 0xcf, 0x58, 0x5f, 0x10, 0xc9, 0x06, 0x0e, 0x3f, 0xb4, 0xd9, 0x6c, 0x74,
0x4a, 0xa5, 0xa2, 0xee, 0xae, 0x2e, 0x02, 0x6c, 0x56, 0x81, 0x31, 0xc4, 0xe3, 0xf1, 0x04, 0x74,
0xc5, 0xc5, 0x54, 0x56, 0x58, 0x48, 0x6e, 0xb7, 0x5b, 0x4a, 0x0a, 0xa6, 0x40, 0xce, 0xa4, 0xa4,
0xd0, 0x60, 0x51, 0x11, 0xe9, 0x33, 0x32, 0x62, 0x61, 0x97, 0x14, 0x88, 0x59, 0xad, 0xa6, 0x1b,
0x50, 0x52, 0x30, 0xfc, 0xf9, 0xa6, 0xdd, 0x6e, 0x8f, 0x40, 0xec, 0x5a, 0x2d, 0x05, 0xeb, 0xeb,
0xc9, 0xa5, 0xd7, 0xef, 0xc0, 0x5c, 0x2e, 0x17, 0xe9, 0x00, 0xef, 0xc9, 0xcd, 0x25, 0xc9, 0x60,
0xa0, 0x8d, 0xda, 0xda, 0x1d, 0x98, 0xd7, 0xeb, 0x95, 0x8e, 0x02, 0x1a, 0xb8, 0x65, 0x36, 0x53,
0x65, 0x7a, 0x3a, 0xf9, 0xaa, 0xab, 0x49, 0xae, 0xa9, 0x21, 0x19, 0xa0, 0x77, 0x80, 0x32, 0xec,
0x74, 0x6a, 0x2a, 0xf5, 0x64, 0x67, 0x53, 0x40, 0xa7, 0xa3, 0xcd, 0xca, 0x4a, 0x92, 0x01, 0x9b,
0x28, 0x2b, 0x23, 0x15, 0x5a, 0xec, 0x70, 0x38, 0x68, 0xff, 0xec, 0x7d, 0xa2, 0x57, 0xf4, 0x8b,
0x31, 0x61, 0x15, 0x16, 0x80, 0xd4, 0xb2, 0x2c, 0xcf, 0x5f, 0x6e, 0x6d, 0xa5, 0x86, 0xac, 0x2c,
0xfa, 0x50, 0x51, 0x41, 0x9b, 0xe5, 0xe5, 0xb4, 0x51, 0x5a, 0x4a, 0x8b, 0xf9, 0xf9, 0x64, 0xcd,
0xcc, 0xa4, 0x35, 0x54, 0xc4, 0xcf, 0x9b, 0x80, 0x39, 0xd0, 0xc2, 0x34, 0xc0, 0x47, 0x47, 0x46,
0x70, 0x94, 0x06, 0x0f, 0x02, 0x3d, 0x87, 0x08, 0x5a, 0x8c, 0x56, 0xa5, 0x0e, 0x85, 0x42, 0x73,
0x9d, 0x1d, 0x1d, 0x54, 0x8b, 0xc4, 0x1e, 0x24, 0x93, 0xd0, 0x9a, 0x80, 0x46, 0x43, 0x01, 0xb4,
0x49, 0x02, 0x50, 0x02, 0xcc, 0x81, 0xdf, 0xf4, 0x43, 0x43, 0x12, 0x80, 0x14, 0x18, 0x2a, 0x7b,
0x63, 0x6c, 0x6e, 0xa6, 0x06, 0xb4, 0x6c, 0x1d, 0x49, 0x03, 0x98, 0xcb, 0x3a, 0xaa, 0x64, 0xd8,
0x0c, 0xa0, 0x5c, 0xc9, 0x93, 0xa1, 0x21, 0x86, 0x8c, 0x1c, 0x6e, 0x30, 0x89, 0x41, 0xdb, 0x16,
0xc6, 0x9b, 0x9b, 0x31, 0x13, 0xae, 0x22, 0x90, 0x97, 0x17, 0x81, 0xf1, 0xda, 0x8d, 0x0a, 0xf5,
0x98, 0x63, 0xbc, 0xf5, 0x8f, 0xda, 0xba, 0xa6, 0xa5, 0xa5, 0xa5, 0x80, 0x1e, 0x06, 0xe8, 0xce,
0xc9, 0xa1, 0x35, 0xcc, 0x83, 0x5b, 0x25, 0x15, 0x14, 0x6c, 0x8b, 0x67, 0x84, 0x3d, 0x17, 0x4c,
0x60, 0x40, 0xb5, 0x9d, 0x26, 0x13, 0xa1, 0xd5, 0x2f, 0x0f, 0x86, 0xc5, 0x80, 0xf0, 0xe7, 0x46,
0xe5, 0x9e, 0xf4, 0x70, 0x05, 0x70, 0x16, 0x0f, 0x9d, 0x87, 0x3f, 0x81, 0x96, 0x19, 0x91, 0xd8,
0x5b, 0x52, 0x12, 0x31, 0x88, 0x5c, 0x55, 0x45, 0xef, 0x21, 0x3d, 0xe6, 0xa8, 0x54, 0x76, 0x14,
0xd0, 0xb0, 0xa9, 0xbd, 0x9d, 0xaa, 0xd3, 0xd2, 0x48, 0x62, 0x6b, 0xc3, 0xbe, 0x6c, 0xe3, 0x09,
0xb4, 0x8a, 0x67, 0xd2, 0x50, 0x57, 0x47, 0xf5, 0x48, 0xcc, 0x6e, 0x64, 0xeb, 0xf3, 0x3d, 0x9b,
0xc1, 0x3e, 0x37, 0x62, 0x7c, 0x7c, 0x7c, 0x1f, 0x7b, 0x93, 0x50, 0x01, 0x30, 0x15, 0x05, 0xf9,
0xa4, 0x6f, 0xd2, 0x45, 0xa7, 0xd3, 0x19, 0x2a, 0x44, 0x35, 0x77, 0x31, 0x0b, 0x19, 0x17, 0xf2,
0x05, 0xaa, 0x61, 0xc8, 0xd3, 0xd1, 0x51, 0x6e, 0xd1, 0x97, 0x0e, 0xa3, 0x91, 0xce, 0xc2, 0x14,
0x7c, 0xcf, 0x58, 0xe7, 0xb0, 0x6e, 0x6f, 0x69, 0x21, 0xbe, 0x16, 0x89, 0x21, 0x16, 0xd1, 0x88,
0xe4, 0xce, 0x28, 0x44, 0xd1, 0xc7, 0xe1, 0xd7, 0xc3, 0xf7, 0x15, 0xd8, 0x55, 0xcc, 0x48, 0x81,
0x20, 0x1e, 0xb3, 0x1b, 0x83, 0xc1, 0xe0, 0x9c, 0x02, 0x8b, 0x81, 0x38, 0xb1, 0xa7, 0x49, 0x04,
0xd1, 0x21, 0xe9, 0x6a, 0x1c, 0x44, 0x51, 0x78, 0x6c, 0x6e, 0xec, 0x1e, 0xc3, 0xb4, 0x18, 0xbc,
0x02, 0x89, 0xb5, 0x3e, 0xc3, 0xae, 0xa0, 0xc5, 0xa6, 0xb6, 0xb6, 0x48, 0x25, 0x7f, 0x20, 0x16,
0xa1, 0xdd, 0x25, 0xab, 0xb0, 0xed, 0x01, 0xd9, 0x96, 0x55, 0xcc, 0x4e, 0xfb, 0xa6, 0xaf, 0x6d,
0x7d, 0xdf, 0x7a, 0xe5, 0x97, 0xfc, 0x03, 0xf1, 0xe7, 0x27, 0x7d, 0x93, 0x25, 0x48, 0xfe, 0x2c,
0x2a, 0x4d, 0xec, 0xc0, 0xe9, 0x58, 0x65, 0x15, 0xd7, 0xf7, 0x72, 0xd6, 0x89, 0x81, 0x7a, 0x77,
0xc9, 0x2a, 0xe6, 0x0f, 0x48, 0xb6, 0xf2, 0xd7, 0x99, 0x58, 0xf5, 0x8b, 0xaa, 0xc3, 0x7d, 0x76,
0x06, 0x44, 0x33, 0x0e, 0xfc, 0xdc, 0xe7, 0x8d, 0x6f, 0x8b, 0x63, 0x8b, 0x3e, 0x71, 0x07, 0xfa,
0x1a, 0x07, 0xf9, 0x05, 0x3d, 0x12, 0xc7, 0x1e, 0x16, 0x61, 0x40, 0xe2, 0xb7, 0x51, 0xc8, 0x2a,
0x9e, 0xcf, 0x8b, 0x7f, 0x16, 0x09, 0xbe, 0xde, 0xff, 0x41, 0x27, 0x0e, 0xfa, 0x0d, 0x13, 0x53,
0xbd, 0xcc, 0xf6, 0x5b, 0xb0, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE delete_node_xpm[1] = {{ png, sizeof( png ), "delete_node_xpm" }};
//EOF
+85
View File
@@ -0,0 +1,85 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0x41, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xa5, 0x95, 0x6d, 0x4c, 0x5b,
0x65, 0x14, 0xc7, 0x5b, 0x29, 0x65, 0x94, 0xbe, 0xdc, 0x5b, 0xda, 0x5b, 0x18, 0x2f, 0x61, 0x85,
0x51, 0x12, 0x9d, 0x62, 0x8c, 0xd9, 0x17, 0x63, 0x7c, 0xd9, 0xb2, 0x4d, 0x43, 0xcc, 0xec, 0x36,
0xdd, 0x82, 0x73, 0xc9, 0x12, 0xfd, 0x00, 0x62, 0x16, 0x31, 0x4b, 0x16, 0x60, 0xf8, 0xc1, 0x49,
0x32, 0x35, 0x0e, 0xb6, 0x00, 0x3a, 0x0b, 0x24, 0x26, 0x23, 0xda, 0x80, 0x8e, 0x97, 0x62, 0x3b,
0xda, 0x88, 0x64, 0x1f, 0xdc, 0x26, 0x62, 0x42, 0x44, 0xd8, 0xa2, 0xd1, 0x69, 0x44, 0x1d, 0x2b,
0xd0, 0x66, 0xb4, 0x85, 0x1e, 0xff, 0xcf, 0xf5, 0xde, 0xad, 0xad, 0x60, 0xa1, 0x9c, 0xe4, 0x9f,
0xfb, 0xf6, 0x3c, 0xe7, 0x77, 0x9f, 0x73, 0xfe, 0xcf, 0xbd, 0x0a, 0x45, 0x8a, 0x41, 0x44, 0x8d,
0xe3, 0xe3, 0xe3, 0x01, 0x1c, 0x4f, 0x26, 0xdc, 0x57, 0x87, 0x42, 0xa1, 0xee, 0x89, 0x89, 0x09,
0x3f, 0xce, 0x0f, 0x28, 0x36, 0x12, 0x48, 0xf0, 0xce, 0xc9, 0xfa, 0x7a, 0x62, 0xa7, 0x6f, 0x35,
0x34, 0xe0, 0x92, 0x4e, 0xc9, 0x90, 0xc5, 0xc5, 0xc5, 0x7e, 0x7b, 0x45, 0x05, 0xa5, 0xa7, 0xa5,
0x91, 0xd3, 0xe9, 0x5c, 0xc6, 0xbd, 0x17, 0x37, 0x04, 0xb1, 0x68, 0x34, 0xd4, 0x9d, 0x97, 0x27,
0x1e, 0x25, 0x58, 0x93, 0x0c, 0x29, 0x37, 0x18, 0xa8, 0x23, 0x37, 0x97, 0xb4, 0x6a, 0x75, 0x6a,
0x30, 0x4c, 0xd8, 0x7b, 0xba, 0xa9, 0x49, 0x4c, 0x3e, 0xb6, 0x65, 0x0b, 0x05, 0x4b, 0x4b, 0xe9,
0x5a, 0x41, 0x81, 0x78, 0xdd, 0x50, 0x57, 0x47, 0x22, 0x44, 0xaf, 0xa7, 0x9b, 0x85, 0x85, 0x14,
0x28, 0x2e, 0xa6, 0x9e, 0xfc, 0x7c, 0xd2, 0x66, 0x64, 0xd0, 0xd0, 0xd0, 0xd0, 0xd2, 0x7a, 0x41,
0xbb, 0x3f, 0x6c, 0x6f, 0x27, 0x7e, 0xd3, 0x26, 0xfa, 0x9a, 0x25, 0xb3, 0x5a, 0x69, 0x01, 0xc7,
0x2b, 0x16, 0x0b, 0x59, 0x32, 0x33, 0xa9, 0x5c, 0xa7, 0xa3, 0x5f, 0x72, 0x72, 0x68, 0x01, 0xf0,
0x40, 0x51, 0x11, 0x39, 0x70, 0x5f, 0x87, 0xb1, 0x23, 0x23, 0x23, 0xa1, 0x54, 0x4a, 0x57, 0xdb,
0x7c, 0xe6, 0x8c, 0x08, 0xfb, 0x0a, 0xe5, 0x99, 0xdf, 0xbc, 0x99, 0xe6, 0x90, 0xf0, 0xba, 0xd1,
0x48, 0xbf, 0x65, 0x67, 0xd3, 0x9c, 0x20, 0x88, 0xf7, 0x1c, 0x26, 0x93, 0x08, 0x71, 0xbb, 0xdd,
0x21, 0xf6, 0x82, 0xa9, 0xf6, 0xa9, 0xb6, 0xbd, 0xad, 0x8d, 0x38, 0x24, 0xf2, 0xb1, 0xe4, 0x90,
0x1f, 0x7d, 0xf1, 0x73, 0x1c, 0xcd, 0x01, 0xd0, 0xc9, 0xf3, 0xa4, 0xbf, 0x07, 0xd9, 0xb3, 0x11,
0xd7, 0x31, 0x0b, 0x4f, 0x3c, 0xbc, 0x6d, 0x1b, 0xd9, 0xb5, 0x5a, 0xf2, 0x23, 0xf1, 0x6d, 0x94,
0x8d, 0xc1, 0x18, 0xa8, 0x18, 0x3d, 0x3b, 0x72, 0xf8, 0x30, 0x33, 0xc8, 0x85, 0xf5, 0xe4, 0x55,
0xc6, 0x6a, 0x7a, 0x7a, 0x3a, 0x23, 0x12, 0x89, 0xf4, 0x1d, 0xb4, 0xdb, 0xe9, 0x41, 0x24, 0xff,
0xd9, 0x6c, 0xfe, 0x77, 0x45, 0x80, 0xb1, 0x23, 0x2b, 0xe3, 0x35, 0x28, 0x17, 0xb0, 0x46, 0xb8,
0x13, 0xf1, 0xf6, 0xaa, 0x99, 0x4d, 0x2e, 0x93, 0x4d, 0xf0, 0x72, 0x0d, 0x66, 0x2f, 0xdf, 0x2f,
0x0c, 0xf3, 0x97, 0x05, 0x37, 0xe7, 0x36, 0xf5, 0x73, 0xef, 0x5b, 0xcf, 0x17, 0x3e, 0x1d, 0x0c,
0x06, 0x07, 0x65, 0x77, 0xfd, 0x0a, 0x57, 0xb1, 0x7e, 0xcc, 0x23, 0xb1, 0x13, 0x65, 0x1b, 0x05,
0x68, 0x1e, 0x96, 0x67, 0x06, 0x61, 0x6e, 0x14, 0x60, 0x10, 0xc9, 0xfa, 0xf1, 0x30, 0xd3, 0xa8,
0x49, 0x67, 0xf1, 0x1a, 0x1d, 0x82, 0x97, 0x5f, 0x16, 0x7c, 0x3c, 0x25, 0xaa, 0xe6, 0x87, 0x2a,
0xaa, 0xa9, 0xaa, 0xa2, 0x92, 0xac, 0x2c, 0xba, 0x09, 0xc7, 0x05, 0x60, 0x71, 0x96, 0xd4, 0x01,
0x23, 0x68, 0xb0, 0x67, 0x38, 0x58, 0x99, 0x19, 0x84, 0xb9, 0x91, 0x59, 0xff, 0x5b, 0x3c, 0xd7,
0xa8, 0x54, 0xd4, 0xd5, 0xd5, 0x45, 0xf1, 0x10, 0x9f, 0xf1, 0xca, 0x4a, 0x00, 0x59, 0x3b, 0xae,
0x3e, 0x41, 0x43, 0x1e, 0x97, 0xe8, 0x26, 0xb6, 0x21, 0x03, 0x25, 0x25, 0xd4, 0x01, 0x97, 0xb1,
0x6b, 0x8f, 0xc7, 0x13, 0x69, 0x69, 0x6e, 0xbe, 0x6b, 0xfd, 0xa0, 0xcd, 0x46, 0x6f, 0xa0, 0xac,
0xf9, 0xd0, 0xd4, 0xd4, 0xd4, 0xcc, 0x5d, 0x90, 0xe0, 0x33, 0x76, 0xfc, 0x1f, 0x44, 0xd6, 0xa1,
0xef, 0x0f, 0x90, 0xcb, 0x3d, 0x28, 0x26, 0x7f, 0x05, 0xe5, 0x92, 0x20, 0xe1, 0xa5, 0xa5, 0xa5,
0x67, 0x98, 0x1b, 0x65, 0x58, 0x25, 0x7a, 0xc6, 0x20, 0x93, 0x93, 0x93, 0x7f, 0xe2, 0x7e, 0x99,
0x08, 0xc9, 0xf6, 0x65, 0x97, 0xfd, 0xa7, 0x5c, 0x5e, 0x3e, 0xba, 0xfb, 0xb3, 0x9d, 0xb3, 0x27,
0xfa, 0x8e, 0xff, 0x65, 0x77, 0xee, 0xbd, 0x65, 0xbe, 0x74, 0xef, 0xf9, 0xc1, 0xf1, 0xfd, 0xe2,
0xca, 0x72, 0xe0, 0x30, 0x58, 0x38, 0x32, 0x36, 0x36, 0x76, 0x08, 0x69, 0xd2, 0x64, 0xeb, 0x9f,
0x6d, 0x69, 0x21, 0x2b, 0x7a, 0x14, 0x07, 0x61, 0x61, 0x19, 0xe6, 0xea, 0x12, 0xdf, 0xbc, 0x75,
0xe0, 0xdc, 0x1f, 0x14, 0x13, 0xae, 0xcb, 0x83, 0x7f, 0xc3, 0x18, 0x51, 0xf9, 0xf9, 0xf3, 0xdf,
0x3d, 0x47, 0x5f, 0xde, 0x18, 0x0a, 0x54, 0x57, 0x57, 0x9f, 0x47, 0x8a, 0x72, 0x28, 0x53, 0x72,
0x26, 0x83, 0x1d, 0x85, 0xba, 0xa1, 0xd2, 0x38, 0x13, 0x98, 0x87, 0xf9, 0x0b, 0xb1, 0x90, 0xfb,
0x2f, 0xda, 0x02, 0xd1, 0x68, 0x94, 0x12, 0xe3, 0xd9, 0x9e, 0x5d, 0xb7, 0x63, 0xc7, 0x19, 0xbb,
0xf4, 0xb3, 0x98, 0xde, 0x0c, 0xb1, 0x4d, 0x69, 0x94, 0x41, 0xab, 0x06, 0xca, 0xe4, 0x8a, 0x4d,
0xb0, 0xe7, 0xf3, 0x5d, 0x7e, 0x5a, 0x21, 0x5e, 0xeb, 0xab, 0xba, 0x15, 0x3b, 0xce, 0xf4, 0xa9,
0x21, 0x80, 0xe9, 0x6c, 0x45, 0x95, 0x50, 0x1e, 0x74, 0x5f, 0x32, 0xd0, 0x27, 0xb1, 0x09, 0x4a,
0xfa, 0x8b, 0xee, 0x60, 0x53, 0x2e, 0x27, 0x82, 0x9e, 0xec, 0x7d, 0xdc, 0x1f, 0xb7, 0x22, 0x87,
0xb8, 0xa2, 0x4e, 0xe8, 0x28, 0x54, 0x28, 0xf7, 0x69, 0xd5, 0xb0, 0x78, 0xb8, 0x63, 0x89, 0x3d,
0x3a, 0xee, 0x7c, 0x73, 0x26, 0x1c, 0x0e, 0x8b, 0x30, 0x94, 0x31, 0x7a, 0x6e, 0xe0, 0xec, 0x4c,
0xe2, 0x18, 0x43, 0x7d, 0xd6, 0x4f, 0x98, 0xde, 0x01, 0x1d, 0x81, 0x0a, 0x92, 0x82, 0xb8, 0x5e,
0xae, 0xc8, 0xec, 0xe3, 0xc3, 0x89, 0x89, 0x1e, 0xf8, 0xa2, 0x2c, 0xf8, 0x42, 0xcf, 0xbe, 0xd9,
0x47, 0x7a, 0x1f, 0x5a, 0x58, 0xc9, 0xea, 0x19, 0xdb, 0xd3, 0x47, 0x31, 0xbd, 0x15, 0xb2, 0xb3,
0xc2, 0x24, 0x2d, 0x1d, 0x6b, 0xa2, 0x79, 0x90, 0xfb, 0x60, 0x2d, 0xfb, 0x48, 0x16, 0xff, 0x9e,
0xf6, 0x77, 0xcc, 0xeb, 0x81, 0xd8, 0x6f, 0xfc, 0x31, 0x48, 0x97, 0xd4, 0x0c, 0xe2, 0x80, 0x0a,
0x85, 0x06, 0xdf, 0xb3, 0x4b, 0x6b, 0x81, 0x18, 0x3b, 0xf5, 0x7e, 0xa5, 0x5e, 0x39, 0x80, 0x79,
0x1f, 0x49, 0xfd, 0xb1, 0x42, 0xe9, 0x6b, 0xff, 0x4a, 0xe7, 0x2b, 0x8c, 0x7c, 0x9b, 0xbe, 0x55,
0x70, 0xf3, 0x77, 0x56, 0x02, 0x98, 0xdd, 0xdc, 0xb2, 0xfe, 0x84, 0xe6, 0x86, 0x52, 0xa3, 0xbc,
0x28, 0xb9, 0xed, 0x18, 0xf4, 0xe8, 0x5a, 0x57, 0x13, 0x1b, 0x2a, 0xf6, 0xd9, 0x53, 0x6d, 0x55,
0xed, 0xd4, 0x55, 0x6b, 0x1c, 0x86, 0x53, 0xba, 0xab, 0xdc, 0xbb, 0xba, 0xeb, 0x86, 0x46, 0xed,
0x8f, 0x9a, 0xca, 0xcc, 0x6f, 0xd2, 0x2c, 0x4a, 0x56, 0xaa, 0x8f, 0xa1, 0xd3, 0xd0, 0xab, 0xd0,
0x76, 0x88, 0x4f, 0x6a, 0x82, 0x55, 0xfe, 0x3d, 0x0c, 0x66, 0x80, 0x6c, 0xd0, 0x0e, 0xe8, 0x65,
0xe8, 0x75, 0xa8, 0x16, 0xaa, 0x81, 0x5e, 0x82, 0x9e, 0x82, 0xb6, 0x42, 0x7a, 0x09, 0xa2, 0x4c,
0xf5, 0x27, 0xca, 0x26, 0xaa, 0x99, 0x21, 0xa5, 0x8d, 0x58, 0x0c, 0x95, 0x4a, 0xbd, 0xc8, 0x93,
0x5e, 0x44, 0xbd, 0x1e, 0xc0, 0x3f, 0xbb, 0xd3, 0x23, 0x93, 0xd3, 0xc7, 0x4e, 0x68, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_pad_xpm[1] = {{ png, sizeof( png ), "delete_pad_xpm" }};
//EOF
+93
View File
@@ -0,0 +1,93 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0xb9, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xad, 0x95, 0x7b, 0x48, 0x9b,
0x57, 0x18, 0xc6, 0x93, 0x98, 0x18, 0x35, 0xda, 0x68, 0x92, 0x1a, 0x73, 0xf3, 0x92, 0x8b, 0xd1,
0x1a, 0x45, 0xbb, 0xae, 0x8c, 0x55, 0xa9, 0xbd, 0x28, 0x1b, 0x5d, 0x11, 0x5d, 0xa5, 0x88, 0x45,
0x36, 0x59, 0xa9, 0x76, 0xdd, 0xac, 0xb0, 0xee, 0xd6, 0xb2, 0x8e, 0xb5, 0x95, 0xb2, 0xfd, 0x51,
0xe8, 0xdc, 0x06, 0xa3, 0x60, 0xe9, 0xee, 0xa5, 0x74, 0x20, 0x9d, 0xd2, 0xd1, 0x21, 0xcc, 0x4d,
0xe6, 0x3a, 0x9b, 0x9a, 0x56, 0xd4, 0x6c, 0xde, 0xf0, 0x12, 0xaf, 0xd3, 0x44, 0x5b, 0xd4, 0x39,
0xdf, 0x3d, 0x27, 0x3b, 0x9f, 0x0d, 0xce, 0x32, 0x15, 0x0f, 0x3c, 0x7c, 0xdf, 0x77, 0x4e, 0x3c,
0xbf, 0xf3, 0xbe, 0xe7, 0x79, 0x5f, 0x45, 0xa2, 0x75, 0x0c, 0x22, 0x8a, 0x1d, 0x1b, 0x1b, 0xbb,
0xdf, 0xdf, 0xdf, 0xdf, 0x8b, 0xf7, 0xd4, 0x65, 0x6b, 0xc9, 0x43, 0x43, 0x43, 0x5d, 0x1e, 0x8f,
0xa7, 0x03, 0xef, 0x66, 0xd1, 0x7a, 0x07, 0x83, 0x00, 0xd0, 0x97, 0x94, 0x90, 0x40, 0x7a, 0x8d,
0x86, 0xda, 0xda, 0xda, 0x26, 0x04, 0x18, 0x83, 0xb8, 0xdd, 0xee, 0x51, 0x93, 0x56, 0x4b, 0x16,
0xa3, 0x91, 0x7a, 0x7b, 0x7b, 0x07, 0xd7, 0x05, 0x0b, 0x84, 0x14, 0xa9, 0xd5, 0x54, 0x01, 0x90,
0x1e, 0x4f, 0x0e, 0x3b, 0x20, 0x40, 0xca, 0x31, 0x5f, 0xa2, 0x52, 0xad, 0x1f, 0x86, 0x74, 0x39,
0x05, 0x88, 0xcf, 0x6e, 0xa7, 0x19, 0x9b, 0x8d, 0x8e, 0x47, 0x45, 0xf9, 0x61, 0x75, 0x75, 0x75,
0xc4, 0x20, 0x65, 0x00, 0x4c, 0xe3, 0x37, 0x3e, 0xab, 0x75, 0x09, 0x36, 0x3c, 0x3c, 0xdc, 0xbe,
0x26, 0x10, 0xfe, 0xa0, 0x2d, 0x41, 0xaf, 0xa7, 0x52, 0x9c, 0x78, 0x1a, 0x90, 0x19, 0x6c, 0x38,
0x6d, 0x32, 0x51, 0x85, 0x52, 0x49, 0x2c, 0xe0, 0x32, 0x3c, 0xbd, 0x06, 0x03, 0x4d, 0xc7, 0xc6,
0xd2, 0xb4, 0xd9, 0xec, 0x8f, 0x8c, 0xc1, 0x07, 0x06, 0x06, 0xba, 0xd6, 0x9a, 0x3a, 0x6b, 0x77,
0x77, 0xb7, 0x27, 0x01, 0x9b, 0x95, 0xe2, 0xb4, 0x3e, 0x40, 0x7c, 0x3a, 0x1d, 0x79, 0xa3, 0xa3,
0xe9, 0x26, 0x20, 0x53, 0x9b, 0x37, 0x93, 0x2f, 0x26, 0x86, 0x7c, 0x88, 0x82, 0x45, 0x66, 0xc2,
0x3c, 0x4b, 0x27, 0xbb, 0xbb, 0xe5, 0x7b, 0x89, 0x03, 0xb4, 0xe2, 0xda, 0xec, 0xec, 0xac, 0xad,
0xa7, 0xa7, 0xc7, 0xc3, 0x52, 0x52, 0x82, 0xcd, 0x27, 0xb1, 0xd9, 0x14, 0x36, 0x9d, 0x62, 0x20,
0xa4, 0x71, 0x0a, 0xdf, 0xe5, 0x78, 0x67, 0x90, 0xce, 0xce, 0xce, 0xff, 0x40, 0x0a, 0x65, 0x32,
0xd9, 0xed, 0x10, 0xb9, 0xfc, 0x1e, 0xde, 0xdf, 0x84, 0x42, 0x21, 0x19, 0x24, 0x81, 0xd4, 0xd0,
0x95, 0x70, 0x85, 0xc2, 0x8d, 0xe7, 0x0d, 0x28, 0x6d, 0x72, 0x72, 0x32, 0xbf, 0xa1, 0xa1, 0xc1,
0x9f, 0xae, 0x5a, 0x06, 0x60, 0xc0, 0xf0, 0x70, 0x3f, 0xe8, 0x26, 0xc4, 0xe6, 0xeb, 0xeb, 0xeb,
0x89, 0x19, 0x24, 0x10, 0x62, 0xb6, 0xdb, 0x2c, 0x0b, 0x63, 0xbf, 0x7c, 0x43, 0x0f, 0xbf, 0x3f,
0x47, 0xcf, 0xa6, 0x1b, 0xc8, 0x68, 0xfc, 0xa2, 0x2f, 0x25, 0x65, 0xd6, 0x95, 0x92, 0x32, 0x7f,
0x57, 0xa9, 0x2c, 0x1c, 0xbf, 0x78, 0xe6, 0x04, 0x51, 0xcb, 0x65, 0x6a, 0x38, 0x7f, 0x90, 0x32,
0x32, 0x32, 0xfe, 0x40, 0x3a, 0x26, 0xe2, 0x91, 0xb2, 0x52, 0x9e, 0x2e, 0x7f, 0x44, 0x00, 0x78,
0x71, 0x27, 0x2c, 0x75, 0xaf, 0x45, 0x46, 0x92, 0x16, 0xdf, 0x2e, 0x97, 0x6b, 0x22, 0xb0, 0xce,
0xb2, 0x0f, 0xe6, 0x6c, 0x27, 0xba, 0x51, 0x49, 0x74, 0x69, 0x2f, 0x9d, 0xd9, 0x1b, 0x4e, 0x7a,
0x7d, 0x35, 0x39, 0x1c, 0xe4, 0x97, 0x42, 0xb1, 0x9b, 0xda, 0x2e, 0x63, 0xed, 0xeb, 0x62, 0xfa,
0xab, 0x26, 0x8f, 0x9a, 0x9b, 0x9b, 0x97, 0xdc, 0xc5, 0xee, 0x82, 0x6d, 0xcc, 0xd2, 0x55, 0x8b,
0xcd, 0xbd, 0xec, 0x7e, 0x98, 0x19, 0xe2, 0xe2, 0xe8, 0x38, 0x9c, 0x18, 0x60, 0x7d, 0x3f, 0x4c,
0x21, 0x93, 0x4a, 0xdb, 0xdf, 0xd8, 0xa3, 0xa1, 0x73, 0x3b, 0x45, 0xa4, 0x0a, 0x95, 0xcf, 0xa9,
0x54, 0x47, 0x6e, 0x45, 0x47, 0xbf, 0x73, 0x4d, 0xab, 0x3d, 0xfb, 0x79, 0x44, 0xc4, 0x33, 0x8d,
0x4f, 0xc4, 0x6d, 0x5a, 0xbc, 0xb8, 0x2f, 0x9c, 0x9c, 0xcd, 0x8d, 0x24, 0xd4, 0x09, 0x73, 0x15,
0xdb, 0xd0, 0x7f, 0xf1, 0xdc, 0x75, 0xa5, 0x80, 0xf9, 0x30, 0x37, 0x63, 0xb1, 0xd0, 0x03, 0xd8,
0xbf, 0x02, 0xd1, 0xb2, 0xa2, 0x86, 0xeb, 0x7a, 0x45, 0xfc, 0x1e, 0x74, 0xd0, 0x69, 0xe8, 0x4b,
0xe8, 0x43, 0xe8, 0x3c, 0xf4, 0x16, 0x74, 0x0c, 0x2a, 0x83, 0xaa, 0xc4, 0xe2, 0xa0, 0xeb, 0x4d,
0x4d, 0x5d, 0x73, 0x0e, 0xd8, 0xba, 0x00, 0x27, 0xf5, 0xa2, 0x4e, 0x18, 0x4c, 0x70, 0x17, 0xbb,
0x33, 0xbf, 0xf5, 0xb1, 0x36, 0x03, 0x08, 0xab, 0x33, 0x56, 0x6f, 0xac, 0xee, 0x46, 0x47, 0x47,
0xef, 0x09, 0x6e, 0x0a, 0x81, 0xac, 0xd0, 0x73, 0x50, 0x29, 0x54, 0x0c, 0xed, 0x82, 0x1c, 0x90,
0x1d, 0x62, 0xa1, 0xef, 0xc9, 0xca, 0x3a, 0xf0, 0xba, 0xd3, 0xe9, 0x59, 0x10, 0x60, 0x42, 0x9d,
0x74, 0x74, 0x74, 0x8c, 0xc3, 0x20, 0x05, 0x4b, 0xd6, 0xc7, 0xbc, 0x00, 0x61, 0x9d, 0x84, 0x75,
0x14, 0xe1, 0x9e, 0x24, 0xdc, 0x69, 0x31, 0x50, 0x02, 0xc4, 0x16, 0xa2, 0xf8, 0x01, 0x64, 0xfc,
0xa9, 0x62, 0x6b, 0x99, 0x99, 0xc7, 0x4e, 0x3b, 0xef, 0xdc, 0x21, 0x06, 0x63, 0x90, 0xbb, 0x2d,
0xb7, 0x29, 0x37, 0x37, 0xf7, 0x23, 0xac, 0xc5, 0xb5, 0xb6, 0xb6, 0x3a, 0xfc, 0x30, 0x44, 0xb6,
0x12, 0x24, 0xb0, 0x4e, 0x18, 0x50, 0x0a, 0x05, 0xf1, 0x77, 0xf1, 0x0a, 0x6b, 0x39, 0x25, 0x79,
0xbb, 0xc9, 0xdb, 0xe7, 0xa2, 0x31, 0x77, 0x0b, 0x5d, 0x38, 0x94, 0xc6, 0xee, 0xe7, 0x1a, 0xcf,
0x86, 0x0e, 0x6d, 0xca, 0x3e, 0x32, 0x32, 0x72, 0x9f, 0xb5, 0xab, 0x95, 0x20, 0xab, 0x1d, 0xfe,
0x34, 0x07, 0x05, 0x85, 0x35, 0xe6, 0x3b, 0xc2, 0xe8, 0x85, 0x54, 0x11, 0x85, 0xc8, 0x94, 0x5e,
0xcc, 0x55, 0x43, 0x87, 0x21, 0x1b, 0xcf, 0xc0, 0x86, 0x0c, 0x89, 0xd1, 0x58, 0x93, 0x6a, 0xb5,
0xba, 0xc8, 0x62, 0xf9, 0x95, 0xd4, 0xea, 0xa3, 0xb5, 0xdc, 0x3c, 0x87, 0x58, 0xfa, 0x78, 0xd4,
0x1b, 0x32, 0xc4, 0x56, 0xeb, 0x6f, 0x16, 0xa1, 0xce, 0x34, 0x9a, 0xca, 0xab, 0xbc, 0x9b, 0xec,
0xe4, 0xf7, 0x2a, 0xd9, 0x28, 0x90, 0x28, 0x29, 0xa9, 0x27, 0xfe, 0x11, 0xe8, 0xc4, 0x67, 0xbc,
0x0c, 0x52, 0x20, 0xf9, 0x63, 0xfa, 0xe4, 0xfa, 0x46, 0x70, 0xb0, 0xa9, 0xca, 0x68, 0x48, 0x24,
0x5b, 0x82, 0x85, 0x82, 0x83, 0x2d, 0x9d, 0x98, 0x7a, 0x99, 0xf1, 0xd7, 0x7a, 0x3f, 0xe2, 0xe5,
0x5d, 0xdc, 0x6a, 0xfd, 0x5d, 0x9e, 0x9c, 0x3c, 0xff, 0x94, 0xc3, 0xf1, 0x77, 0x45, 0x7c, 0xfc,
0x8f, 0xdf, 0x6d, 0x4b, 0x77, 0xd0, 0xbc, 0xf3, 0x2a, 0xd1, 0xad, 0x77, 0xa9, 0x24, 0x33, 0x8e,
0xb9, 0x8e, 0x45, 0xb5, 0x8d, 0x75, 0x99, 0xd5, 0x44, 0x74, 0x52, 0xa3, 0x51, 0x0f, 0xaa, 0x22,
0x23, 0x06, 0xa4, 0x52, 0x43, 0x95, 0xdd, 0xee, 0x29, 0xdc, 0xb2, 0x65, 0xee, 0x03, 0x87, 0x63,
0xf1, 0x67, 0xa4, 0xe8, 0xa1, 0x90, 0x2a, 0xb3, 0xb9, 0x89, 0xf6, 0x67, 0xa6, 0x12, 0x7d, 0x7b,
0x84, 0xe8, 0x93, 0xa7, 0xe9, 0x64, 0x96, 0x9c, 0x78, 0x57, 0x2f, 0x80, 0x0c, 0xbc, 0x34, 0x1e,
0x3b, 0x76, 0xe5, 0x64, 0xef, 0xf0, 0x9f, 0x72, 0xb6, 0xfe, 0x14, 0x65, 0xda, 0x35, 0x70, 0x54,
0xf3, 0x52, 0x63, 0x7d, 0xa4, 0xc5, 0x85, 0xa4, 0xa4, 0xf1, 0xc1, 0xb0, 0xb0, 0x27, 0xbd, 0xcf,
0xa7, 0x2a, 0xe8, 0xc5, 0x34, 0x11, 0x85, 0x4a, 0x83, 0xfe, 0x5c, 0x8b, 0xbd, 0x8b, 0x5e, 0x2d,
0xcc, 0x26, 0xba, 0xfe, 0xef, 0x29, 0x5f, 0xda, 0x2a, 0x23, 0x93, 0xe9, 0xab, 0x07, 0x89, 0x89,
0xdd, 0xed, 0x66, 0xf3, 0x4f, 0x3f, 0xe8, 0x74, 0xd5, 0x57, 0x22, 0x23, 0x8b, 0x2f, 0x48, 0xa5,
0xea, 0x53, 0xf8, 0xed, 0xdb, 0x10, 0x7b, 0x7e, 0x0c, 0xd5, 0x40, 0xef, 0xf3, 0x3e, 0x59, 0xb4,
0x1a, 0x7b, 0x47, 0x85, 0xc8, 0x24, 0xee, 0x57, 0x76, 0x6c, 0xa2, 0xa3, 0x5b, 0x45, 0x24, 0x93,
0x48, 0x46, 0xf9, 0x29, 0xcf, 0x72, 0xeb, 0x56, 0x72, 0x67, 0x1d, 0xe6, 0x7d, 0x30, 0x1f, 0xda,
0xcf, 0xfe, 0x61, 0xf2, 0xef, 0x3c, 0x28, 0x1d, 0x52, 0xfe, 0x9f, 0xbd, 0x25, 0x3c, 0xbf, 0x6c,
0xd3, 0x4f, 0xf9, 0x29, 0xdf, 0x83, 0xca, 0xa1, 0x7d, 0xd0, 0x76, 0xde, 0x60, 0x6d, 0xbc, 0x0f,
0xb2, 0x6e, 0xaf, 0xe5, 0x7f, 0x23, 0x7c, 0x47, 0xf0, 0x68, 0x56, 0x34, 0xc3, 0x3f, 0x3f, 0x19,
0xa2, 0x7e, 0x5d, 0xaa, 0x4a, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82,
};
const BITMAP_OPAQUE delete_polygon_xpm[1] = {{ png, sizeof( png ), "delete_polygon_xpm" }};
//EOF
+87
View File
@@ -0,0 +1,87 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x04, 0x66, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x95, 0x6b, 0x4c, 0x5b,
0x65, 0x18, 0xc7, 0x5b, 0x3c, 0xb4, 0x3d, 0x5c, 0x4a, 0x0b, 0x74, 0x30, 0xe8, 0x85, 0x6b, 0x61,
0x3d, 0xfd, 0x30, 0xc1, 0x65, 0xce, 0x64, 0x90, 0x99, 0xe0, 0xa6, 0x0b, 0x62, 0x54, 0xdc, 0x26,
0xd3, 0x8c, 0xa8, 0xd9, 0xb2, 0xc5, 0xc0, 0x36, 0x85, 0xa9, 0x8b, 0x51, 0x67, 0x02, 0xcb, 0xbe,
0x80, 0xc6, 0xdb, 0x58, 0x66, 0xb2, 0x04, 0xb3, 0x60, 0x34, 0xeb, 0x07, 0x22, 0xc9, 0xc4, 0x4c,
0x67, 0xa0, 0x50, 0x59, 0xa6, 0x59, 0x66, 0xc6, 0xc5, 0x98, 0xe0, 0x48, 0x58, 0x32, 0xa0, 0x2d,
0x30, 0x5a, 0x0a, 0x8f, 0xff, 0xe7, 0x78, 0xce, 0x04, 0xa4, 0x64, 0xe5, 0xb3, 0x27, 0xf9, 0xa5,
0x87, 0x43, 0xdf, 0xf7, 0x77, 0x9e, 0xcb, 0xfb, 0x54, 0xa3, 0x59, 0xc7, 0x45, 0x44, 0x7b, 0x46,
0x46, 0x46, 0x82, 0xa1, 0x50, 0xe8, 0x12, 0xee, 0xc5, 0x15, 0xff, 0x2b, 0x1b, 0x1d, 0x1d, 0xbd,
0xe3, 0xf7, 0xfb, 0x7b, 0x71, 0x6f, 0xd1, 0xac, 0xf7, 0xc2, 0xe2, 0x7d, 0x9d, 0x9d, 0x9d, 0x0b,
0xfa, 0xf8, 0x78, 0x7a, 0xb6, 0xb2, 0x92, 0xe6, 0xe6, 0xe6, 0xba, 0x55, 0x19, 0x3e, 0xcb, 0x7d,
0x3e, 0xdf, 0x6c, 0x6a, 0x72, 0x32, 0x6d, 0x2b, 0x2d, 0xa5, 0x89, 0x89, 0x89, 0x1b, 0xeb, 0x92,
0xa9, 0x12, 0x51, 0xa7, 0xa3, 0x0f, 0x2d, 0x16, 0x72, 0x26, 0x25, 0x2d, 0x95, 0xed, 0x52, 0x25,
0x47, 0xd3, 0xd2, 0xe8, 0xb1, 0x94, 0x14, 0xda, 0x56, 0x52, 0x12, 0xbb, 0x0c, 0x5f, 0xde, 0xda,
0xd5, 0xd5, 0x25, 0x4b, 0x3e, 0xcd, 0xcc, 0xa4, 0x99, 0xa2, 0x22, 0x1a, 0xce, 0xc9, 0x21, 0x67,
0x62, 0xa2, 0x2c, 0xeb, 0xeb, 0xeb, 0x23, 0x96, 0x34, 0xa4, 0xa6, 0xd2, 0x74, 0x5e, 0x1e, 0x8d,
0xe7, 0xe7, 0xdf, 0x97, 0x05, 0x02, 0x01, 0x6f, 0x2c, 0xa2, 0xea, 0xe6, 0xa6, 0x26, 0x32, 0x41,
0xe4, 0x83, 0x60, 0xba, 0xa0, 0x80, 0x82, 0xf8, 0x1c, 0xca, 0xca, 0xa2, 0x42, 0xc8, 0xe2, 0xb4,
0x5a, 0x6a, 0xc0, 0xc6, 0x41, 0xab, 0x95, 0x82, 0x0e, 0x07, 0x4d, 0x43, 0xc4, 0x91, 0xb1, 0x1c,
0x35, 0x1b, 0x8f, 0x45, 0x14, 0x07, 0xbe, 0x3c, 0x56, 0x5f, 0x4f, 0x16, 0x51, 0xa4, 0xfe, 0xec,
0x6c, 0x79, 0xd3, 0xc0, 0xc6, 0x8d, 0x74, 0x2b, 0x3d, 0x9d, 0xce, 0x19, 0x8d, 0xe4, 0xdf, 0xb0,
0x41, 0xfe, 0x9b, 0x9f, 0x37, 0x22, 0x32, 0x96, 0x70, 0x3a, 0xb9, 0x76, 0xea, 0x3e, 0x4e, 0x50,
0x0f, 0x5e, 0x03, 0x29, 0x40, 0xbb, 0x96, 0xec, 0xad, 0xc6, 0x46, 0x4a, 0x37, 0x18, 0xa8, 0x17,
0x75, 0xf2, 0x83, 0x29, 0xb3, 0x99, 0xa6, 0x4c, 0x26, 0xf2, 0x63, 0x73, 0x7f, 0x46, 0x06, 0x35,
0x22, 0x32, 0x13, 0xa2, 0xf4, 0x7a, 0xbd, 0xcb, 0x24, 0xdb, 0x6d, 0x56, 0xeb, 0x7c, 0xeb, 0xfb,
0xc7, 0xe9, 0x9d, 0x57, 0x2a, 0x49, 0x1f, 0x6f, 0xbc, 0x93, 0x9f, 0xdf, 0x73, 0x50, 0x92, 0x66,
0xf7, 0xba, 0xdd, 0x91, 0x17, 0x56, 0x52, 0x52, 0x12, 0xd9, 0x73, 0xfb, 0x36, 0x0d, 0xbc, 0x54,
0x53, 0x43, 0x16, 0xa4, 0xf1, 0x2e, 0xd2, 0x33, 0x85, 0x68, 0x26, 0xf1, 0xf6, 0x2c, 0x6c, 0xc3,
0x3d, 0xa7, 0x91, 0x6b, 0xc6, 0x0d, 0xb2, 0xf4, 0x45, 0xcf, 0xb6, 0x9f, 0x79, 0x83, 0xe8, 0xca,
0x69, 0xa2, 0x8e, 0x97, 0xa9, 0x66, 0x4b, 0x1a, 0xd9, 0xed, 0xdf, 0x92, 0xdb, 0x4d, 0xab, 0x72,
0xe0, 0x00, 0x51, 0x4f, 0xcf, 0xc0, 0x3f, 0x85, 0xe7, 0x74, 0x21, 0x6d, 0x1c, 0x8d, 0x1c, 0x11,
0xa4, 0x83, 0x48, 0x5f, 0xa1, 0xd2, 0x20, 0x4b, 0x5b, 0x9f, 0xaf, 0x0f, 0x1a, 0x9e, 0xdb, 0x42,
0x74, 0x7e, 0x27, 0xdd, 0x3b, 0x65, 0xa5, 0x92, 0x4c, 0x0d, 0xe5, 0xe6, 0xfe, 0x10, 0x92, 0xa4,
0x7b, 0xb3, 0x92, 0x14, 0x9a, 0x96, 0xa4, 0x70, 0x50, 0xa5, 0xb6, 0x76, 0x7e, 0xb6, 0xb7, 0x77,
0x60, 0x51, 0x96, 0xe0, 0xed, 0x03, 0x68, 0x04, 0xae, 0x0b, 0xcb, 0xee, 0x22, 0x85, 0x01, 0xa4,
0x2d, 0x80, 0xda, 0x0d, 0xa1, 0x46, 0x2b, 0x5a, 0x5f, 0x96, 0x19, 0x75, 0xba, 0xc2, 0x9b, 0xce,
0x34, 0x81, 0x32, 0x92, 0x12, 0x48, 0x10, 0xd2, 0x7e, 0xc3, 0xb3, 0x36, 0xf0, 0x09, 0x38, 0x03,
0x9a, 0x98, 0x8a, 0x8a, 0x8a, 0x36, 0xe4, 0x7c, 0x9e, 0x25, 0x8d, 0x78, 0x73, 0xee, 0xb8, 0xa0,
0xcd, 0x26, 0xcb, 0xb8, 0xdb, 0x38, 0x8d, 0x7d, 0x10, 0x05, 0xed, 0x76, 0xb9, 0xbd, 0x47, 0x80,
0x2a, 0xc3, 0x04, 0xf1, 0xb0, 0x48, 0x5b, 0x5c, 0x3c, 0x7e, 0x5c, 0x92, 0xe6, 0x90, 0x9a, 0x05,
0x32, 0x18, 0x36, 0x7f, 0x85, 0x67, 0x9f, 0x2b, 0x82, 0x37, 0xc1, 0x51, 0xa6, 0xa5, 0xa5, 0xa5,
0xfd, 0x04, 0x9a, 0xc0, 0x8c, 0x0d, 0x87, 0xb1, 0x09, 0xb7, 0xef, 0x34, 0x64, 0x1c, 0x19, 0xcb,
0xe5, 0x9a, 0xa1, 0x41, 0xfa, 0x21, 0x9f, 0x71, 0x3a, 0xe5, 0x73, 0xc6, 0x87, 0x9a, 0x27, 0x08,
0xc6, 0xd5, 0x94, 0x9c, 0x3b, 0x97, 0x6b, 0xf6, 0x75, 0xb5, 0x06, 0x06, 0xc3, 0xc3, 0x17, 0xf0,
0xa8, 0x19, 0x3c, 0x09, 0xf2, 0x40, 0x36, 0xc8, 0x2a, 0x2b, 0x2b, 0xcb, 0xc5, 0xc1, 0xfb, 0xe9,
0xc5, 0xea, 0x6a, 0x2a, 0xc0, 0x9b, 0x0e, 0x41, 0x76, 0x02, 0x91, 0x71, 0x77, 0x5d, 0xbd, 0xda,
0x4f, 0xd7, 0xae, 0xfd, 0xfa, 0xa7, 0xdc, 0x8d, 0xdc, 0xfa, 0x78, 0x81, 0xcf, 0x70, 0xa8, 0x0d,
0x90, 0x78, 0x3c, 0x9e, 0x05, 0xa4, 0x6e, 0xaf, 0x2c, 0x92, 0xa4, 0x85, 0xc3, 0xff, 0x8a, 0x4a,
0x39, 0x6d, 0xef, 0x82, 0x22, 0x20, 0x28, 0xad, 0x2e, 0x33, 0x36, 0x36, 0x96, 0x10, 0x0e, 0x87,
0x2f, 0x3f, 0x5f, 0x55, 0x25, 0x47, 0xc6, 0x91, 0x70, 0x63, 0x70, 0x83, 0xe8, 0xf5, 0x59, 0x1f,
0x21, 0xb5, 0x3e, 0x3e, 0x67, 0x26, 0xbd, 0x9e, 0x44, 0x48, 0x78, 0x5c, 0xf1, 0xd8, 0xba, 0xdf,
0x76, 0xcb, 0x45, 0x8f, 0x7c, 0x81, 0x47, 0x27, 0x41, 0xce, 0x6a, 0xe7, 0x89, 0x0b, 0xcb, 0x32,
0x4e, 0x63, 0x7f, 0xff, 0x40, 0x98, 0x25, 0xbc, 0x4e, 0x10, 0x32, 0x5a, 0x05, 0x41, 0x68, 0x98,
0x9c, 0x9c, 0xec, 0x38, 0xdd, 0xdc, 0x4c, 0x3c, 0xae, 0x96, 0x49, 0x62, 0x15, 0x29, 0x32, 0x3d,
0xd8, 0x7f, 0xe8, 0xd0, 0x42, 0xab, 0xba, 0x8e, 0x45, 0x5c, 0x53, 0x51, 0x14, 0xed, 0x91, 0x48,
0xa4, 0x9a, 0x67, 0xe3, 0x7f, 0x16, 0xc6, 0x2a, 0x5a, 0xb2, 0xee, 0xe4, 0x4a, 0x11, 0xb0, 0x45,
0x5d, 0xf7, 0xbf, 0x48, 0xb9, 0x0c, 0x89, 0x89, 0x8f, 0x7b, 0x13, 0x12, 0x36, 0x91, 0x28, 0x6e,
0x25, 0xad, 0x36, 0xd9, 0x13, 0x93, 0xc8, 0xe9, 0x1c, 0xfc, 0xab, 0xb0, 0xf0, 0xd6, 0xb0, 0xcb,
0x15, 0xfc, 0x59, 0x92, 0x16, 0xbf, 0xc7, 0xb3, 0xcb, 0xab, 0x61, 0x36, 0x1f, 0xfc, 0xe3, 0x70,
0xed, 0x3e, 0x0a, 0x5f, 0xef, 0xa0, 0xc1, 0x0b, 0x75, 0x94, 0x69, 0x32, 0x44, 0x94, 0x43, 0x9e,
0x0f, 0x1e, 0x5a, 0x55, 0xe4, 0x72, 0xcd, 0x6f, 0x77, 0xbb, 0x17, 0xe7, 0xa2, 0x0d, 0xd2, 0xd5,
0x30, 0x1a, 0xab, 0xa8, 0xfb, 0xe3, 0x3a, 0x22, 0xcf, 0x11, 0xa2, 0xb3, 0x3b, 0xe8, 0xe9, 0x62,
0x3d, 0x61, 0xab, 0x76, 0xb0, 0x03, 0x24, 0x47, 0x8b, 0x4a, 0x5b, 0x50, 0x70, 0x63, 0x67, 0x5e,
0x9e, 0xef, 0x6b, 0x9b, 0xed, 0x1b, 0xaf, 0xcd, 0xd6, 0xf1, 0x8b, 0xc3, 0xd1, 0x79, 0xc5, 0xe1,
0xf8, 0xae, 0x3b, 0x1a, 0x66, 0x73, 0xed, 0xef, 0xe5, 0x9b, 0x2c, 0xf4, 0xe3, 0x91, 0x1c, 0x3a,
0xff, 0x94, 0x86, 0x44, 0x41, 0x33, 0x83, 0x7d, 0xce, 0x81, 0x3a, 0xe0, 0x00, 0x71, 0xd1, 0x72,
0xce, 0x13, 0xb6, 0x14, 0x1c, 0x53, 0x46, 0x50, 0xb3, 0x3a, 0x50, 0xd7, 0xe0, 0x12, 0xb8, 0x09,
0xae, 0x83, 0x8b, 0x80, 0xeb, 0xfb, 0xb6, 0xf2, 0x43, 0x2a, 0x44, 0x13, 0xc5, 0x29, 0xbf, 0xae,
0x9b, 0xc1, 0x13, 0x60, 0xf7, 0x03, 0xf0, 0x0c, 0x78, 0x15, 0xbc, 0xa7, 0x4c, 0xfa, 0x53, 0x60,
0x3f, 0xc8, 0x5c, 0x2b, 0x22, 0x55, 0xa6, 0x57, 0x72, 0x9c, 0xf2, 0x00, 0x98, 0x81, 0x15, 0x3c,
0xaa, 0x0c, 0xe1, 0x72, 0x25, 0x6d, 0xba, 0x95, 0x1b, 0xff, 0x0d, 0x5b, 0x77, 0x23, 0x60, 0x96,
0x80, 0x07, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE delete_rectangle_xpm[1] = {{ png, sizeof( png ), "delete_rectangle_xpm" }};
//EOF
+74
View File
@@ -0,0 +1,74 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0x88, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x96, 0x5d, 0x48, 0x53,
0x61, 0x18, 0xc7, 0xdf, 0x72, 0x33, 0x9d, 0x4b, 0x5d, 0x5a, 0x6e, 0x5a, 0x3a, 0x3f, 0x72, 0x12,
0x5e, 0x44, 0x65, 0x14, 0x04, 0xc5, 0xf2, 0xa2, 0x24, 0x2a, 0x33, 0xba, 0x2c, 0xba, 0x30, 0xbc,
0x88, 0x8a, 0xb4, 0x60, 0x69, 0xb0, 0x45, 0x73, 0x10, 0xda, 0x37, 0x44, 0x37, 0x7d, 0x17, 0x15,
0xe8, 0xc2, 0x02, 0x29, 0x58, 0x17, 0x12, 0x25, 0x2c, 0xba, 0xe8, 0xc3, 0x84, 0x58, 0x45, 0x60,
0xab, 0x2e, 0xda, 0xdc, 0x96, 0x82, 0x64, 0x4f, 0xff, 0xe7, 0xe8, 0xa9, 0xb7, 0xe3, 0x94, 0x0d,
0xda, 0x03, 0x7f, 0x76, 0xde, 0x9d, 0x73, 0x9e, 0xdf, 0x79, 0xbe, 0xde, 0x73, 0x84, 0x48, 0xd2,
0x88, 0x68, 0x0d, 0xf4, 0x04, 0x3a, 0x05, 0xe9, 0x34, 0xe7, 0x66, 0x41, 0xc7, 0xa0, 0x67, 0x50,
0xdd, 0xd4, 0xbb, 0x9d, 0xa2, 0x1d, 0x1a, 0x55, 0x7e, 0x67, 0x86, 0xac, 0x1b, 0x18, 0x18, 0x18,
0x29, 0x2a, 0x28, 0xa0, 0xb6, 0xd6, 0x56, 0x2c, 0xe9, 0xb6, 0x0a, 0x9b, 0x84, 0x5c, 0x38, 0xd9,
0xd9, 0x49, 0xf9, 0x26, 0x13, 0xf9, 0xfd, 0xfe, 0x31, 0xac, 0x37, 0x6b, 0x41, 0x31, 0x88, 0xa0,
0x71, 0x68, 0xc9, 0x4c, 0x10, 0x4b, 0x7e, 0x3e, 0xad, 0x9d, 0x3b, 0x97, 0x32, 0x75, 0x3a, 0x3a,
0xe2, 0x70, 0xa8, 0x30, 0xbd, 0x0a, 0xd1, 0xa7, 0xa5, 0x91, 0xdd, 0x68, 0x24, 0x13, 0xae, 0x99,
0x0a, 0x73, 0x0a, 0xef, 0x24, 0x88, 0x75, 0x35, 0x0e, 0x64, 0xf5, 0xe0, 0xe0, 0xe0, 0x48, 0xe1,
0xfc, 0xf9, 0xb4, 0x35, 0x37, 0x97, 0xc2, 0x95, 0x95, 0xf4, 0x70, 0xd1, 0x22, 0x32, 0xea, 0xf5,
0x74, 0xa8, 0xa5, 0x85, 0x61, 0x01, 0x86, 0xe8, 0x66, 0xcf, 0xa6, 0xcb, 0x0b, 0x16, 0x50, 0x6c,
0xf1, 0x62, 0xda, 0x33, 0x6f, 0x1e, 0xe5, 0x64, 0x65, 0x51, 0x7f, 0x7f, 0x3f, 0xc3, 0x36, 0x4c,
0x78, 0x3a, 0x26, 0x6a, 0x24, 0xd0, 0x18, 0x64, 0xd5, 0x80, 0x6e, 0xd5, 0x2c, 0x5b, 0x46, 0x95,
0x19, 0x19, 0x0a, 0xe4, 0x07, 0x1c, 0xc5, 0xca, 0xca, 0xa8, 0x07, 0x29, 0xe4, 0xc8, 0xd6, 0xdb,
0xed, 0xa4, 0x07, 0xe4, 0x06, 0xa2, 0x8d, 0x96, 0x94, 0x28, 0xe7, 0xa2, 0xb8, 0x66, 0xa5, 0xc1,
0x40, 0x65, 0x58, 0xc3, 0x1e, 0xc9, 0x51, 0xf9, 0x24, 0xd8, 0x39, 0x0d, 0x68, 0x9b, 0xcf, 0xe7,
0xfb, 0x65, 0x98, 0x33, 0x87, 0x5a, 0xf2, 0xf2, 0x26, 0x1c, 0x15, 0x17, 0x53, 0xa4, 0xa8, 0x88,
0x7a, 0xf0, 0xe4, 0xe6, 0xf4, 0x74, 0xba, 0x8e, 0x48, 0x23, 0x16, 0x0b, 0x45, 0x17, 0x2e, 0x54,
0x60, 0xed, 0x80, 0x72, 0x1a, 0xbb, 0xbb, 0xbb, 0x19, 0xd4, 0x28, 0x83, 0x6a, 0x25, 0xd0, 0xa8,
0x70, 0x0b, 0x8b, 0x06, 0xb6, 0xbb, 0xaf, 0xaf, 0x6f, 0xdc, 0x98, 0x99, 0x49, 0xfb, 0xd9, 0x29,
0x20, 0x11, 0x44, 0x34, 0x0c, 0x87, 0xc3, 0x80, 0x2b, 0x42, 0xda, 0x22, 0x85, 0x85, 0xe4, 0x41,
0x33, 0xa4, 0x23, 0xd2, 0x49, 0x48, 0x73, 0xbc, 0xee, 0x7b, 0x2a, 0xc1, 0xda, 0xe3, 0xd4, 0x6a,
0xb7, 0x1a, 0x59, 0x73, 0x76, 0x36, 0x0d, 0xa3, 0x66, 0x61, 0x38, 0x0d, 0xe3, 0x38, 0x0c, 0x38,
0x43, 0xdd, 0x38, 0xe6, 0x48, 0xba, 0xba, 0xba, 0xa6, 0x81, 0xb0, 0xb9, 0x44, 0xbd, 0x04, 0x1a,
0x86, 0x72, 0xe3, 0xcc, 0x89, 0xaf, 0xa9, 0xa9, 0x49, 0xa9, 0x49, 0x00, 0x69, 0x0b, 0xe7, 0xe4,
0x50, 0x08, 0x5d, 0xc6, 0xa0, 0x6f, 0x00, 0x19, 0x00, 0xd9, 0xde, 0xd0, 0xc0, 0x90, 0x17, 0xda,
0x39, 0x93, 0x6d, 0x16, 0x9c, 0xbf, 0xfe, 0x03, 0x73, 0x09, 0x87, 0x06, 0x72, 0x41, 0xed, 0xae,
0x4b, 0x1c, 0x01, 0x47, 0xc4, 0x30, 0x44, 0xc5, 0xa9, 0xe3, 0x54, 0xf6, 0x02, 0x96, 0xf5, 0xb7,
0x1b, 0x6f, 0x4f, 0x0f, 0x73, 0x89, 0x5d, 0x52, 0x54, 0x5f, 0xc5, 0x49, 0x91, 0xa9, 0x42, 0x3a,
0x3b, 0x3a, 0x94, 0xb4, 0x70, 0x77, 0x71, 0x2d, 0x94, 0x1a, 0xa1, 0x2e, 0xaf, 0x00, 0xe3, 0x63,
0xfe, 0x8f, 0x9b, 0xe4, 0x3e, 0x9a, 0x42, 0x33, 0x67, 0x71, 0x60, 0x17, 0x85, 0x1e, 0x80, 0x0f,
0x12, 0x6c, 0x2f, 0x2e, 0x3c, 0x7c, 0xe6, 0xf4, 0x69, 0x05, 0x72, 0xd3, 0x6c, 0xa6, 0x98, 0xd5,
0x4a, 0x51, 0xcc, 0x11, 0x37, 0x84, 0x1b, 0xa9, 0xe3, 0x80, 0x0f, 0xa2, 0x36, 0x0c, 0x89, 0x95,
0x96, 0x52, 0xac, 0xa2, 0x82, 0x1e, 0xe0, 0x3c, 0xc3, 0x8e, 0xb6, 0xb5, 0x31, 0xec, 0x44, 0xfc,
0xa8, 0xe0, 0x5c, 0x02, 0x7d, 0xfa, 0x39, 0xfe, 0xf3, 0xca, 0x86, 0xda, 0x5a, 0x2a, 0x45, 0xc7,
0x7d, 0x2c, 0x2f, 0xa7, 0x18, 0x0b, 0x0e, 0xdd, 0x88, 0x84, 0xe1, 0x6d, 0x70, 0xa6, 0x34, 0x08,
0x52, 0xc8, 0xc3, 0xfa, 0xc3, 0x66, 0xa3, 0x2f, 0xf8, 0xad, 0xc6, 0xc0, 0xd6, 0x2c, 0x5d, 0xca,
0xa0, 0x9e, 0xe9, 0x40, 0x19, 0xd0, 0x67, 0x15, 0x66, 0xbf, 0x66, 0x3f, 0x10, 0x0a, 0x85, 0x3e,
0xac, 0x5a, 0xb1, 0x82, 0x6c, 0x28, 0x7c, 0x00, 0x73, 0xe4, 0x41, 0xfa, 0xa4, 0x16, 0xbe, 0xa3,
0xb6, 0xfe, 0x3e, 0xd4, 0x2a, 0xc8, 0xc3, 0x8a, 0x2d, 0xa8, 0x0a, 0x0f, 0x34, 0x34, 0x34, 0xf4,
0x15, 0xe7, 0x6d, 0xd3, 0xef, 0xa0, 0xdc, 0x08, 0x7f, 0xa3, 0x7a, 0x1b, 0x1a, 0x0d, 0x59, 0x55,
0x98, 0x19, 0x4f, 0x2f, 0x0d, 0x63, 0xb3, 0xb6, 0xf5, 0x79, 0x80, 0xab, 0xb1, 0x83, 0x04, 0x83,
0x41, 0x86, 0x54, 0xcd, 0xfc, 0x3e, 0x70, 0x8a, 0x6c, 0x28, 0x24, 0x75, 0x60, 0x3d, 0x6e, 0x2a,
0x66, 0xd8, 0xf6, 0xfa, 0x7a, 0xf2, 0x7a, 0xbd, 0x53, 0xe6, 0x44, 0x85, 0x6d, 0xaa, 0xab, 0x4b,
0x10, 0xf2, 0xef, 0xeb, 0x43, 0x8d, 0xca, 0x8f, 0x3d, 0x71, 0xf9, 0x4e, 0xef, 0xce, 0x8d, 0x81,
0xef, 0x81, 0x9b, 0xbd, 0xef, 0x7a, 0x1d, 0xbc, 0xd6, 0xea, 0x7d, 0xf8, 0xfd, 0x0e, 0x00, 0xce,
0x42, 0x15, 0x89, 0xbf, 0xe5, 0xdc, 0xa2, 0x00, 0x80, 0x11, 0x09, 0x96, 0x88, 0x1e, 0x8b, 0xbb,
0x22, 0x4d, 0x24, 0x6d, 0x4e, 0x71, 0x3e, 0x49, 0x10, 0xcb, 0x93, 0x3c, 0xe8, 0xb8, 0x28, 0xc1,
0x8d, 0xcf, 0x13, 0xd0, 0x1b, 0x09, 0xf4, 0x0b, 0x35, 0xdd, 0x22, 0x52, 0x64, 0xbc, 0x7d, 0xdd,
0x93, 0x60, 0x11, 0xa8, 0x2a, 0x35, 0x28, 0x8f, 0x30, 0xc1, 0x79, 0x40, 0x82, 0xbd, 0x84, 0x0c,
0xa9, 0x81, 0x71, 0xf7, 0x4d, 0x7c, 0xe8, 0xa8, 0xb0, 0x8b, 0x22, 0x65, 0xe6, 0x12, 0x8d, 0x12,
0x28, 0x26, 0x52, 0x6a, 0x4e, 0xd1, 0x91, 0xc8, 0x27, 0xdc, 0x7f, 0xb7, 0xdf, 0xec, 0x55, 0xe0,
0x28, 0x5e, 0x44, 0x1a, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
0x82,
};
const BITMAP_OPAQUE delete_track_xpm[1] = {{ png, sizeof( png ), "delete_track_xpm" }};
//EOF
@@ -0,0 +1,63 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x02, 0xd8, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x95, 0x4b, 0x48, 0x54,
0x61, 0x14, 0xc7, 0xbf, 0x3b, 0x73, 0x9d, 0xb9, 0xef, 0x3b, 0x8a, 0x44, 0xa2, 0xe0, 0x66, 0x28,
0x72, 0x11, 0x44, 0x14, 0xd8, 0x42, 0x2a, 0x23, 0x12, 0x1f, 0xb9, 0x68, 0xd7, 0x2e, 0x02, 0xc3,
0x1e, 0x08, 0x2e, 0x4a, 0x2b, 0x88, 0x5e, 0x36, 0x88, 0x56, 0x1b, 0x45, 0x69, 0x51, 0x63, 0x42,
0x05, 0x39, 0x6a, 0xe5, 0xa3, 0x07, 0x4c, 0xab, 0x20, 0xa7, 0xb4, 0x14, 0x1c, 0xa1, 0x0c, 0x33,
0x47, 0xed, 0xe5, 0x4c, 0x92, 0x95, 0x0e, 0xf3, 0xef, 0xdc, 0xdb, 0x20, 0x04, 0xa6, 0x33, 0x8e,
0xab, 0xf0, 0xc2, 0x61, 0xbe, 0xfb, 0xf1, 0xcd, 0xf9, 0xf1, 0xfd, 0xcf, 0xf9, 0x9f, 0xcb, 0x58,
0xa2, 0x0f, 0xcf, 0xef, 0xe1, 0x44, 0x71, 0x8c, 0x56, 0xe9, 0x8b, 0x1f, 0x3c, 0xc3, 0x76, 0xc5,
0x1d, 0x67, 0xd9, 0x96, 0xe8, 0xbf, 0xb3, 0x38, 0x87, 0x23, 0x28, 0x54, 0x9c, 0x0c, 0x73, 0xba,
0x3e, 0x44, 0xef, 0xd2, 0x62, 0x20, 0x2c, 0x2b, 0xf6, 0xb3, 0xdd, 0x9c, 0xa6, 0x05, 0xa4, 0xbb,
0x9e, 0x88, 0xf6, 0x79, 0x0a, 0xb6, 0x63, 0x65, 0x33, 0x5c, 0x72, 0x72, 0x17, 0x65, 0xe4, 0x16,
0xe4, 0xd4, 0x75, 0xd5, 0x21, 0x9e, 0x28, 0xbb, 0x53, 0x06, 0x76, 0x9a, 0x81, 0x5b, 0xa3, 0xf9,
0x85, 0x0b, 0x55, 0xbf, 0xb4, 0xf1, 0x8f, 0x50, 0xc7, 0x27, 0xa1, 0x05, 0x26, 0xc1, 0xe7, 0xe5,
0x4d, 0x33, 0x87, 0xa3, 0x66, 0x41, 0x90, 0xcf, 0xe7, 0x43, 0x3c, 0x51, 0xdf, 0x51, 0x0f, 0xb6,
0x89, 0x07, 0x13, 0x84, 0x30, 0xbf, 0x33, 0x37, 0x28, 0x3f, 0x7c, 0x0c, 0xf5, 0xfd, 0x07, 0x08,
0x57, 0xae, 0xce, 0x5a, 0xb3, 0xb3, 0x83, 0x94, 0x12, 0x14, 0x07, 0x12, 0x02, 0x79, 0xbd, 0x5e,
0x38, 0xb7, 0x6e, 0x04, 0x89, 0x03, 0xb6, 0x99, 0x95, 0x33, 0x59, 0xee, 0x24, 0x00, 0x94, 0x37,
0xc3, 0xe0, 0x0b, 0x8b, 0xa6, 0x28, 0xdd, 0x29, 0x8a, 0x72, 0x52, 0x0f, 0x74, 0xb3, 0xda, 0xbf,
0x64, 0x8c, 0x15, 0xd2, 0xda, 0xda, 0x8a, 0xb5, 0x4e, 0x27, 0xa4, 0xca, 0x4a, 0x30, 0x5d, 0x02,
0xcb, 0xa2, 0x4a, 0x89, 0xe2, 0x13, 0x7b, 0x4d, 0x0d, 0xe4, 0x41, 0x3f, 0xac, 0x05, 0x05, 0x06,
0xe8, 0x92, 0x51, 0x75, 0x6b, 0xf6, 0xb6, 0x29, 0xba, 0xed, 0x74, 0xb4, 0x66, 0x52, 0xcc, 0xa0,
0xc6, 0xc6, 0x46, 0xe8, 0xe9, 0x19, 0x90, 0xae, 0xbb, 0x4d, 0x99, 0x92, 0x0e, 0x97, 0x80, 0x2f,
0xde, 0xfb, 0x9d, 0x2f, 0x2e, 0x9e, 0x16, 0xda, 0xda, 0x20, 0xbd, 0x7a, 0x0d, 0x7b, 0xed, 0xe5,
0x30, 0x5f, 0x54, 0x14, 0xa2, 0xbd, 0x90, 0x21, 0xa3, 0x3a, 0x32, 0x0a, 0xdb, 0x91, 0xa3, 0x33,
0x9c, 0xa6, 0xfb, 0xcd, 0xd6, 0x5f, 0x0a, 0xd2, 0xd2, 0xd2, 0x02, 0xde, 0x6e, 0x87, 0x7c, 0xff,
0x01, 0xd4, 0xb1, 0x09, 0x18, 0x09, 0x0c, 0xa9, 0x64, 0xff, 0x10, 0xa4, 0xfe, 0x01, 0x48, 0xbd,
0xbd, 0x10, 0xe9, 0x9c, 0xd4, 0xdb, 0x07, 0x69, 0x60, 0xc0, 0xdc, 0x57, 0xde, 0x0e, 0x9b, 0xe7,
0xd4, 0xc0, 0x04, 0xec, 0xc7, 0x4f, 0x84, 0x4d, 0x9f, 0x2d, 0x05, 0xea, 0xe9, 0xe9, 0xc1, 0xc1,
0xd2, 0x52, 0xa8, 0x1b, 0xb2, 0x20, 0x3f, 0xf7, 0x99, 0x09, 0x44, 0xf7, 0x4d, 0xd8, 0xa9, 0x36,
0x86, 0x6c, 0xa2, 0xf7, 0x29, 0xa4, 0x17, 0x2f, 0x21, 0x78, 0x3c, 0xf4, 0x5e, 0x6b, 0xee, 0x4b,
0x1d, 0x9d, 0x7f, 0xce, 0xdd, 0xba, 0x1d, 0x21, 0xf9, 0x82, 0x86, 0xa9, 0x63, 0xae, 0x51, 0x95,
0xcb, 0x05, 0x25, 0x83, 0xe4, 0xf3, 0xb4, 0x81, 0xd3, 0x65, 0xb0, 0xf5, 0xa9, 0xed, 0x9c, 0xa2,
0x0c, 0xda, 0xab, 0xab, 0xe9, 0x66, 0xfd, 0xb0, 0xe6, 0xe7, 0x87, 0x98, 0xaa, 0x76, 0x92, 0xb7,
0xda, 0xad, 0xb9, 0xb9, 0x41, 0xe1, 0xfc, 0xc5, 0x59, 0x4e, 0x55, 0x03, 0x86, 0xa9, 0xe3, 0xee,
0x3a, 0xb7, 0x9b, 0x6a, 0x94, 0x9e, 0x06, 0x96, 0x64, 0x35, 0x4c, 0xbb, 0x9d, 0x3a, 0xeb, 0x9a,
0x71, 0x0b, 0x43, 0xae, 0x68, 0x33, 0x14, 0x52, 0xec, 0xa0, 0xd6, 0x9f, 0xa3, 0x89, 0xd1, 0x47,
0xeb, 0xd4, 0x65, 0xfb, 0xc8, 0xd5, 0xec, 0x02, 0x4b, 0x23, 0x1f, 0x59, 0x2c, 0x11, 0xea, 0xba,
0x9f, 0xa2, 0xbb, 0x09, 0xca, 0xf0, 0x3b, 0x24, 0x95, 0x1c, 0x9a, 0x21, 0xc0, 0x0f, 0xd3, 0x47,
0x36, 0x5b, 0x33, 0xfd, 0xda, 0x12, 0x32, 0x6c, 0x43, 0x77, 0x03, 0xc8, 0x29, 0xe0, 0x1c, 0xda,
0x57, 0xa9, 0xfd, 0x1e, 0xd4, 0xd1, 0xb1, 0xf9, 0xb0, 0x55, 0x54, 0xce, 0x52, 0x4d, 0x9e, 0x19,
0xa3, 0x36, 0xe1, 0xc9, 0x60, 0x82, 0x8c, 0x59, 0x97, 0xc3, 0x4a, 0xb8, 0x94, 0x94, 0x90, 0x42,
0x8d, 0xa0, 0x4d, 0x7c, 0x82, 0x74, 0xa3, 0x29, 0x42, 0xf5, 0x19, 0xa1, 0x94, 0xfa, 0x8a, 0x8c,
0xa0, 0x79, 0x90, 0x51, 0x23, 0x9b, 0x6d, 0x9f, 0x25, 0x33, 0xf3, 0x9b, 0xd2, 0xfd, 0x88, 0x1a,
0x44, 0xff, 0x42, 0xe9, 0x9c, 0xff, 0x1c, 0xde, 0x09, 0x81, 0xe8, 0xb1, 0x68, 0xda, 0x39, 0x6a,
0xdf, 0x39, 0x5a, 0xe6, 0x2c, 0xfa, 0x39, 0x4a, 0x14, 0x14, 0x9d, 0x67, 0xeb, 0x96, 0xfc, 0x40,
0xae, 0x00, 0x28, 0xb6, 0x67, 0x15, 0xb4, 0x0a, 0xfa, 0x7f, 0x41, 0xbf, 0x01, 0xba, 0x28, 0xea,
0x15, 0x41, 0x75, 0x1d, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
0x82,
};
const BITMAP_OPAQUE drag_outline_segment_xpm[1] = {{ png, sizeof( png ), "drag_outline_segment_xpm" }};
//EOF
+77
View File
@@ -0,0 +1,77 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0xc0, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xb5, 0x55, 0x5d, 0x68, 0x14,
0x57, 0x14, 0xbe, 0x33, 0x9b, 0x99, 0x9d, 0x9f, 0x3b, 0x13, 0x49, 0x4a, 0xfb, 0x92, 0x87, 0x48,
0x4d, 0x1b, 0x1f, 0x8a, 0x9a, 0x3e, 0x36, 0x0f, 0x05, 0xa1, 0xd0, 0x3f, 0x68, 0x05, 0xa9, 0x45,
0x68, 0x36, 0x71, 0xb7, 0x56, 0xd1, 0x56, 0x9b, 0xa2, 0x20, 0x6b, 0x08, 0xf8, 0xae, 0x96, 0x8a,
0xad, 0x35, 0xd1, 0x8d, 0x01, 0x4d, 0x91, 0x58, 0xc5, 0x1f, 0xf0, 0xa5, 0x15, 0xf4, 0xc1, 0x1a,
0x62, 0xb6, 0xa9, 0x46, 0x13, 0x7f, 0x36, 0x9b, 0x6c, 0x95, 0x50, 0x5a, 0x85, 0x8c, 0xae, 0x9b,
0x5d, 0x73, 0xfa, 0xdd, 0xeb, 0x28, 0xee, 0x66, 0x93, 0x4d, 0xfc, 0xb9, 0xf0, 0x71, 0xd8, 0x73,
0xef, 0x9c, 0xef, 0x9e, 0x73, 0xbe, 0x7b, 0x96, 0xb1, 0xe7, 0x5b, 0x55, 0xcc, 0x30, 0x52, 0xb0,
0x1f, 0xb2, 0x97, 0xb8, 0x6c, 0xc5, 0x71, 0x06, 0xf5, 0x50, 0x53, 0x4e, 0xb1, 0xac, 0x71, 0xfc,
0x7e, 0xeb, 0x65, 0x90, 0xa8, 0x8a, 0xeb, 0x9e, 0xd6, 0x3f, 0x5f, 0x99, 0x76, 0xff, 0xbb, 0x4b,
0x66, 0xfb, 0xfe, 0x49, 0xc5, 0xb6, 0xc7, 0xe0, 0x7f, 0xed, 0x05, 0xe7, 0x62, 0x6f, 0x0f, 0xd4,
0xbd, 0xed, 0xb9, 0xa9, 0x5b, 0xe4, 0x8e, 0xfd, 0x23, 0x11, 0x6c, 0xfe, 0x6e, 0x02, 0x19, 0xfe,
0x89, 0x5d, 0xe3, 0xc5, 0x90, 0x04, 0x02, 0x0d, 0x2c, 0x18, 0xcc, 0x99, 0x3f, 0xfe, 0x44, 0xbc,
0x2f, 0x4e, 0x0e, 0xc8, 0x9c, 0x9b, 0xc3, 0x64, 0x75, 0xfd, 0x42, 0xea, 0x82, 0x05, 0x59, 0x90,
0x75, 0x3f, 0x3f, 0x49, 0x30, 0xb8, 0x8e, 0x29, 0xca, 0x84, 0x52, 0x5e, 0xfe, 0x07, 0x44, 0x90,
0xd4, 0xbf, 0x5a, 0x93, 0xe3, 0x89, 0x61, 0x32, 0x0f, 0x1e, 0x22, 0xa6, 0xeb, 0x9e, 0xf4, 0x97,
0x95, 0xdd, 0x61, 0x9c, 0x1f, 0x16, 0xa7, 0x9f, 0x29, 0x0f, 0x7c, 0xbc, 0x47, 0xad, 0xaa, 0xf2,
0x90, 0x51, 0xd6, 0xf7, 0x6d, 0xd2, 0x23, 0x5f, 0x66, 0xed, 0xa1, 0x6b, 0x64, 0x74, 0x74, 0x90,
0x52, 0x51, 0x71, 0x41, 0x38, 0x61, 0xcf, 0xaa, 0xf3, 0xe7, 0x67, 0xfd, 0x32, 0xce, 0xa9, 0x67,
0xe5, 0xf8, 0xe8, 0x6c, 0xe0, 0x9d, 0x7a, 0x8f, 0xff, 0x75, 0x89, 0x98, 0xaa, 0x4e, 0x2a, 0x95,
0xaf, 0xf4, 0x32, 0xd3, 0x4c, 0x69, 0x91, 0x48, 0xce, 0xbe, 0x3c, 0x40, 0x46, 0x2c, 0x46, 0xc8,
0xf6, 0x9e, 0x52, 0x59, 0xd9, 0x0b, 0x3b, 0x6e, 0x76, 0x74, 0x92, 0xbe, 0xf1, 0xdb, 0x8c, 0x2f,
0x90, 0x59, 0xa9, 0xf1, 0x75, 0x1c, 0x4e, 0xea, 0x8d, 0xab, 0x1e, 0x38, 0x23, 0x29, 0x72, 0x92,
0xa3, 0x64, 0x76, 0x1f, 0x21, 0x63, 0x7f, 0x8c, 0x8c, 0xb6, 0x76, 0x32, 0xcf, 0x9c, 0x21, 0x2b,
0x1e, 0x27, 0xab, 0xb7, 0x97, 0x82, 0x6d, 0x6d, 0x64, 0xec, 0xdb, 0x47, 0x66, 0xc7, 0x01, 0xe2,
0x43, 0xd7, 0xc9, 0x19, 0xfd, 0x9b, 0xcc, 0x3d, 0x7b, 0x27, 0x21, 0x7d, 0x51, 0x85, 0x8f, 0x4a,
0xf5, 0x64, 0xaf, 0x5a, 0xf3, 0x46, 0xc6, 0x19, 0x1e, 0x91, 0x4d, 0xe7, 0xb0, 0xfc, 0xfa, 0x0d,
0xb2, 0xaf, 0x0e, 0x92, 0x85, 0xec, 0x2c, 0x88, 0xc1, 0xec, 0xe9, 0x01, 0xd1, 0x45, 0xb2, 0xfa,
0xfb, 0xc9, 0x1e, 0xb8, 0x42, 0xa2, 0x94, 0x1c, 0xe2, 0x70, 0x46, 0x71, 0xb1, 0xdb, 0x63, 0xa4,
0x37, 0x84, 0x72, 0xe8, 0xe7, 0x68, 0xa9, 0x8c, 0x74, 0xc6, 0xdd, 0x2e, 0xf5, 0xcd, 0x5a, 0x8f,
0x5f, 0xec, 0x23, 0x9e, 0x1c, 0x21, 0x7d, 0xc3, 0xc6, 0x09, 0xad, 0xb1, 0x29, 0xad, 0x35, 0x84,
0xd2, 0x46, 0x67, 0xe7, 0xa4, 0x05, 0xbf, 0xf9, 0xdb, 0xef, 0x54, 0x16, 0x0a, 0x65, 0xb4, 0xc6,
0xc6, 0xb4, 0x16, 0x0e, 0x67, 0xec, 0x0b, 0x3d, 0xe4, 0x24, 0x92, 0xa4, 0x7d, 0xb6, 0x22, 0xad,
0x70, 0x67, 0x50, 0x4e, 0x90, 0x59, 0x2d, 0xc3, 0xd8, 0x82, 0xfa, 0xdf, 0xb3, 0x8e, 0x1d, 0x17,
0x3d, 0x7a, 0x08, 0xcf, 0x66, 0xe0, 0x94, 0xd6, 0xd4, 0x94, 0x15, 0x99, 0x89, 0x32, 0xfa, 0xb7,
0xde, 0x0c, 0x9b, 0x30, 0x76, 0xec, 0xa4, 0xc0, 0x92, 0x3a, 0x4f, 0xe1, 0xfc, 0xb4, 0x78, 0x75,
0x73, 0x7d, 0x3f, 0x9f, 0x40, 0x00, 0x79, 0xaa, 0xd3, 0xc2, 0x91, 0xac, 0x28, 0xa3, 0x11, 0xcb,
0x57, 0x1d, 0xa4, 0x9e, 0x83, 0x4a, 0x77, 0x88, 0x09, 0x32, 0x7d, 0xc0, 0xad, 0x6c, 0x09, 0xb0,
0x0d, 0x38, 0x02, 0x9c, 0x60, 0x2d, 0x6c, 0x37, 0xf0, 0x31, 0x6b, 0x95, 0x1f, 0x2d, 0x06, 0xd1,
0x2d, 0x58, 0x12, 0xd0, 0x9b, 0x9b, 0x73, 0xfc, 0x46, 0x82, 0xcc, 0x5f, 0x8f, 0x12, 0xde, 0x97,
0xf4, 0xc1, 0xe6, 0x98, 0xa6, 0x85, 0xa6, 0x27, 0x68, 0x65, 0xf3, 0x10, 0xf8, 0x30, 0x40, 0xd3,
0xe0, 0x12, 0xb0, 0x48, 0x92, 0x21, 0x33, 0xeb, 0xe4, 0x29, 0xa9, 0x2c, 0xa9, 0x46, 0x80, 0x5f,
0x19, 0x24, 0xb5, 0xba, 0xda, 0x83, 0x80, 0xbe, 0x9e, 0x89, 0xc4, 0x45, 0x90, 0xf8, 0x0c, 0x24,
0x8f, 0x31, 0x8e, 0xb3, 0x75, 0xa2, 0x8c, 0xa2, 0x67, 0x4e, 0xbc, 0x5f, 0x2a, 0xcb, 0x4d, 0xdd,
0xa6, 0x40, 0x7d, 0xbd, 0x87, 0x72, 0xfd, 0x3c, 0x73, 0xfd, 0x45, 0x79, 0xa6, 0x06, 0x4d, 0xf8,
0x59, 0x64, 0x0b, 0xfc, 0x57, 0x41, 0xa6, 0x0b, 0x81, 0xa8, 0xb5, 0xb5, 0x9e, 0x20, 0xd1, 0x57,
0x85, 0x33, 0x98, 0xe6, 0xe7, 0xe4, 0x04, 0x29, 0x51, 0xb2, 0xcc, 0x53, 0x81, 0x32, 0x20, 0xfe,
0xf4, 0xc9, 0x7e, 0x94, 0x2d, 0x84, 0xef, 0x5a, 0x1e, 0x59, 0x94, 0x2d, 0x93, 0x7b, 0x2e, 0xa4,
0x5f, 0x53, 0x23, 0x26, 0x40, 0x52, 0x4c, 0x90, 0x99, 0xb3, 0x89, 0xb2, 0x0f, 0xf2, 0x82, 0xb4,
0xb0, 0x9d, 0x45, 0x32, 0x7e, 0xbf, 0x20, 0xab, 0xef, 0x9f, 0xbc, 0x33, 0x5d, 0x6f, 0x17, 0x13,
0xa4, 0xb4, 0x6c, 0x5b, 0xd8, 0xca, 0x82, 0xdb, 0xae, 0x9e, 0x72, 0x66, 0x1b, 0x02, 0xe5, 0x5f,
0xa6, 0x6b, 0xee, 0x73, 0x39, 0xca, 0xde, 0x2d, 0xb8, 0x6d, 0x77, 0x11, 0xc9, 0xff, 0x50, 0x70,
0xe6, 0x81, 0xcc, 0x3c, 0x3a, 0x9b, 0x4c, 0x24, 0x47, 0x0d, 0x93, 0x8d, 0xdd, 0xca, 0xfe, 0x9d,
0x52, 0x9a, 0x56, 0x56, 0x0d, 0x54, 0x20, 0x60, 0xa4, 0x88, 0x20, 0x1e, 0xe3, 0x21, 0x70, 0x0c,
0x67, 0x96, 0x16, 0xe9, 0xfd, 0xab, 0x20, 0x58, 0x8f, 0xfd, 0xf3, 0xf2, 0xac, 0xcf, 0xf8, 0xcd,
0x2c, 0xa4, 0x5d, 0x0a, 0xfd, 0x40, 0xd8, 0x6f, 0xc5, 0xc9, 0x29, 0x97, 0xf3, 0x97, 0x02, 0xb2,
0x58, 0xc9, 0x60, 0x2d, 0xec, 0x32, 0xec, 0x5a, 0x60, 0x68, 0xce, 0x17, 0x79, 0x6a, 0x29, 0x7e,
0x90, 0xb1, 0x22, 0x07, 0x85, 0xe4, 0x77, 0xb1, 0x4d, 0xcc, 0xf1, 0xcb, 0xa2, 0xe2, 0xf7, 0x72,
0xf8, 0x07, 0x9e, 0x85, 0xe8, 0xd1, 0x5a, 0x8f, 0xff, 0xfa, 0x28, 0x7b, 0x4f, 0x96, 0x33, 0xca,
0x9a, 0x65, 0x40, 0xd1, 0xab, 0xe2, 0x6f, 0xf0, 0x11, 0x61, 0x94, 0xf5, 0x4d, 0x43, 0x70, 0x1f,
0x38, 0x0a, 0x7c, 0xf1, 0x3f, 0xf6, 0x1e, 0x25, 0xb2, 0x39, 0xbc, 0xa4, 0x37, 0x00, 0x00, 0x00,
0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE drag_pad_xpm[1] = {{ png, sizeof( png ), "drag_pad_xpm" }};
//EOF
+57
View File
@@ -0,0 +1,57 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x02, 0x80, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x60, 0x18, 0x08, 0xf0,
0x9f, 0x81, 0x41, 0x03, 0x88, 0xe7, 0x01, 0xf1, 0x2a, 0x24, 0x3c, 0x03, 0x88, 0xa5, 0x81, 0xb8,
0x1c, 0x4d, 0x1c, 0x84, 0xd3, 0x81, 0x58, 0x12, 0x88, 0x27, 0x00, 0xf1, 0x4c, 0x24, 0x3c, 0x05,
0x88, 0xd5, 0xf0, 0x59, 0xb4, 0xba, 0xda, 0xc5, 0xfa, 0x7f, 0x52, 0xb0, 0x1b, 0x1c, 0xf7, 0xd8,
0x9a, 0xfc, 0x07, 0x8a, 0xef, 0x3c, 0x2f, 0x21, 0xf1, 0x3f, 0x2e, 0xc4, 0xfb, 0x7f, 0x2c, 0x14,
0xc7, 0x07, 0x79, 0xfd, 0xbf, 0x2d, 0x28, 0xf8, 0x0f, 0x28, 0xb7, 0xb0, 0xd7, 0xc6, 0xf8, 0x7f,
0x72, 0x90, 0x2b, 0x1c, 0xd7, 0x02, 0xcd, 0x00, 0x99, 0x85, 0xcf, 0xa2, 0xad, 0xd1, 0xa1, 0x3e,
0xff, 0xd9, 0x0e, 0xa9, 0x82, 0x31, 0xcf, 0x0e, 0x8d, 0xff, 0xa9, 0x81, 0xae, 0x20, 0x4d, 0x67,
0xf7, 0x28, 0x2a, 0xfe, 0xd7, 0xef, 0xb1, 0xfc, 0xcf, 0x70, 0x52, 0x11, 0x8c, 0xed, 0x2b, 0x6d,
0xfe, 0x9f, 0x91, 0x94, 0x04, 0xc9, 0x6d, 0x05, 0xa9, 0x01, 0xa9, 0x85, 0xe9, 0x03, 0x99, 0x01,
0x14, 0xdf, 0x86, 0xd7, 0xa2, 0xa8, 0x50, 0x6f, 0xb8, 0x61, 0xec, 0xfb, 0x55, 0x89, 0xb6, 0x08,
0xa4, 0x16, 0x26, 0x07, 0x32, 0x03, 0xab, 0x45, 0x40, 0xc1, 0xe6, 0xcf, 0x6c, 0x6c, 0x77, 0xbf,
0xb0, 0xb1, 0x7d, 0x8b, 0x44, 0xb3, 0x08, 0x14, 0x14, 0x40, 0xf1, 0x1f, 0x5b, 0x55, 0x55, 0x51,
0x2c, 0xb2, 0xab, 0xb2, 0xf9, 0x7f, 0x44, 0x56, 0x16, 0x24, 0xf7, 0x0d, 0xa4, 0x06, 0xd9, 0x22,
0x90, 0x19, 0x20, 0x71, 0x90, 0x99, 0x20, 0xb3, 0x61, 0x96, 0x30, 0x3e, 0xe4, 0xe7, 0xff, 0x1b,
0x1d, 0x1a, 0xfa, 0x3f, 0x33, 0x3a, 0xfa, 0x7f, 0x40, 0x74, 0x20, 0x8a, 0x45, 0x01, 0x71, 0x81,
0x60, 0xf1, 0xc4, 0x88, 0x88, 0xff, 0x3a, 0x7d, 0xd6, 0x70, 0x39, 0xb3, 0x3a, 0xc7, 0xff, 0xc9,
0x91, 0x91, 0x10, 0x3d, 0x40, 0x35, 0xc8, 0x16, 0x81, 0xcc, 0x00, 0x89, 0x83, 0xcc, 0x04, 0x99,
0x0d, 0xb2, 0x03, 0x6c, 0xd1, 0x6d, 0x21, 0xa1, 0xff, 0x8d, 0xf9, 0xf9, 0xff, 0x9f, 0x3d, 0x7b,
0xf6, 0x3f, 0x32, 0x25, 0xfa, 0x3f, 0xf7, 0x4e, 0x0d, 0x30, 0x16, 0xdc, 0xa0, 0xfd, 0x3f, 0xa9,
0x30, 0x05, 0x2c, 0xbe, 0x76, 0xed, 0xda, 0xff, 0x46, 0x1d, 0x8e, 0x70, 0x39, 0xc7, 0x06, 0xef,
0xff, 0xbb, 0x76, 0xed, 0x02, 0xcb, 0x81, 0xd4, 0x80, 0xd4, 0xc2, 0xe4, 0x40, 0x66, 0x80, 0xc4,
0x41, 0x66, 0x82, 0xcc, 0xc6, 0x6a, 0x51, 0x43, 0x77, 0xd3, 0xff, 0xcc, 0xca, 0x1c, 0x38, 0xee,
0x9d, 0xde, 0x0f, 0x16, 0x3f, 0x7a, 0xf4, 0xe8, 0xff, 0xec, 0xca, 0x3c, 0x20, 0xce, 0x05, 0xe3,
0xdc, 0xaa, 0x82, 0xff, 0xe7, 0xce, 0x9d, 0x03, 0xcb, 0xf5, 0x4c, 0xeb, 0xfb, 0x9f, 0x51, 0x99,
0x0d, 0xc7, 0xf5, 0x5d, 0x8d, 0x84, 0x2d, 0xa2, 0x26, 0xc6, 0xb0, 0xe8, 0xae, 0xa0, 0xe0, 0xdf,
0xac, 0xd8, 0xd8, 0xff, 0xa7, 0x4f, 0x9f, 0xa6, 0x9d, 0x45, 0x20, 0xf0, 0x97, 0x81, 0x61, 0xd1,
0x09, 0x69, 0xe9, 0xff, 0xe9, 0xc0, 0xc8, 0xbd, 0x75, 0xeb, 0x16, 0xed, 0x2c, 0x82, 0xa6, 0xbe,
0xfa, 0x49, 0xce, 0xce, 0xff, 0xf7, 0xec, 0xd9, 0x43, 0x3b, 0x8b, 0x80, 0x8c, 0xa9, 0x17, 0xc5,
0xc5, 0xff, 0xa6, 0x87, 0x87, 0xff, 0xbf, 0x71, 0xe3, 0x06, 0xed, 0xe2, 0xe8, 0x9e, 0x80, 0xc0,
0xdf, 0x74, 0x60, 0xba, 0x3f, 0x76, 0xec, 0x18, 0x6d, 0x13, 0x03, 0xdd, 0x52, 0xdd, 0x80, 0x58,
0x84, 0x2b, 0xc3, 0x1e, 0x3a, 0x74, 0x08, 0xcc, 0x87, 0x65, 0x4a, 0x50, 0xa6, 0x3d, 0x73, 0xe6,
0x0c, 0x58, 0x6e, 0xc2, 0xcc, 0x89, 0xf0, 0x8c, 0x0c, 0xc2, 0xcd, 0xbd, 0x2d, 0x84, 0x2d, 0xa2,
0x69, 0x11, 0xf4, 0x80, 0x86, 0x85, 0xea, 0x03, 0x58, 0xa1, 0x0a, 0x4d, 0xde, 0xad, 0x9f, 0x68,
0x50, 0x4d, 0x7c, 0x82, 0x54, 0x13, 0xad, 0xf4, 0xaf, 0xf8, 0x88, 0xad, 0xca, 0x0d, 0x3a, 0xac,
0xe0, 0x72, 0x8e, 0xe5, 0x76, 0x14, 0x59, 0xb4, 0xba, 0xc6, 0xd5, 0x06, 0xa5, 0x71, 0xd2, 0x0d,
0x69, 0x9c, 0x6c, 0xbf, 0x28, 0x26, 0xf6, 0x3f, 0x25, 0x10, 0xd1, 0x00, 0x49, 0x0b, 0x70, 0xfd,
0x0f, 0xcc, 0xe8, 0xa0, 0xc6, 0xc9, 0xa2, 0x76, 0x7b, 0x73, 0x78, 0xa3, 0x05, 0x84, 0xcb, 0xdc,
0xed, 0x41, 0x7a, 0xd6, 0x12, 0x6a, 0x6e, 0xcd, 0x47, 0x6b, 0x52, 0xcd, 0x84, 0x36, 0xb7, 0x72,
0xd0, 0x9a, 0x54, 0x20, 0x1c, 0x07, 0xc4, 0x72, 0x40, 0x3c, 0x17, 0x4d, 0xcf, 0x22, 0x20, 0xd6,
0x19, 0x90, 0x36, 0x23, 0x00, 0xe7, 0x5b, 0x70, 0xd7, 0x22, 0x33, 0xae, 0x62, 0x00, 0x00, 0x00,
0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE edges_sketch_xpm[1] = {{ png, sizeof( png ), "edges_sketch_xpm" }};
//EOF
+59
View File
@@ -0,0 +1,59 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x02, 0x9a, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0xd6, 0xcf, 0x6b, 0x5c,
0x55, 0x18, 0xc6, 0xf1, 0xcf, 0x9d, 0x26, 0x6a, 0xc6, 0x29, 0xa5, 0x16, 0x06, 0xcb, 0xa4, 0xa9,
0x6d, 0x33, 0x74, 0x21, 0x58, 0xa8, 0x50, 0x82, 0xb1, 0xd8, 0x0c, 0x09, 0x94, 0x41, 0x49, 0x67,
0x8c, 0xd2, 0x4c, 0x7e, 0x9c, 0x68, 0x18, 0xcc, 0x1d, 0xc1, 0x48, 0x5b, 0xd0, 0x4d, 0x41, 0x50,
0xda, 0xa2, 0x5d, 0xb8, 0x6c, 0xa4, 0x58, 0x41, 0x28, 0x2e, 0xa4, 0x08, 0x45, 0x50, 0x8b, 0xff,
0x80, 0x88, 0xa0, 0x1b, 0x41, 0xfc, 0xd1, 0x85, 0x48, 0x15, 0x8b, 0x74, 0x57, 0x23, 0xcd, 0x71,
0x73, 0x95, 0x21, 0xd4, 0xd2, 0xcc, 0x0c, 0xf8, 0xc2, 0x03, 0x97, 0x7b, 0x0e, 0xf7, 0x7b, 0xde,
0xf7, 0x3c, 0xef, 0x3d, 0x87, 0xff, 0x33, 0x5a, 0x0b, 0x1e, 0x4c, 0x83, 0x2b, 0xff, 0x6a, 0xd6,
0x41, 0x24, 0x3d, 0x07, 0x2d, 0x05, 0xc7, 0xd3, 0x20, 0xa6, 0xc1, 0x9f, 0x69, 0x10, 0x17, 0x8f,
0xfa, 0x08, 0x0f, 0x61, 0xa0, 0xa7, 0xa0, 0x34, 0xf8, 0x3a, 0x0d, 0xe2, 0xfc, 0x94, 0xf7, 0xd2,
0x20, 0xbe, 0x30, 0x6f, 0x75, 0xf3, 0x66, 0xaf, 0xe0, 0x51, 0xe4, 0x7a, 0x02, 0x79, 0xf1, 0x39,
0xfb, 0xb3, 0x6c, 0xd6, 0x76, 0x94, 0x2c, 0x34, 0x67, 0xdc, 0x48, 0x83, 0x78, 0x70, 0xc4, 0x07,
0x68, 0xa0, 0xbf, 0x37, 0x65, 0x5b, 0xf0, 0x76, 0x1a, 0xc4, 0xa5, 0xe0, 0xfa, 0xd8, 0x63, 0x2e,
0x86, 0x67, 0xfd, 0x9c, 0x06, 0x71, 0xf6, 0x69, 0xdf, 0x63, 0x19, 0xdb, 0xbb, 0xde, 0xaf, 0xd7,
0x0e, 0xe9, 0x6b, 0x05, 0xd7, 0xb2, 0x8c, 0xd6, 0x6b, 0xad, 0xb4, 0xdd, 0x1b, 0x78, 0x02, 0x9b,
0xba, 0x2b, 0xdb, 0xbc, 0xc9, 0x2c, 0x9b, 0x9f, 0x30, 0x8d, 0xe3, 0x58, 0x3e, 0x3a, 0xe9, 0xab,
0x34, 0x88, 0x87, 0xc7, 0x7c, 0x8a, 0x26, 0xee, 0xed, 0xce, 0xd6, 0xc1, 0xa5, 0x34, 0x88, 0xcf,
0x37, 0x5c, 0xc8, 0xca, 0xd4, 0xc2, 0xc8, 0x91, 0xc3, 0x4e, 0xa5, 0x41, 0x5c, 0x6c, 0xf8, 0x1d,
0x2f, 0xa3, 0xdc, 0x71, 0xf9, 0x5a, 0xcf, 0x28, 0xb4, 0x82, 0x6f, 0xd3, 0xe0, 0x87, 0xca, 0xa8,
0x13, 0xd9, 0x07, 0x9f, 0x42, 0xff, 0x62, 0xc3, 0xce, 0x74, 0xde, 0x8f, 0xcd, 0x19, 0xbf, 0x94,
0x77, 0x79, 0x0b, 0x4f, 0xa2, 0x6f, 0xa3, 0x8c, 0x3e, 0x6c, 0x6d, 0xd3, 0x16, 0x2c, 0xe0, 0x25,
0xec, 0x6b, 0xb3, 0x73, 0x82, 0x3d, 0xd9, 0xfb, 0x14, 0x85, 0x8d, 0x82, 0x46, 0x10, 0xdb, 0x74,
0x19, 0x7b, 0x33, 0x0d, 0x62, 0xae, 0x6d, 0xee, 0x3d, 0x6d, 0x63, 0xf7, 0x6f, 0x14, 0xb4, 0x0b,
0xd1, 0x79, 0xd1, 0xfb, 0xa2, 0x7e, 0xd7, 0xb1, 0x84, 0xa1, 0xcc, 0xca, 0xb7, 0x70, 0xac, 0xad,
0x7f, 0x92, 0x4e, 0xf7, 0x27, 0xc1, 0x35, 0xef, 0x8a, 0x3e, 0x17, 0x1d, 0x11, 0xf1, 0x25, 0x0e,
0x60, 0x87, 0x7d, 0xa2, 0xbc, 0x5b, 0x38, 0x97, 0x65, 0xd4, 0x55, 0xbc, 0x29, 0x64, 0xa0, 0x2b,
0xa2, 0x13, 0xa2, 0x03, 0xfe, 0x50, 0xf4, 0x99, 0x19, 0xd1, 0x8a, 0x68, 0x9b, 0x35, 0x9c, 0xef,
0xd6, 0xda, 0xdb, 0x0c, 0xb8, 0xea, 0x5c, 0x06, 0xbb, 0x9d, 0x2e, 0x8a, 0x86, 0x44, 0x5c, 0xe8,
0x16, 0xb6, 0xc7, 0x80, 0xef, 0x34, 0x45, 0x97, 0xfe, 0x03, 0x36, 0x25, 0xe2, 0x2a, 0x66, 0x70,
0x5f, 0x37, 0xb0, 0x4d, 0x38, 0x29, 0xf1, 0x8d, 0x21, 0x37, 0x3c, 0xe2, 0xa6, 0x57, 0x33, 0x48,
0x53, 0xc4, 0x6f, 0x99, 0x2b, 0x4f, 0x62, 0x7f, 0xb7, 0xfb, 0x95, 0xa0, 0x94, 0x35, 0xe5, 0x19,
0x0d, 0xd1, 0xb2, 0x28, 0xf1, 0x2b, 0x3e, 0xc6, 0x19, 0x1c, 0xea, 0xf5, 0x41, 0xb8, 0xdb, 0x6e,
0x51, 0xe2, 0x0b, 0x7c, 0x88, 0xb3, 0x18, 0xcb, 0x9a, 0x38, 0xb9, 0xc3, 0x42, 0x93, 0x4e, 0x7a,
0xec, 0x13, 0x54, 0x70, 0x3a, 0x83, 0x4c, 0xe6, 0xf3, 0xf9, 0x95, 0x62, 0xb1, 0x78, 0x6c, 0x7c,
0x7c, 0x7c, 0xcb, 0xba, 0xf9, 0xb3, 0x85, 0x42, 0xe1, 0x9d, 0x52, 0xa9, 0xb4, 0x34, 0x37, 0x37,
0xb7, 0xa1, 0x86, 0xce, 0x67, 0x0e, 0x1b, 0xcd, 0x8e, 0x87, 0x24, 0x97, 0xcb, 0xad, 0x20, 0x0e,
0x0e, 0x0e, 0xae, 0xd6, 0x6a, 0xb5, 0x7a, 0xfb, 0x91, 0x91, 0x24, 0xc9, 0x65, 0xc4, 0xe1, 0xe1,
0xe1, 0x9b, 0xf5, 0x7a, 0x7d, 0x74, 0xdd, 0xef, 0xeb, 0xae, 0xe2, 0x81, 0x7f, 0x1e, 0xda, 0x40,
0x7f, 0xd5, 0xeb, 0xf5, 0xa9, 0xdb, 0x81, 0xca, 0xe5, 0xf2, 0x6a, 0xad, 0x56, 0x7b, 0xbc, 0x13,
0x50, 0x7b, 0x14, 0x2b, 0x95, 0xca, 0xeb, 0xd5, 0x6a, 0xf5, 0xf4, 0xf4, 0xf4, 0xf4, 0xc3, 0xeb,
0xee, 0x10, 0xa5, 0x89, 0x89, 0x89, 0xb3, 0xd5, 0x6a, 0xf5, 0x54, 0xb5, 0x5a, 0xdd, 0xd9, 0x06,
0xe8, 0xd8, 0x38, 0x7d, 0x99, 0x72, 0x77, 0x18, 0xeb, 0xfd, 0xf5, 0xec, 0x6e, 0xe2, 0x6f, 0x7a,
0xbe, 0xd6, 0x21, 0x77, 0x52, 0xdf, 0x34, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE gl_change_xpm[1] = {{ png, sizeof( png ), "gl_change_xpm" }};
//EOF
+52
View File
@@ -0,0 +1,52 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x02, 0x2f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x95, 0xcf, 0x6b, 0x13,
0x51, 0x10, 0xc7, 0xbf, 0xb6, 0xbb, 0x20, 0x74, 0x29, 0x24, 0xf4, 0xd2, 0xfe, 0x05, 0x39, 0x28,
0x95, 0x48, 0x6e, 0x82, 0x14, 0x3c, 0x25, 0xb9, 0x69, 0x2f, 0x52, 0x49, 0x4e, 0x0a, 0xde, 0xda,
0x8b, 0xbf, 0x0e, 0x2e, 0xad, 0xb4, 0x92, 0x44, 0x51, 0xfa, 0x83, 0x42, 0xb1, 0x59, 0x7a, 0x2a,
0x29, 0x3d, 0x26, 0x88, 0xe9, 0xc1, 0x8a, 0x18, 0xb2, 0xe7, 0x60, 0xf0, 0xd2, 0x16, 0xb1, 0x8d,
0x42, 0xda, 0x8b, 0x4d, 0xa4, 0x96, 0x66, 0x9c, 0x17, 0x36, 0x31, 0xbf, 0x7f, 0x74, 0xb7, 0x19,
0xf8, 0xc2, 0xdb, 0x61, 0x77, 0x3e, 0x3b, 0x6f, 0xe6, 0xcd, 0x03, 0x7a, 0x6d, 0xd3, 0x92, 0xf4,
0x5b, 0x05, 0xa8, 0x99, 0x66, 0x64, 0x39, 0x3f, 0x0d, 0x8c, 0x9a, 0x06, 0x89, 0x60, 0xad, 0xec,
0xeb, 0xe6, 0x66, 0x61, 0x76, 0x60, 0xe0, 0x17, 0xbf, 0x37, 0x64, 0x29, 0xc8, 0xed, 0x76, 0x17,
0x55, 0x69, 0xef, 0xa7, 0xa6, 0x4e, 0xe6, 0x06, 0x07, 0x13, 0xfc, 0xae, 0x64, 0x09, 0x28, 0x9f,
0xcf, 0x93, 0xdd, 0x6e, 0x27, 0x9b, 0xcd, 0x46, 0xb9, 0x5c, 0xae, 0xec, 0x2f, 0x9c, 0x9d, 0x91,
0x36, 0x36, 0x76, 0x3c, 0xab, 0x28, 0x6f, 0x2d, 0x01, 0x85, 0xc3, 0x61, 0xf2, 0x7a, 0xbd, 0xe4,
0xf1, 0x78, 0x48, 0xd3, 0xb4, 0xaa, 0xac, 0xfe, 0x1c, 0x1d, 0xd1, 0xab, 0x91, 0x91, 0xe3, 0xbb,
0x57, 0xfa, 0x9e, 0x23, 0x88, 0x5b, 0x65, 0x85, 0xe0, 0xea, 0x1a, 0xe4, 0x72, 0xb9, 0x28, 0x16,
0x8b, 0x51, 0x34, 0x1a, 0x25, 0xa7, 0xd3, 0x59, 0x57, 0xaf, 0xd4, 0xfa, 0x3a, 0x3d, 0xb3, 0x5f,
0x26, 0x0e, 0x5e, 0xad, 0xd7, 0xb8, 0xda, 0x31, 0x28, 0x99, 0x4c, 0x92, 0x24, 0x49, 0xc4, 0xae,
0xa2, 0x64, 0x59, 0x26, 0x5d, 0xd7, 0xff, 0x6f, 0xeb, 0xe1, 0x21, 0x85, 0x86, 0x87, 0xcd, 0x67,
0xe4, 0xf3, 0xf9, 0x28, 0x18, 0x0c, 0x96, 0x03, 0x07, 0x02, 0x01, 0xf2, 0xfb, 0xfd, 0x55, 0x35,
0x9a, 0x53, 0x94, 0x37, 0xa6, 0x6b, 0xe4, 0x70, 0x38, 0x28, 0x9b, 0xcd, 0x96, 0x41, 0x62, 0x2d,
0x7c, 0xc5, 0xae, 0x9b, 0x9c, 0x14, 0x5d, 0xf7, 0x25, 0x02, 0xf4, 0x5f, 0xec, 0x39, 0x52, 0x14,
0xf3, 0xe7, 0xa8, 0x67, 0x93, 0xa1, 0x27, 0xb6, 0xb8, 0x88, 0x1b, 0x0b, 0x0b, 0x78, 0x24, 0x24,
0xd6, 0x17, 0x06, 0x9a, 0x9f, 0x87, 0x9a, 0xc9, 0x80, 0x84, 0xc4, 0xfa, 0x1c, 0x21, 0x44, 0xdd,
0x4e, 0xd0, 0xae, 0x7e, 0x16, 0x80, 0x9e, 0xb2, 0xbe, 0xb1, 0x9e, 0x74, 0x0d, 0xe2, 0x2d, 0x7c,
0xb8, 0xb4, 0xc4, 0x07, 0xb1, 0xbd, 0x89, 0x01, 0xfb, 0x9d, 0x75, 0x9b, 0xf5, 0x83, 0x25, 0x77,
0x0b, 0x52, 0x75, 0x1d, 0x85, 0x95, 0x15, 0xbc, 0x50, 0x55, 0xf4, 0xb5, 0x00, 0x8d, 0xb3, 0x3e,
0x1a, 0xeb, 0x6d, 0xd6, 0x9d, 0xae, 0x41, 0xe2, 0x39, 0x9d, 0x06, 0xad, 0xad, 0x21, 0xce, 0xd9,
0xd9, 0x9a, 0x7c, 0xfe, 0xc9, 0xc8, 0x06, 0x06, 0x64, 0xbb, 0x23, 0x10, 0x03, 0xe2, 0x46, 0xf7,
0xc5, 0x4b, 0xbe, 0xbd, 0x3d, 0xd0, 0xc6, 0x06, 0x7e, 0xb2, 0xaf, 0x76, 0x9e, 0x5d, 0x63, 0x9d,
0x96, 0xe6, 0xa2, 0x21, 0xf1, 0x7c, 0xbd, 0x2d, 0xa8, 0x99, 0xf6, 0xf7, 0x41, 0x5b, 0x5b, 0x38,
0xe5, 0xcc, 0xee, 0x57, 0x7c, 0xba, 0xca, 0x7a, 0x5c, 0x13, 0x4e, 0x34, 0xc4, 0xbb, 0x86, 0x20,
0xce, 0xe0, 0x5e, 0x2a, 0xd5, 0x1a, 0x74, 0x70, 0x00, 0xbe, 0x3a, 0xf0, 0xb7, 0x06, 0x94, 0x6e,
0xd0, 0xd2, 0x43, 0x86, 0xbf, 0xde, 0x88, 0x70, 0x89, 0xb3, 0x9a, 0x60, 0xe0, 0xcb, 0x0a, 0x7d,
0x2e, 0x41, 0x76, 0x76, 0x40, 0x91, 0x08, 0x32, 0x0d, 0xb6, 0xce, 0x92, 0x69, 0x51, 0xdc, 0x4e,
0x91, 0xa9, 0xa6, 0xe1, 0x43, 0x8b, 0x66, 0x30, 0x0f, 0x4a, 0x24, 0x50, 0x58, 0x5e, 0xc6, 0x4c,
0x5d, 0x7b, 0x87, 0xb0, 0x5b, 0x77, 0xbb, 0x36, 0xd6, 0x6e, 0x27, 0xa0, 0x07, 0x9c, 0xc5, 0x4d,
0xab, 0x7e, 0xfc, 0x1f, 0x28, 0xf3, 0x4d, 0x05, 0xe3, 0x55, 0xa6, 0xa5, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE glabel2label_xpm[1] = {{ png, sizeof( png ), "glabel2label_xpm" }};
//EOF
+48
View File
@@ -0,0 +1,48 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0xef, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xcd, 0x95, 0xcf, 0x4b, 0x02,
0x41, 0x14, 0xc7, 0xbf, 0xd5, 0x2e, 0x04, 0x2d, 0x81, 0xd2, 0xa5, 0xfe, 0x02, 0x0f, 0x45, 0x20,
0xec, 0x2d, 0xa8, 0xa0, 0x93, 0xfa, 0x17, 0x44, 0xa1, 0xa7, 0x82, 0x6e, 0x76, 0xe9, 0xd0, 0xa1,
0xa5, 0xa2, 0x42, 0x2b, 0x8a, 0x7e, 0x10, 0x74, 0x70, 0xf1, 0x14, 0x46, 0x47, 0x25, 0xd2, 0x63,
0x24, 0xee, 0x59, 0xea, 0x16, 0x5d, 0xca, 0x02, 0xeb, 0x52, 0x1a, 0x15, 0xf9, 0x9a, 0x11, 0xdb,
0x94, 0xda, 0xcd, 0xda, 0x4d, 0x7a, 0xf0, 0x85, 0x99, 0xb7, 0xc3, 0x7c, 0xf8, 0xce, 0xbc, 0x37,
0x0b, 0x34, 0x3a, 0x66, 0x05, 0xe1, 0x5e, 0x01, 0xc8, 0x48, 0x73, 0xa2, 0x58, 0x9c, 0x05, 0x7a,
0x2d, 0x83, 0xf8, 0x66, 0x66, 0x71, 0x7a, 0x70, 0x50, 0x5a, 0x68, 0x6b, 0xbb, 0x61, 0xeb, 0x3a,
0x6c, 0x05, 0x79, 0x3c, 0x9e, 0xb2, 0xaa, 0xe3, 0x70, 0x72, 0xf2, 0x69, 0xb1, 0xbd, 0x3d, 0xcd,
0xd6, 0x0a, 0xb6, 0x80, 0x8a, 0xc5, 0x22, 0x39, 0x9d, 0x4e, 0x72, 0x38, 0x1c, 0x54, 0x28, 0x14,
0xf4, 0x7c, 0xe9, 0xf5, 0x95, 0xd4, 0xc1, 0xc1, 0x87, 0x05, 0x49, 0x5a, 0xb7, 0x05, 0x14, 0x89,
0x44, 0xc8, 0xe7, 0xf3, 0x91, 0xd7, 0xeb, 0x25, 0x55, 0x55, 0x6b, 0x5c, 0x3d, 0xde, 0xdd, 0xd1,
0x4a, 0x57, 0xd7, 0xc3, 0x70, 0x77, 0xf3, 0x0c, 0xc2, 0x18, 0xd2, 0xb5, 0x0c, 0xf9, 0xc7, 0x20,
0x59, 0x96, 0x29, 0x91, 0x48, 0x50, 0x3c, 0x1e, 0x27, 0xb7, 0xdb, 0xfd, 0xe9, 0xbe, 0xb2, 0x7b,
0x7b, 0x34, 0xed, 0x6c, 0x25, 0xb6, 0x79, 0xad, 0x56, 0xd1, 0x53, 0x37, 0x28, 0x93, 0xc9, 0x90,
0x20, 0x08, 0xc4, 0x52, 0x65, 0x89, 0xa2, 0x48, 0x9a, 0xa6, 0x7d, 0x1c, 0xeb, 0xed, 0x2d, 0x2d,
0x77, 0x76, 0x5a, 0x77, 0xe4, 0xf7, 0xfb, 0x29, 0x1c, 0x0e, 0xeb, 0x1b, 0x87, 0x42, 0x21, 0x0a,
0x04, 0x02, 0x35, 0x77, 0xb4, 0x28, 0x49, 0x6b, 0x96, 0xef, 0xc8, 0xe5, 0x72, 0x51, 0x3e, 0x9f,
0xd7, 0x41, 0x7c, 0xcc, 0x73, 0xe5, 0xaa, 0x0b, 0x06, 0x79, 0xd5, 0x9d, 0xc4, 0x80, 0x96, 0xbf,
0xed, 0x23, 0x49, 0xb2, 0xde, 0x47, 0x0d, 0x7b, 0x19, 0x1a, 0x12, 0x5b, 0x5b, 0xe8, 0xdb, 0xdc,
0xc4, 0x14, 0x17, 0x1f, 0xff, 0x19, 0x68, 0x63, 0x03, 0x4a, 0x2e, 0x07, 0xe2, 0xe2, 0xe3, 0xff,
0x06, 0xa2, 0x3a, 0xf4, 0x3d, 0x88, 0x1d, 0xe1, 0xc4, 0xf6, 0x36, 0x6b, 0x44, 0x73, 0x90, 0x52,
0x91, 0x5a, 0x99, 0xab, 0x55, 0xb9, 0xba, 0x41, 0x8a, 0xa6, 0xa1, 0xb4, 0xbb, 0x8b, 0x79, 0x45,
0x41, 0xf3, 0xd7, 0x1d, 0xa1, 0xc7, 0x40, 0x65, 0xe3, 0x01, 0x83, 0xef, 0xe6, 0x20, 0x3e, 0x3f,
0x3b, 0x03, 0x45, 0xa3, 0x48, 0x32, 0x77, 0x0e, 0x13, 0x77, 0x5f, 0x81, 0xcc, 0xef, 0x88, 0x01,
0x92, 0x95, 0xea, 0x4b, 0xbe, 0xe7, 0x2e, 0x2e, 0x40, 0xfb, 0xfb, 0xb8, 0x66, 0x39, 0xd9, 0x36,
0x90, 0x91, 0x2e, 0x2f, 0x41, 0xa9, 0x14, 0x5e, 0x98, 0xb3, 0xb1, 0x5f, 0x83, 0x98, 0x83, 0xd1,
0x6c, 0xd6, 0x1c, 0x74, 0x75, 0x05, 0xf6, 0xeb, 0xc0, 0xb3, 0x25, 0x10, 0x11, 0x9a, 0x98, 0xab,
0x11, 0x06, 0x5c, 0xaa, 0xd2, 0xf1, 0x3b, 0xe4, 0xfc, 0x1c, 0x14, 0x8b, 0x21, 0x67, 0xf9, 0xe8,
0x0c, 0x5e, 0x8b, 0xf2, 0x71, 0x72, 0xa7, 0xaa, 0x8a, 0x23, 0x5b, 0x8a, 0xc1, 0x08, 0x94, 0x4e,
0xa3, 0xb4, 0xb3, 0x83, 0x39, 0x83, 0xf2, 0x36, 0x6a, 0xde, 0x1f, 0x83, 0xc6, 0x99, 0x8b, 0x7e,
0xbb, 0x5e, 0x9f, 0x37, 0x23, 0x66, 0x47, 0x3b, 0xda, 0x7e, 0x54, 0xb7, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE glabel2text_xpm[1] = {{ png, sizeof( png ), "glabel2text_xpm" }};
//EOF
+104
View File
@@ -0,0 +1,104 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x05, 0x77, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x7b, 0x6c, 0xd6,
0x57, 0x19, 0xc7, 0x3f, 0xcf, 0x39, 0xe7, 0xbd, 0xf4, 0xf2, 0xae, 0x17, 0x6d, 0xa5, 0x58, 0x04,
0x91, 0xf1, 0x02, 0xce, 0xb5, 0x6c, 0xf1, 0x12, 0x63, 0xec, 0x40, 0xb2, 0x01, 0x85, 0x80, 0x01,
0x9c, 0x9b, 0xc3, 0xb8, 0x91, 0x90, 0x99, 0xb8, 0x89, 0xfb, 0x83, 0x0c, 0xb7, 0x2a, 0xb8, 0x38,
0xb7, 0xa0, 0x86, 0x78, 0x21, 0x53, 0x37, 0x71, 0x18, 0x20, 0x5b, 0xdd, 0xe6, 0xd6, 0x6d, 0x36,
0x90, 0x11, 0xf9, 0x8f, 0xe9, 0x6e, 0x71, 0xb3, 0xdb, 0x0a, 0xed, 0x0a, 0x08, 0xb4, 0xce, 0x5e,
0xe8, 0xe5, 0x6d, 0xdf, 0xfe, 0x7e, 0xe7, 0x3c, 0xfe, 0xd1, 0xf6, 0xc5, 0xce, 0x35, 0x6c, 0x8b,
0x89, 0x27, 0x39, 0xff, 0x9d, 0x3c, 0x9f, 0x73, 0x9e, 0xef, 0xf7, 0x7c, 0xf3, 0xc0, 0xff, 0x60,
0xe5, 0x72, 0xb9, 0xdb, 0x0f, 0x1c, 0x38, 0x30, 0xac, 0xaa, 0x37, 0xcc, 0x74, 0x46, 0x00, 0xee,
0xff, 0xd9, 0xfd, 0xb5, 0x95, 0x45, 0x65, 0x4d, 0xe9, 0xe2, 0xa2, 0x04, 0x80, 0x11, 0x00, 0x03,
0x40, 0x20, 0x80, 0x42, 0x50, 0x6f, 0x72, 0xb9, 0x91, 0x96, 0x6f, 0x6e, 0xbd, 0xed, 0xb1, 0x85,
0x6b, 0xef, 0xfb, 0x6e, 0x40, 0xbf, 0x17, 0x7b, 0x52, 0x00, 0x4d, 0x37, 0x7f, 0x96, 0x2d, 0x9b,
0x96, 0xb3, 0xf9, 0xcb, 0x37, 0xb1, 0x74, 0xfd, 0x16, 0x7e, 0xfe, 0xe8, 0x71, 0x54, 0x21, 0xe1,
0x64, 0xc0, 0xab, 0xd9, 0xdc, 0xd9, 0xb2, 0xfd, 0x69, 0x07, 0xf0, 0xb1, 0xea, 0xda, 0xe6, 0xe5,
0xcb, 0x96, 0x7f, 0xce, 0x25, 0x12, 0x38, 0xeb, 0x70, 0xce, 0x62, 0x8c, 0x45, 0x35, 0xe0, 0x7d,
0x4c, 0x1c, 0x7b, 0x62, 0xef, 0x69, 0x6f, 0x7f, 0x73, 0xed, 0xd7, 0xbe, 0xfd, 0x83, 0xd3, 0x5d,
0x03, 0xa5, 0xbb, 0xf6, 0x7c, 0xa7, 0xc1, 0x66, 0x8a, 0x2d, 0xce, 0x3a, 0xe2, 0xc8, 0x53, 0x57,
0x7e, 0x25, 0xb3, 0x5b, 0xab, 0x68, 0x6e, 0xdf, 0x41, 0xeb, 0xe3, 0xbf, 0x63, 0x68, 0xe4, 0x02,
0xcf, 0xb7, 0xfd, 0xb3, 0x74, 0xcf, 0x23, 0x7f, 0xdf, 0x07, 0x54, 0x39, 0x80, 0x8a, 0xca, 0x8a,
0xca, 0x28, 0x8e, 0xf0, 0xc1, 0x33, 0xe2, 0x63, 0x8c, 0x91, 0xa9, 0xc7, 0x12, 0x08, 0x18, 0x0c,
0x46, 0x0c, 0x65, 0xe5, 0xe5, 0x15, 0x8a, 0x5c, 0x79, 0xc7, 0xfa, 0xb9, 0x76, 0xc7, 0x2d, 0xdb,
0x64, 0xaa, 0x2d, 0xf9, 0x28, 0x4f, 0xc2, 0x3b, 0xee, 0x1b, 0xdd, 0xc5, 0x43, 0x6f, 0xee, 0x67,
0xcd, 0x17, 0xd7, 0x70, 0xf0, 0x99, 0x43, 0x5c, 0x31, 0xbf, 0xca, 0x79, 0xa5, 0x02, 0xc0, 0x01,
0x04, 0x1f, 0xf0, 0xc1, 0xe3, 0xd5, 0xa3, 0x28, 0xe8, 0x45, 0x90, 0x6a, 0x20, 0x0a, 0x31, 0x49,
0x97, 0x22, 0x8e, 0x23, 0x00, 0x3a, 0xda, 0x5f, 0x97, 0x4f, 0xbe, 0xb4, 0x90, 0xcd, 0x5c, 0x94,
0xe4, 0xc3, 0x7c, 0x08, 0x80, 0x2d, 0xf1, 0xd7, 0x59, 0xd0, 0x33, 0x9f, 0x4d, 0xcb, 0x37, 0xf2,
0xe3, 0x87, 0x7e, 0x4a, 0xdd, 0xe5, 0xb3, 0xa4, 0x73, 0x4a, 0x88, 0x10, 0x62, 0xa2, 0x68, 0x1c,
0xe7, 0x1c, 0xce, 0x3a, 0x0e, 0xb7, 0x1e, 0xe1, 0xcc, 0xe9, 0x33, 0x3c, 0xbc, 0x6f, 0x3f, 0xd6,
0x5a, 0xac, 0x75, 0x80, 0x12, 0x45, 0xd1, 0x24, 0x5c, 0xa9, 0xe5, 0xa3, 0x5c, 0x4d, 0x7d, 0x61,
0xcf, 0x65, 0x4e, 0x01, 0xda, 0xc0, 0x17, 0x78, 0x6e, 0xb0, 0x85, 0x9d, 0xb7, 0x34, 0xb1, 0xc4,
0x75, 0x18, 0x55, 0xdd, 0xe8, 0x00, 0xe2, 0x38, 0x10, 0x47, 0x31, 0xd6, 0x58, 0x14, 0x65, 0xc5,
0xb5, 0x2b, 0xf8, 0xed, 0x83, 0xfb, 0x28, 0x2a, 0x2a, 0xc2, 0xb9, 0x04, 0xde, 0x7b, 0xd4, 0x2b,
0xe3, 0x93, 0x20, 0x31, 0x72, 0x49, 0x27, 0xce, 0x67, 0x1e, 0xcf, 0x0d, 0xb5, 0xb0, 0x68, 0xcf,
0xd5, 0xd4, 0x7d, 0xfa, 0x53, 0x0f, 0x9b, 0x42, 0x7b, 0xe2, 0x08, 0x23, 0x06, 0x63, 0x0c, 0xa5,
0xa5, 0x19, 0xba, 0xbb, 0xbb, 0x59, 0xb7, 0x7e, 0x1d, 0xd6, 0x58, 0x8c, 0x31, 0xa8, 0x2a, 0x3e,
0x8e, 0x31, 0x62, 0x44, 0x83, 0x5e, 0x12, 0x74, 0x9e, 0x6e, 0xd6, 0x65, 0x6e, 0x60, 0xc3, 0xf5,
0x9b, 0x68, 0x6c, 0x6c, 0xdc, 0xee, 0x0a, 0x3e, 0x17, 0x99, 0xb8, 0xa9, 0xc2, 0x6b, 0xaf, 0xbe,
0x46, 0xfd, 0xd2, 0xa5, 0xd4, 0xd4, 0xd4, 0x10, 0xfb, 0x18, 0x41, 0x30, 0xc6, 0x4e, 0x2b, 0x74,
0x96, 0x73, 0xbc, 0xc8, 0x2b, 0xd3, 0x34, 0x9a, 0x6a, 0xdf, 0x0b, 0xbc, 0xcc, 0xf5, 0x99, 0x6f,
0x70, 0xd7, 0x4f, 0xee, 0xe6, 0xd8, 0xe9, 0xe2, 0x50, 0x52, 0x52, 0xf2, 0xcb, 0x02, 0x68, 0x68,
0x78, 0x88, 0xd9, 0x35, 0xb5, 0x80, 0x52, 0x57, 0x57, 0x47, 0x7d, 0x5d, 0x3d, 0x00, 0xce, 0x58,
0xc4, 0x09, 0x43, 0x83, 0xbd, 0x13, 0x2e, 0xd4, 0xa0, 0x0b, 0xb2, 0x8b, 0xf5, 0xc8, 0x55, 0x87,
0xe5, 0x4e, 0x76, 0x15, 0x5c, 0x97, 0xeb, 0x1a, 0xe1, 0x85, 0xa1, 0x63, 0x1c, 0xb4, 0xcd, 0xdc,
0x5d, 0x7e, 0x0f, 0xfb, 0xff, 0xf8, 0x7b, 0x24, 0x91, 0xe2, 0x87, 0x4f, 0x1d, 0xd5, 0x82, 0xeb,
0x00, 0xd2, 0xa9, 0x34, 0x6d, 0x6f, 0xbc, 0x8a, 0xbe, 0x4b, 0x57, 0x82, 0xf7, 0x54, 0x54, 0x54,
0x16, 0x9c, 0xb8, 0xf7, 0xd9, 0xb3, 0xd1, 0x03, 0xcd, 0x7b, 0x93, 0xde, 0x7b, 0xa2, 0x28, 0xc2,
0x9a, 0x04, 0x37, 0x7e, 0xfe, 0xab, 0xec, 0x2c, 0xfa, 0x11, 0x4f, 0xce, 0x7e, 0x96, 0x27, 0x1e,
0x7f, 0x02, 0x6b, 0x85, 0x9e, 0xde, 0xa1, 0x42, 0x0d, 0x03, 0x70, 0x61, 0xf0, 0xc2, 0x85, 0x54,
0x32, 0x85, 0xb3, 0x8e, 0x84, 0xfb, 0xef, 0x9d, 0x4a, 0xa5, 0x30, 0xc6, 0x32, 0x3a, 0x9a, 0x1b,
0x54, 0xb1, 0x6d, 0xa7, 0xba, 0x07, 0x4c, 0x4f, 0xdf, 0x20, 0xc3, 0xc3, 0x83, 0x8c, 0x8c, 0x0c,
0xe1, 0xe3, 0x88, 0x57, 0xfa, 0xff, 0x46, 0xfb, 0x8a, 0xb7, 0x78, 0xec, 0xc8, 0x1f, 0x18, 0xcb,
0x8f, 0x10, 0x34, 0x70, 0xae, 0x77, 0xc4, 0x5b, 0x61, 0xa8, 0x10, 0x41, 0xbb, 0x77, 0xdf, 0xf3,
0xf1, 0xee, 0xd1, 0xd2, 0x5f, 0xf7, 0x0d, 0xcb, 0xac, 0x99, 0xc4, 0x55, 0xc4, 0xf7, 0xf4, 0x8d,
0xbd, 0xf4, 0xc6, 0xf9, 0x70, 0xdc, 0x1a, 0xdd, 0x18, 0x82, 0x7c, 0x49, 0x8c, 0x28, 0xc0, 0x4d,
0xab, 0xea, 0xec, 0xdc, 0xe2, 0xb7, 0x69, 0xeb, 0x2b, 0xf7, 0x4f, 0x1d, 0x6b, 0x0b, 0xa8, 0x18,
0x50, 0x13, 0x54, 0xc7, 0x03, 0xf6, 0xe6, 0xce, 0x96, 0xed, 0x87, 0x04, 0x60, 0xc1, 0xda, 0x7b,
0xb7, 0xa5, 0x13, 0xf6, 0xde, 0x45, 0x73, 0x32, 0x63, 0x82, 0xbe, 0xa7, 0x20, 0x55, 0x05, 0xaf,
0x2a, 0x41, 0x35, 0x05, 0xd8, 0xb7, 0x07, 0xc6, 0xc7, 0x7b, 0x87, 0xa3, 0x8e, 0xd1, 0x48, 0x97,
0x49, 0x2a, 0x9d, 0x96, 0xb1, 0xb1, 0x53, 0xe4, 0xf2, 0xd5, 0x5d, 0x7f, 0xde, 0x39, 0x50, 0xd0,
0xa8, 0x28, 0x61, 0x6e, 0xbb, 0x75, 0xfd, 0x92, 0xf4, 0xd2, 0x6c, 0x59, 0x51, 0x26, 0x73, 0x59,
0x41, 0x8b, 0x69, 0xc9, 0x5b, 0x78, 0xd9, 0xbb, 0xa6, 0x37, 0x62, 0x6c, 0xf2, 0xc6, 0xef, 0x1f,
0xbd, 0x22, 0x19, 0x4c, 0x49, 0x9c, 0x1b, 0x73, 0x6a, 0xc9, 0x9f, 0xaa, 0x5a, 0x52, 0x10, 0x69,
0xca, 0x0c, 0xe9, 0x64, 0x12, 0x99, 0x55, 0x5d, 0x43, 0x3e, 0x1a, 0x9d, 0x10, 0xcf, 0x18, 0xc4,
0x4c, 0x64, 0x9c, 0xc8, 0x45, 0x9c, 0xa2, 0x84, 0xa0, 0x68, 0x08, 0x84, 0xe0, 0x01, 0xa8, 0xae,
0xaa, 0xa2, 0xbb, 0xa7, 0x1b, 0x67, 0xd1, 0x7c, 0xf0, 0x57, 0x11, 0xe4, 0x4e, 0x51, 0xfd, 0x05,
0xcd, 0x5f, 0xf1, 0xd3, 0xcc, 0x70, 0xf1, 0x2f, 0x29, 0xb1, 0xf7, 0x04, 0x85, 0xd3, 0x67, 0xce,
0x32, 0x38, 0x30, 0x08, 0x22, 0x88, 0x58, 0xc4, 0x18, 0x44, 0x0c, 0x27, 0xdb, 0x3b, 0x90, 0x02,
0x94, 0x89, 0xf3, 0xde, 0x4f, 0xfe, 0x33, 0x71, 0x0a, 0x7b, 0x30, 0x3c, 0xd9, 0x95, 0x1b, 0x6f,
0xfa, 0xcf, 0xda, 0x6e, 0x3a, 0x68, 0x22, 0x05, 0x1e, 0xd8, 0xfb, 0x2b, 0xb2, 0xd9, 0x2c, 0x99,
0x4c, 0x86, 0x8e, 0x8e, 0x4e, 0x1a, 0xd7, 0xac, 0xa6, 0xb8, 0xb8, 0x98, 0x38, 0x8e, 0x69, 0x6d,
0x3d, 0xcc, 0xed, 0xdb, 0xbe, 0x85, 0x78, 0x29, 0x68, 0x25, 0x62, 0xa6, 0xda, 0x1b, 0x19, 0x71,
0xd7, 0x75, 0x3e, 0xbd, 0xfd, 0xc4, 0x3b, 0xdb, 0x3b, 0xed, 0x45, 0xc6, 0x08, 0xa3, 0xb9, 0x51,
0x92, 0xa9, 0x14, 0xab, 0x1b, 0x57, 0x71, 0xcd, 0xb2, 0x06, 0x3a, 0x3b, 0x3a, 0xe9, 0xef, 0xeb,
0xe7, 0xae, 0x1d, 0x4d, 0x9c, 0x38, 0x71, 0x12, 0x23, 0x06, 0x6b, 0x1d, 0xc6, 0x1a, 0xcc, 0x64,
0x3c, 0x19, 0x6b, 0x2e, 0x69, 0x9e, 0x77, 0x80, 0x2c, 0xc5, 0x25, 0x25, 0x9c, 0x3f, 0x7b, 0x0e,
0xef, 0x3d, 0xfd, 0xfd, 0x03, 0xcc, 0x9b, 0x37, 0x8f, 0xec, 0xa2, 0x2c, 0xd9, 0x45, 0x59, 0xae,
0x69, 0x68, 0x40, 0x8c, 0x4c, 0xe6, 0xdf, 0x24, 0x44, 0x04, 0x23, 0xef, 0x13, 0x24, 0x62, 0xb0,
0xd6, 0xb2, 0xf5, 0xd6, 0xad, 0x1c, 0x3c, 0x70, 0x88, 0xb7, 0x3a, 0xbb, 0xd8, 0xb0, 0x71, 0x03,
0x7f, 0xfd, 0xcb, 0x8b, 0xac, 0x5a, 0xbd, 0x0a, 0x6b, 0x2d, 0x2b, 0x57, 0xae, 0x9c, 0x2c, 0x2e,
0x13, 0xf9, 0x28, 0x82, 0xb1, 0x53, 0x86, 0x99, 0x79, 0x4d, 0xd3, 0x28, 0x3f, 0x3e, 0xce, 0x65,
0x25, 0x65, 0x94, 0x2d, 0x2c, 0x67, 0x71, 0x76, 0x31, 0x22, 0x02, 0x62, 0x98, 0x53, 0x5b, 0x8b,
0x88, 0xa0, 0x41, 0xa9, 0xaf, 0xab, 0x47, 0x55, 0xb1, 0xc6, 0x91, 0x74, 0x3a, 0x91, 0xea, 0x3e,
0x10, 0xc7, 0xf1, 0x7b, 0x00, 0x29, 0x58, 0x63, 0xe9, 0xef, 0xef, 0xe5, 0x64, 0xdf, 0xbf, 0xde,
0xf7, 0x14, 0x94, 0x4a, 0xa5, 0xf8, 0x48, 0x75, 0xcd, 0x44, 0x57, 0x22, 0xaf, 0x33, 0x82, 0x02,
0xbc, 0xdc, 0x7a, 0xbc, 0xab, 0x32, 0x99, 0x90, 0xb4, 0xf7, 0xfa, 0x01, 0x06, 0xae, 0x31, 0x9e,
0x6f, 0x7b, 0x3d, 0x8e, 0x63, 0x0d, 0x3e, 0x9f, 0xff, 0xc7, 0x8c, 0xe3, 0xd6, 0x27, 0xae, 0xdd,
0x5d, 0xed, 0xd2, 0xd1, 0x6f, 0xc0, 0x7c, 0x46, 0x55, 0xed, 0x07, 0x99, 0xed, 0x44, 0x38, 0x37,
0x16, 0x71, 0xc7, 0xa9, 0x3f, 0xed, 0x38, 0xca, 0xff, 0x73, 0xfd, 0x1b, 0x99, 0xc8, 0x54, 0x9f,
0x5c, 0x8c, 0x64, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE hotkeys_export_xpm[1] = {{ png, sizeof( png ), "hotkeys_export_xpm" }};
//EOF
+105
View File
@@ -0,0 +1,105 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x05, 0x7f, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x7d, 0x4c, 0xd4,
0x75, 0x1c, 0xc7, 0x6f, 0xcb, 0xfe, 0xf0, 0x0f, 0xa7, 0xae, 0xd5, 0x56, 0xd3, 0x04, 0x39, 0x95,
0x36, 0x98, 0x15, 0x69, 0xda, 0xa6, 0xd5, 0xa6, 0x6b, 0x02, 0x87, 0x0f, 0x19, 0x59, 0x5a, 0x69,
0x6d, 0xe6, 0xd6, 0x04, 0x15, 0x81, 0x1c, 0xba, 0x28, 0x81, 0x3b, 0x10, 0x24, 0x50, 0xb4, 0x40,
0x34, 0x44, 0x40, 0x0c, 0x51, 0x52, 0x2f, 0x21, 0x01, 0x8f, 0xbb, 0xe3, 0xe1, 0xee, 0x10, 0x38,
0xe0, 0x1e, 0x38, 0xee, 0xb8, 0x47, 0xee, 0x01, 0x0e, 0x0e, 0x31, 0xe2, 0xe1, 0xf4, 0xdd, 0xf7,
0xfb, 0x65, 0xe0, 0x28, 0x4c, 0x68, 0x6d, 0xfd, 0xb6, 0xf7, 0x7e, 0xbf, 0xdf, 0xf7, 0xfb, 0xd9,
0xef, 0xf5, 0xf9, 0x3e, 0xbd, 0x3f, 0x3f, 0x0e, 0xe7, 0x3f, 0xbc, 0xbc, 0x5e, 0xef, 0xce, 0x82,
0x82, 0x82, 0xdf, 0x87, 0x86, 0x86, 0xf6, 0x4f, 0x1b, 0x20, 0x10, 0x08, 0xe6, 0xff, 0x98, 0x93,
0x75, 0x2c, 0x3b, 0xe7, 0x4c, 0x66, 0x76, 0xce, 0x0f, 0xd3, 0x8a, 0xf4, 0xa7, 0x66, 0x64, 0xa4,
0x06, 0xd1, 0xf8, 0xa5, 0xa1, 0x49, 0x7b, 0x56, 0x84, 0xf1, 0xad, 0xfe, 0x9b, 0x05, 0x6e, 0xaa,
0x57, 0xb6, 0x24, 0xbb, 0xb3, 0x8a, 0x44, 0x43, 0xdb, 0x76, 0xed, 0x02, 0xe9, 0xc6, 0xc5, 0xd2,
0xbb, 0xa3, 0xe3, 0xed, 0x7c, 0x95, 0x6f, 0x68, 0xf2, 0xea, 0x49, 0xd0, 0xa5, 0x82, 0x7c, 0x91,
0xc5, 0x62, 0x82, 0xcb, 0xe5, 0x80, 0xbb, 0xaf, 0x17, 0x1e, 0x8f, 0x07, 0x0f, 0x1e, 0x0c, 0xe2,
0xfe, 0xfd, 0x01, 0xf4, 0xf7, 0xbb, 0x49, 0xbb, 0x0b, 0x76, 0xbb, 0x0d, 0x95, 0x55, 0xe5, 0xf6,
0x0f, 0xf7, 0x9d, 0x08, 0xf0, 0xe3, 0x09, 0x46, 0x2f, 0xfc, 0x7c, 0xcb, 0x7b, 0xa3, 0xa2, 0x0a,
0xc2, 0x4a, 0x11, 0xda, 0xd4, 0x1a, 0xbc, 0xba, 0x7e, 0x3d, 0xe6, 0xee, 0xdd, 0x8b, 0x05, 0x01,
0x01, 0x68, 0x6d, 0x57, 0xa1, 0xae, 0xb1, 0x09, 0x17, 0x4a, 0xaa, 0x46, 0xbf, 0x88, 0x2f, 0x76,
0x00, 0x78, 0x91, 0x81, 0x6e, 0x57, 0x08, 0x75, 0x16, 0xab, 0x19, 0x76, 0x87, 0x0d, 0x36, 0x87,
0x05, 0xdd, 0x0e, 0x2b, 0x79, 0x1e, 0x57, 0x37, 0x7d, 0xb7, 0x5b, 0x60, 0x23, 0x52, 0xb6, 0x2b,
0xbd, 0xe1, 0x5f, 0x25, 0x7e, 0x1e, 0xf0, 0x7e, 0xf2, 0x1f, 0xf5, 0x32, 0x09, 0x2c, 0x56, 0x13,
0xe4, 0x0a, 0x39, 0x5e, 0xe0, 0x72, 0x31, 0xe7, 0xdc, 0x39, 0x70, 0xc8, 0x17, 0xe7, 0x05, 0x05,
0x21, 0x70, 0xdd, 0x3a, 0xbc, 0xbe, 0x61, 0x03, 0x53, 0xd0, 0xc6, 0x8d, 0x10, 0x0a, 0x85, 0x7d,
0x0c, 0xf4, 0x6b, 0xf9, 0x4d, 0x9d, 0xd9, 0x6c, 0x84, 0xc9, 0x62, 0x80, 0xd1, 0xa2, 0x87, 0xc9,
0xda, 0x05, 0xb3, 0x6d, 0x5c, 0x26, 0xab, 0x01, 0x5d, 0xe6, 0x4e, 0xd8, 0xba, 0x2d, 0x68, 0x6a,
0x69, 0xf4, 0x86, 0xef, 0x1f, 0x07, 0xa9, 0x34, 0xad, 0xb8, 0x5a, 0x5a, 0x8a, 0x05, 0x3e, 0x3e,
0xe0, 0x88, 0x44, 0x0c, 0xc2, 0x64, 0x34, 0x82, 0xa3, 0x50, 0x3c, 0x56, 0x64, 0x24, 0x52, 0x52,
0x52, 0xc0, 0x40, 0x37, 0x85, 0xbf, 0xe8, 0xf4, 0x5d, 0x3a, 0x58, 0x49, 0xd6, 0xd6, 0x6e, 0x13,
0x1b, 0x95, 0xde, 0xa8, 0x43, 0x65, 0xf5, 0x6f, 0x68, 0x69, 0x6b, 0x42, 0x5d, 0x83, 0x94, 0x81,
0x64, 0x8a, 0x06, 0x06, 0x3a, 0x9c, 0x56, 0x36, 0x2a, 0x48, 0x4f, 0xc7, 0x3c, 0x7f, 0x7f, 0x70,
0x34, 0x9a, 0xc7, 0x90, 0xe9, 0x44, 0x20, 0x93, 0xa0, 0xb2, 0x1b, 0xd7, 0x74, 0x6a, 0xad, 0x0a,
0x0e, 0x97, 0x0d, 0x76, 0xa7, 0x0d, 0xce, 0x5e, 0x3b, 0x5c, 0x6e, 0x07, 0x62, 0x62, 0xa3, 0x91,
0x90, 0x78, 0x1c, 0x2a, 0x6d, 0x1b, 0xe8, 0xd4, 0x4a, 0x6b, 0xc5, 0x0c, 0xf4, 0x53, 0x5e, 0x3e,
0x9e, 0x5d, 0xb8, 0x10, 0x1c, 0xa7, 0xf3, 0x9f, 0x21, 0x7f, 0x05, 0x5d, 0x2f, 0x2b, 0xd1, 0xb5,
0xa9, 0x9a, 0xe1, 0x22, 0x00, 0x0a, 0xe9, 0xed, 0xef, 0x41, 0x9f, 0xc7, 0x8d, 0xd3, 0x59, 0xa7,
0x70, 0xf4, 0x58, 0x1c, 0xec, 0x24, 0x01, 0x33, 0x59, 0x0f, 0x91, 0xb8, 0x8a, 0x81, 0x12, 0xb2,
0x2b, 0x46, 0x23, 0x62, 0x63, 0x31, 0x7f, 0xed, 0x5a, 0x70, 0xba, 0xbb, 0x67, 0x07, 0x6a, 0x57,
0x2b, 0xc9, 0x28, 0x9c, 0x04, 0xe6, 0x20, 0x90, 0x5e, 0x06, 0xca, 0xc8, 0xcc, 0x40, 0x8d, 0xb4,
0x86, 0x8c, 0xb4, 0x9b, 0x4d, 0xdd, 0x04, 0x88, 0xae, 0x91, 0xae, 0x53, 0x83, 0x9c, 0xf3, 0xe7,
0x31, 0xdf, 0xcf, 0x0f, 0x1c, 0xb9, 0x7c, 0x66, 0x6b, 0x44, 0x41, 0x32, 0x45, 0x3d, 0xfa, 0x3d,
0x7d, 0x44, 0x6e, 0x0c, 0x0c, 0x7a, 0xc8, 0x36, 0xef, 0x81, 0x44, 0x2a, 0x86, 0x67, 0xa0, 0x8f,
0x3d, 0x1b, 0x8c, 0x9d, 0x53, 0x40, 0xf5, 0x72, 0x29, 0xe9, 0xeb, 0x87, 0x44, 0x22, 0xc1, 0x73,
0xbe, 0xbe, 0x78, 0xa6, 0xb0, 0xf0, 0xe9, 0xbb, 0x8e, 0x82, 0x14, 0xf7, 0x1a, 0x50, 0x27, 0x93,
0xa2, 0x7e, 0x1a, 0xd5, 0x36, 0x88, 0xc9, 0x8e, 0x53, 0x4c, 0x01, 0xd1, 0x78, 0x2a, 0xda, 0xae,
0x56, 0xab, 0xe0, 0xbf, 0x6a, 0x15, 0xe6, 0x46, 0x44, 0x60, 0x41, 0x60, 0x20, 0xb4, 0x5a, 0x0d,
0xf4, 0x86, 0x0e, 0xc8, 0x9b, 0x5a, 0xb0, 0x33, 0xae, 0x68, 0x6c, 0xf2, 0x1c, 0xe5, 0x17, 0x5e,
0x6c, 0x51, 0x93, 0x05, 0x17, 0xd7, 0xde, 0x25, 0xaa, 0x9e, 0x56, 0x6d, 0x2a, 0x25, 0xaa, 0x44,
0x77, 0x06, 0xb6, 0x7e, 0x99, 0xb8, 0x71, 0xf9, 0x66, 0xfe, 0x68, 0x93, 0xb2, 0x19, 0xf4, 0x2c,
0xd1, 0x3e, 0x49, 0xdd, 0x5d, 0xe8, 0xf4, 0x5a, 0x84, 0xee, 0xd8, 0xc1, 0x9c, 0x41, 0xd9, 0xda,
0x8c, 0x66, 0x65, 0x23, 0x8a, 0x6f, 0xde, 0x79, 0xb8, 0x8c, 0xc7, 0xf7, 0x4c, 0x3a, 0x43, 0xfa,
0xe9, 0xf4, 0xb5, 0xfc, 0xef, 0xcf, 0x4a, 0xa2, 0x12, 0xce, 0x6a, 0x0e, 0x7e, 0x77, 0x46, 0x3b,
0x9d, 0x22, 0xbf, 0xcd, 0x52, 0xef, 0x88, 0x4c, 0x29, 0xf4, 0x0d, 0x16, 0x84, 0xfb, 0xf1, 0x92,
0x64, 0xcb, 0x37, 0x0b, 0x46, 0x57, 0x6e, 0x4f, 0x19, 0x26, 0x1a, 0x59, 0xb9, 0xfd, 0xc4, 0xa3,
0xd7, 0xc2, 0x4f, 0x0c, 0xc7, 0x67, 0xdd, 0x1a, 0xce, 0xbb, 0x78, 0xe9, 0x51, 0x72, 0x6e, 0xf9,
0xc3, 0xd5, 0x1f, 0xa5, 0x8e, 0x2d, 0xe3, 0x09, 0x46, 0xfc, 0x78, 0xc9, 0x11, 0x93, 0x20, 0xbf,
0x90, 0xa4, 0xcf, 0x96, 0x87, 0x09, 0x86, 0xdf, 0xde, 0x7d, 0xd2, 0x33, 0x53, 0xbd, 0xf5, 0x49,
0xda, 0xfd, 0x35, 0x3b, 0xd3, 0x06, 0xd7, 0xec, 0x4a, 0x1b, 0x7e, 0xf3, 0xe3, 0xd4, 0x31, 0x32,
0x9d, 0x43, 0x24, 0x7b, 0xd1, 0xcb, 0x21, 0xfc, 0xa0, 0x25, 0x21, 0x89, 0xef, 0xfa, 0x84, 0xf0,
0x47, 0xb8, 0x9b, 0x32, 0x17, 0x4d, 0x31, 0xd5, 0xc0, 0x6d, 0x7c, 0x7d, 0x66, 0xde, 0xf5, 0x47,
0xd2, 0xba, 0x1a, 0x28, 0x9a, 0x64, 0xb3, 0x16, 0x5d, 0xc3, 0xc6, 0xe6, 0x7b, 0x58, 0x1a, 0xca,
0x7f, 0xc8, 0xdd, 0x94, 0xf4, 0xfc, 0xe2, 0xb0, 0xe4, 0x97, 0x7c, 0x82, 0xf9, 0x0f, 0x38, 0xef,
0xc4, 0xcf, 0x99, 0x02, 0x0a, 0xd8, 0x2a, 0x70, 0x5e, 0xb8, 0x72, 0x0b, 0x06, 0xe2, 0x0e, 0x1d,
0x7a, 0x35, 0x93, 0xce, 0x40, 0x16, 0xb4, 0xab, 0x83, 0x39, 0x84, 0xc1, 0xd4, 0x89, 0x2e, 0x22,
0x7a, 0x37, 0x90, 0x77, 0xbd, 0xb1, 0x83, 0xf5, 0x4f, 0xc4, 0x1a, 0x4d, 0x7a, 0xb2, 0x91, 0x24,
0x58, 0x11, 0x26, 0x18, 0x5b, 0x1a, 0x9c, 0xf0, 0x06, 0x81, 0x08, 0x7d, 0x83, 0xf9, 0x59, 0x7f,
0x2b, 0x13, 0x8f, 0x41, 0x1d, 0x68, 0x55, 0x37, 0xa1, 0x5d, 0xdb, 0x82, 0x96, 0xf6, 0x46, 0x68,
0xf5, 0x2a, 0x74, 0x1a, 0xb5, 0xd0, 0x9b, 0x3a, 0x08, 0x44, 0xc7, 0xee, 0x34, 0x7b, 0x9d, 0x41,
0x0d, 0x4d, 0x67, 0x3b, 0x71, 0x0c, 0x25, 0x8b, 0xef, 0x34, 0x68, 0xd1, 0x20, 0xaf, 0xa5, 0x20,
0x2c, 0x09, 0x49, 0x1a, 0x24, 0xa0, 0x8c, 0x45, 0x1f, 0x9c, 0x9c, 0xfb, 0x44, 0x90, 0x91, 0x64,
0xdc, 0xa6, 0x69, 0xc1, 0x91, 0xb8, 0x58, 0x1c, 0xfb, 0xe6, 0x28, 0xb2, 0xce, 0x9e, 0xc2, 0xe9,
0x33, 0x99, 0xc4, 0x68, 0x0d, 0xcc, 0x60, 0x0d, 0xc4, 0x5c, 0x0f, 0x1c, 0x8c, 0x60, 0x50, 0x5d,
0x97, 0x86, 0xc1, 0x68, 0x52, 0x06, 0x32, 0x42, 0x99, 0xa2, 0x8e, 0x8d, 0x68, 0xf1, 0x96, 0xe3,
0x7e, 0x4f, 0xac, 0x8c, 0x13, 0x20, 0x33, 0xf9, 0x60, 0x43, 0x63, 0x1d, 0xa2, 0x62, 0x0e, 0xb1,
0xec, 0xa9, 0x73, 0x87, 0x84, 0x06, 0xa3, 0xa8, 0xb8, 0x10, 0xbc, 0xb0, 0x50, 0xe4, 0xe4, 0x66,
0xe3, 0x50, 0xd4, 0x01, 0xd6, 0xce, 0x60, 0x64, 0x64, 0x6a, 0x5d, 0x2b, 0x8c, 0x24, 0x81, 0x09,
0xd0, 0x12, 0xde, 0x71, 0xdf, 0xa7, 0x82, 0x68, 0x7d, 0xa1, 0x53, 0xb1, 0x7b, 0xcf, 0xa7, 0xac,
0x5c, 0x74, 0x99, 0xf5, 0x88, 0xf9, 0x3a, 0x9a, 0x38, 0xba, 0x19, 0xd1, 0x31, 0x87, 0x99, 0x0f,
0x46, 0x45, 0x1f, 0x22, 0x2e, 0x6f, 0x62, 0xfd, 0x74, 0x5a, 0xb5, 0x64, 0x54, 0x66, 0xab, 0x71,
0x76, 0x20, 0x5a, 0xdc, 0xe8, 0xba, 0x5c, 0x2b, 0xbb, 0x8a, 0xb8, 0xa3, 0x47, 0x90, 0x5f, 0x90,
0x47, 0x6c, 0xa8, 0x06, 0x97, 0x8b, 0x8b, 0x48, 0xdb, 0x35, 0xb8, 0x89, 0xd9, 0x5e, 0x29, 0xb9,
0xcc, 0xca, 0x08, 0x9b, 0x4a, 0x13, 0xdd, 0x3c, 0x2a, 0x56, 0x5a, 0x64, 0x8d, 0xf5, 0x33, 0x07,
0xd1, 0xcc, 0x9c, 0x2e, 0x52, 0x22, 0x7a, 0x1c, 0xe8, 0xe9, 0x75, 0xa1, 0x97, 0x78, 0x5c, 0x1f,
0x29, 0xe5, 0xd4, 0x03, 0x3d, 0x03, 0x1e, 0x76, 0xa7, 0xef, 0xb4, 0xbd, 0xc7, 0xed, 0x22, 0x71,
0x4e, 0x16, 0x4f, 0x4b, 0xcb, 0xc4, 0xae, 0x7b, 0x2a, 0x28, 0xaf, 0xe4, 0x36, 0x39, 0x0b, 0x72,
0x54, 0x54, 0x0a, 0x67, 0x2d, 0xb1, 0xb4, 0x1a, 0x6a, 0x4d, 0xdb, 0x0c, 0x40, 0xdb, 0x04, 0xd2,
0x7d, 0xf1, 0xb9, 0x23, 0x22, 0x69, 0x2d, 0xaa, 0x6b, 0xc4, 0xb3, 0x97, 0x58, 0x82, 0x4b, 0xa5,
0xe5, 0x5e, 0x2e, 0xf9, 0x69, 0x99, 0x76, 0x5b, 0x4f, 0x5a, 0xd0, 0x7b, 0x7c, 0x2e, 0xf9, 0x3d,
0x52, 0x72, 0x79, 0xfc, 0xe1, 0x65, 0xff, 0x52, 0xe4, 0xf7, 0xcb, 0xc5, 0x0d, 0x4e, 0x0c, 0xe7,
0xfc, 0xdf, 0xd7, 0x9f, 0x92, 0x97, 0x0d, 0xce, 0x36, 0xe0, 0x35, 0x9b, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE hotkeys_import_xpm[1] = {{ png, sizeof( png ), "hotkeys_import_xpm" }};
//EOF
-79
View File
@@ -1,79 +0,0 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x03, 0xdc, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x9d, 0x96, 0x4b, 0x48, 0x54,
0x61, 0x14, 0xc7, 0xaf, 0xa5, 0x92, 0xd9, 0x63, 0x28, 0xc3, 0x1e, 0x92, 0x14, 0x31, 0xab, 0x8a,
0xc8, 0x6a, 0xa3, 0x92, 0x59, 0x11, 0xb4, 0x69, 0x69, 0xd0, 0x53, 0x14, 0x29, 0xc8, 0x82, 0xf6,
0x52, 0xd1, 0x42, 0x10, 0x75, 0xa1, 0x13, 0x11, 0xa8, 0x44, 0x19, 0x2e, 0x9c, 0x92, 0x5a, 0x28,
0xb8, 0x0b, 0x34, 0x32, 0xa7, 0x9c, 0x71, 0x08, 0xa6, 0xc7, 0x80, 0x3a, 0xbe, 0x9d, 0x87, 0xcf,
0x19, 0xdf, 0xa7, 0xf3, 0x3f, 0xcd, 0x8d, 0x7b, 0xbd, 0x33, 0xd3, 0xe8, 0x07, 0xff, 0x61, 0xe6,
0xbb, 0xdf, 0x77, 0x7e, 0x73, 0xce, 0xf9, 0x7f, 0xf7, 0x5e, 0x45, 0x51, 0x94, 0x04, 0xd6, 0x41,
0x56, 0x36, 0x2b, 0x67, 0x23, 0xca, 0xcc, 0xcc, 0xcc, 0x77, 0xbb, 0xdd, 0x1f, 0x56, 0x56, 0x56,
0x16, 0x9c, 0x4e, 0xe7, 0x2b, 0xcd, 0x35, 0xc4, 0xcc, 0x08, 0x33, 0x94, 0x4d, 0xac, 0xb3, 0xfd,
0xfd, 0xfd, 0x34, 0x30, 0x30, 0x40, 0x1e, 0x8f, 0x47, 0x34, 0x38, 0x38, 0x48, 0x43, 0x43, 0x43,
0x34, 0x3c, 0x3c, 0x2c, 0x1a, 0x19, 0x19, 0xa1, 0xd1, 0xd1, 0x51, 0x1a, 0x1b, 0x1b, 0x23, 0x5e,
0x1b, 0xe2, 0xb5, 0x41, 0x5e, 0x17, 0xe4, 0xf9, 0xd0, 0xe2, 0xe2, 0xe2, 0x4a, 0xe3, 0x9b, 0x37,
0xb4, 0x37, 0x23, 0x83, 0x56, 0x57, 0x57, 0xb1, 0x2e, 0x08, 0xf1, 0xda, 0x60, 0x62, 0x62, 0x62,
0x6e, 0x98, 0x21, 0x1f, 0x79, 0xf1, 0x42, 0xa0, 0xf1, 0xf1, 0x71, 0x9a, 0x98, 0x98, 0xa0, 0xa9,
0xa9, 0x29, 0x5a, 0x58, 0x58, 0xa0, 0xbb, 0x0f, 0x1e, 0x50, 0xea, 0x91, 0x23, 0xc4, 0x71, 0x08,
0x63, 0x72, 0x72, 0x52, 0xae, 0x4d, 0x4f, 0x4f, 0x63, 0x4e, 0x0f, 0x8a, 0x04, 0x01, 0x40, 0x0b,
0x01, 0x40, 0x85, 0xcc, 0xcd, 0xcd, 0xc9, 0xf7, 0x33, 0xf9, 0xf9, 0xb4, 0xf5, 0xf2, 0x65, 0x52,
0xfc, 0xfe, 0x7f, 0x20, 0xed, 0xe8, 0xed, 0xed, 0x7d, 0xad, 0x03, 0x01, 0x10, 0x0f, 0xc4, 0xeb,
0xf5, 0x4a, 0x16, 0x1d, 0x1d, 0x1d, 0xb4, 0x8b, 0x4b, 0x95, 0xf4, 0xe4, 0x09, 0x29, 0x5c, 0x2e,
0x20, 0x12, 0x4d, 0x26, 0x81, 0xa9, 0xda, 0xc6, 0xbf, 0xb9, 0x94, 0x8b, 0x06, 0x50, 0x2c, 0x08,
0xb2, 0xf0, 0xf3, 0xbf, 0x5e, 0x5e, 0x5e, 0xa6, 0xe7, 0x2f, 0x5e, 0x50, 0x4a, 0x5a, 0x1a, 0x29,
0x2d, 0x2d, 0x02, 0x88, 0xaa, 0x70, 0x86, 0x3a, 0x90, 0x16, 0x02, 0xc0, 0x5a, 0x08, 0x04, 0xc8,
0xd5, 0xdb, 0xb7, 0x69, 0xdb, 0x89, 0x13, 0xa4, 0xb8, 0xdd, 0xb1, 0x21, 0xd1, 0x40, 0xff, 0x83,
0xa0, 0x64, 0x6c, 0x5f, 0xba, 0x75, 0xe7, 0x0e, 0xa5, 0x9a, 0xcd, 0xa4, 0x74, 0x77, 0x6f, 0x0c,
0x14, 0x0d, 0x02, 0x00, 0xe4, 0xf3, 0xf9, 0xc4, 0x49, 0xc8, 0xea, 0xed, 0xbb, 0x77, 0xb4, 0x23,
0x3d, 0x9d, 0x92, 0x1e, 0x3d, 0x22, 0x85, 0x7f, 0xaf, 0x0b, 0x14, 0xc9, 0xbe, 0x5a, 0x08, 0xfa,
0x13, 0x08, 0x04, 0x44, 0xf3, 0xf3, 0xf3, 0xe2, 0xd0, 0x33, 0xe7, 0xce, 0x51, 0x2a, 0x4b, 0xe1,
0xef, 0xd1, 0xcc, 0xc0, 0x55, 0x58, 0xd2, 0x81, 0xe2, 0x81, 0xe0, 0x7c, 0xa8, 0x67, 0x24, 0x18,
0x0c, 0x4a, 0x76, 0x4f, 0xcb, 0xcb, 0x29, 0x95, 0xb3, 0x4b, 0xb0, 0x5a, 0x23, 0xda, 0xdb, 0x6e,
0xb7, 0x37, 0xea, 0x40, 0xda, 0x33, 0xa2, 0x02, 0xd6, 0x42, 0xb2, 0xb2, 0xb2, 0x74, 0x9a, 0x9d,
0x9d, 0x15, 0x58, 0x37, 0xf7, 0xeb, 0x00, 0xfa, 0x16, 0x06, 0x21, 0x63, 0x1c, 0x01, 0xbe, 0x63,
0x60, 0x2e, 0xcf, 0x00, 0xaa, 0xa8, 0xa8, 0xa0, 0x9c, 0x9c, 0x1c, 0xaa, 0xac, 0xac, 0x8c, 0x98,
0x09, 0x82, 0xab, 0x43, 0x05, 0xe1, 0xe0, 0x22, 0xe0, 0xcc, 0xcc, 0x0c, 0xd5, 0xd7, 0xd7, 0xcb,
0x3a, 0xc4, 0xa8, 0xa9, 0xa9, 0x89, 0x0c, 0x42, 0x26, 0x58, 0xe0, 0x70, 0x38, 0x28, 0x3b, 0x3b,
0x9b, 0x4a, 0x4a, 0x4a, 0x0c, 0x5a, 0x0b, 0xd2, 0x5e, 0x2b, 0x2b, 0x2b, 0xa3, 0xe6, 0xe6, 0x66,
0x2a, 0x28, 0x28, 0x90, 0x18, 0xb9, 0xb9, 0xb9, 0xb4, 0xb4, 0xb4, 0x64, 0x04, 0xa1, 0x5c, 0x55,
0x55, 0x55, 0x02, 0xab, 0xae, 0xae, 0x96, 0x4c, 0x5c, 0x2e, 0x2f, 0x5d, 0xbf, 0xee, 0xa2, 0xa4,
0xa4, 0x2e, 0xde, 0xf0, 0xd9, 0x00, 0xc2, 0x5c, 0x72, 0x72, 0x17, 0xdd, 0xb8, 0xf1, 0x93, 0xcd,
0x31, 0x2b, 0xe5, 0xaa, 0xad, 0xad, 0x15, 0x88, 0xc5, 0x62, 0x91, 0xb2, 0x1a, 0x40, 0x6a, 0xa9,
0xd4, 0x72, 0xb5, 0xb4, 0x0c, 0xd1, 0xee, 0xdd, 0xdd, 0x94, 0x92, 0xd2, 0x45, 0xf7, 0xee, 0xfd,
0x22, 0x9b, 0xcd, 0x6b, 0xe8, 0x51, 0x4f, 0x4f, 0x80, 0xee, 0xdf, 0x77, 0xd3, 0x96, 0x2d, 0x5f,
0x78, 0xad, 0x8d, 0xda, 0xdb, 0x7d, 0x92, 0x05, 0x04, 0x08, 0xce, 0x9d, 0x01, 0xa4, 0xb5, 0xef,
0xfb, 0xf7, 0xc3, 0xb2, 0xf9, 0xf8, 0x71, 0x3b, 0x7d, 0xfb, 0xe6, 0x95, 0xfa, 0xab, 0xfd, 0x80,
0xe0, 0xb8, 0x50, 0x28, 0x24, 0x4d, 0x87, 0x9c, 0xce, 0x69, 0x3a, 0x7a, 0xd4, 0x21, 0x7b, 0xda,
0xdb, 0xfd, 0xb1, 0x41, 0x2a, 0xe4, 0xc7, 0x0f, 0xaf, 0x64, 0x72, 0xec, 0x98, 0x9d, 0x9f, 0x4f,
0x01, 0x1d, 0x04, 0x00, 0x2d, 0x04, 0xa5, 0x82, 0xfe, 0x9e, 0xab, 0x00, 0xef, 0xf9, 0x42, 0xfb,
0xf6, 0x7d, 0x64, 0x17, 0xfe, 0x96, 0x3e, 0xb5, 0xb5, 0xb5, 0x79, 0x38, 0xf6, 0x49, 0x03, 0x08,
0x8e, 0xb9, 0x76, 0xcd, 0x25, 0xe5, 0xea, 0xe9, 0xf1, 0xc5, 0x05, 0xc1, 0x5c, 0x5d, 0x5d, 0x1d,
0x35, 0x34, 0x34, 0xd0, 0xb3, 0x67, 0xaf, 0xa8, 0xb0, 0xb0, 0x91, 0xcb, 0xfe, 0x89, 0xfa, 0xfa,
0xfa, 0x56, 0x8b, 0x8b, 0x8b, 0x5f, 0x72, 0xec, 0x9d, 0xda, 0x27, 0x6c, 0x1e, 0x20, 0x68, 0x3e,
0x1a, 0x5f, 0x5a, 0xfa, 0xfb, 0xbf, 0x10, 0x58, 0x17, 0xc2, 0x1a, 0x40, 0x30, 0x87, 0x3d, 0x30,
0x15, 0x6e, 0xd0, 0x56, 0xab, 0xd5, 0xc1, 0x71, 0x2f, 0xb2, 0x36, 0x2b, 0xe1, 0x21, 0x20, 0x9c,
0x76, 0x8b, 0x65, 0x40, 0x9c, 0xf4, 0xf5, 0xab, 0x57, 0x07, 0x01, 0x20, 0x12, 0x04, 0xbd, 0xc0,
0x53, 0xb4, 0xa9, 0xa9, 0x49, 0x20, 0xe8, 0x33, 0xee, 0x99, 0x9d, 0x9d, 0x9d, 0x1e, 0x93, 0xc9,
0x54, 0xca, 0x71, 0x53, 0x14, 0xcd, 0x10, 0x10, 0x36, 0xdc, 0xbc, 0xe9, 0xa2, 0xf4, 0x74, 0x5b,
0xdc, 0x10, 0x08, 0xc1, 0x5b, 0x5b, 0x5b, 0x25, 0x13, 0x40, 0xb8, 0x37, 0x7e, 0xb3, 0xd9, 0xfc,
0x98, 0x63, 0xee, 0x57, 0x4b, 0xa6, 0x03, 0xe1, 0x1f, 0x5d, 0xba, 0xf4, 0x9d, 0x4e, 0x9d, 0xea,
0x8d, 0x09, 0xd1, 0xda, 0x17, 0xe2, 0x5e, 0xb0, 0xf5, 0x6d, 0x52, 0x2e, 0x64, 0x12, 0x86, 0x1c,
0x52, 0x0d, 0x60, 0x00, 0xc5, 0xb2, 0x6f, 0x24, 0x08, 0xac, 0x0b, 0xf1, 0x3b, 0x81, 0x34, 0x1e,
0x3d, 0xe1, 0x72, 0x3d, 0x0c, 0xbf, 0x5e, 0x19, 0x20, 0xff, 0x5e, 0xb7, 0xd6, 0x0b, 0xc1, 0x6b,
0x15, 0x04, 0x0b, 0x17, 0x15, 0x15, 0xe1, 0x5d, 0xee, 0x0a, 0x6b, 0xfb, 0xda, 0x72, 0x69, 0x07,
0x2e, 0x1c, 0x66, 0x9d, 0x67, 0x5d, 0xd8, 0x80, 0x4e, 0xb3, 0xf6, 0x84, 0xdd, 0x15, 0x15, 0xf2,
0x07, 0x00, 0x4a, 0xbb, 0x01, 0x4c, 0xdf, 0xac, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE import_vector_xpm[1] = {{ png, sizeof( png ), "import_vector_xpm" }};
//EOF
+51
View File
@@ -0,0 +1,51 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x02, 0x1e, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xd5, 0x95, 0xcf, 0x4b, 0x22,
0x51, 0x1c, 0xc0, 0xbf, 0xdb, 0xce, 0x40, 0xe0, 0x10, 0x8c, 0xec, 0xa5, 0x2e, 0x7b, 0x5b, 0x5c,
0x58, 0x08, 0x04, 0x6f, 0x41, 0x04, 0x7b, 0xd8, 0x55, 0xff, 0x82, 0x28, 0xf4, 0xd6, 0xd6, 0xad,
0x2e, 0x7b, 0x28, 0x58, 0x29, 0x49, 0x51, 0x17, 0x36, 0xfa, 0x41, 0xd1, 0xc1, 0xa1, 0x4b, 0xa2,
0x74, 0x59, 0x50, 0xda, 0xbc, 0xc6, 0x9a, 0x73, 0xd6, 0xf5, 0x66, 0xed, 0x52, 0xb9, 0x0b, 0xda,
0xa5, 0x74, 0xd7, 0x43, 0x7e, 0xf7, 0xfb, 0x66, 0xd5, 0xc6, 0x74, 0x44, 0x61, 0x86, 0xad, 0x2f,
0x7c, 0xf0, 0xcd, 0xf3, 0xf1, 0x3e, 0x7c, 0xbf, 0xf3, 0x7d, 0x6f, 0x00, 0x1e, 0x40, 0x88, 0x44,
0xb5, 0xfe, 0x6b, 0x68, 0xcc, 0x12, 0xdf, 0x89, 0x77, 0x46, 0x8b, 0x4e, 0x88, 0x25, 0x22, 0x65,
0xa4, 0xe4, 0x05, 0x71, 0x4e, 0xf0, 0xc4, 0x0f, 0xe2, 0xa5, 0x51, 0x22, 0x3f, 0xe1, 0xeb, 0x30,
0xd6, 0x35, 0x06, 0xee, 0x65, 0xd1, 0xc8, 0xee, 0xa9, 0xde, 0xa2, 0xb7, 0xc4, 0x1f, 0x02, 0x55,
0xb0, 0xe7, 0x37, 0x7a, 0x8b, 0x22, 0x1d, 0x3a, 0x8d, 0x75, 0xe0, 0xbe, 0xde, 0xa2, 0x5c, 0x87,
0xb3, 0x23, 0xd6, 0xe7, 0x1f, 0x4b, 0x84, 0xe0, 0x94, 0xc0, 0x3e, 0x38, 0x7d, 0xb8, 0xc9, 0x6c,
0x6e, 0xc2, 0xd8, 0xc6, 0x06, 0xbc, 0x67, 0xb0, 0xb1, 0x61, 0xa2, 0xf5, 0x75, 0xf0, 0x14, 0x0a,
0x80, 0x0c, 0x36, 0xfe, 0xef, 0xa2, 0x65, 0x8e, 0xbb, 0xa6, 0x3f, 0x51, 0x8b, 0x15, 0x9e, 0xaf,
0x2c, 0x03, 0x8c, 0xf6, 0x25, 0xa2, 0x12, 0xce, 0x6d, 0x6d, 0xc1, 0x6b, 0xf5, 0x3a, 0xb6, 0x59,
0xb7, 0xf8, 0x76, 0x70, 0x50, 0x5b, 0x35, 0x99, 0x7e, 0xd1, 0xba, 0x67, 0xfd, 0x88, 0x3c, 0xb2,
0x0c, 0xb5, 0xdd, 0x5d, 0xf0, 0x7a, 0x3c, 0xca, 0x95, 0xd4, 0x26, 0xb2, 0xdb, 0xed, 0x0a, 0xea,
0x38, 0x5c, 0x58, 0xa8, 0xfa, 0x86, 0x86, 0x52, 0xb4, 0x96, 0xeb, 0x59, 0xc4, 0x9e, 0x73, 0x39,
0xc0, 0xbd, 0x3d, 0x48, 0x52, 0x76, 0xa2, 0x5a, 0x54, 0xa9, 0x54, 0xd0, 0x6c, 0x36, 0xa3, 0x28,
0x8a, 0x58, 0x2e, 0x97, 0x9b, 0xf3, 0xb5, 0xdb, 0x5b, 0x94, 0x26, 0x26, 0x6e, 0x56, 0x05, 0x61,
0xad, 0xab, 0x88, 0x04, 0xc9, 0x7a, 0xf7, 0x25, 0x1b, 0x73, 0x67, 0x67, 0x80, 0xb1, 0x18, 0xfc,
0xf4, 0x3e, 0xbf, 0x13, 0x85, 0xc3, 0x61, 0x74, 0x3a, 0x9d, 0xe8, 0x70, 0x38, 0x50, 0x92, 0xa4,
0x96, 0xac, 0x7e, 0x5f, 0x5d, 0xe1, 0xc7, 0x91, 0x91, 0x9b, 0xc9, 0x57, 0x03, 0x1f, 0x20, 0x48,
0xe5, 0x67, 0x84, 0xc0, 0xd6, 0x22, 0xd2, 0xe2, 0xe2, 0x02, 0x30, 0xf9, 0x05, 0x30, 0x9b, 0xdd,
0x51, 0x36, 0xb3, 0xd9, 0x6c, 0x98, 0x48, 0x24, 0x30, 0x1e, 0x8f, 0xa3, 0xd5, 0x6a, 0x6d, 0x7b,
0x5f, 0x99, 0x48, 0x04, 0x17, 0xcd, 0x83, 0xad, 0x87, 0x9c, 0x32, 0x98, 0xce, 0x64, 0xba, 0x8b,
0x2e, 0x2f, 0x01, 0xe3, 0x9f, 0xff, 0x89, 0xd2, 0xe9, 0x34, 0x72, 0x1c, 0xd7, 0xbc, 0xd9, 0x79,
0x9e, 0x47, 0x59, 0x96, 0xef, 0xca, 0x5a, 0x2a, 0x61, 0x68, 0x78, 0xb8, 0x3d, 0x23, 0x44, 0x78,
0x42, 0x59, 0x4d, 0x91, 0xd0, 0xaf, 0xe2, 0xb8, 0x21, 0xc9, 0xe7, 0x01, 0xa3, 0x51, 0x28, 0x34,
0x4a, 0xe7, 0x72, 0xb9, 0x30, 0x18, 0x0c, 0x36, 0x37, 0x0e, 0x04, 0x02, 0xe8, 0x76, 0xbb, 0x5b,
0xde, 0x91, 0x4f, 0x10, 0x3e, 0xf5, 0x7a, 0x5b, 0x28, 0xe5, 0x64, 0x99, 0x4a, 0x12, 0x1c, 0xa9,
0x9b, 0xc1, 0x62, 0xb1, 0x60, 0xb1, 0x58, 0x6c, 0x8a, 0xd8, 0x98, 0xcd, 0x29, 0x5d, 0x37, 0x3f,
0xcf, 0xba, 0xee, 0x6b, 0xb4, 0xd7, 0x8f, 0x24, 0x13, 0xa5, 0x52, 0x50, 0xdb, 0xde, 0x86, 0x15,
0xad, 0xf6, 0xee, 0x78, 0x8e, 0x04, 0x41, 0xfb, 0x1c, 0x69, 0x88, 0x66, 0x28, 0x8b, 0x71, 0x3d,
0x6f, 0x86, 0xbf, 0x40, 0xe5, 0x44, 0x06, 0xed, 0xb4, 0x72, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE label2glabel_xpm[1] = {{ png, sizeof( png ), "label2glabel_xpm" }};
//EOF
+38
View File
@@ -0,0 +1,38 @@
/* Do not modify this file, it was automatically generated by the
* PNG2cpp CMake script, using a *.png file as input.
*/
#include <bitmaps_png/bitmaps_list.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, 0x50, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xd5, 0x95, 0xcb, 0x4a, 0xc3,
0x40, 0x14, 0x86, 0x7f, 0x15, 0x1f, 0xa0, 0x2f, 0x21, 0xf8, 0x00, 0xee, 0x04, 0xbb, 0x70, 0xa1,
0xef, 0xa0, 0x5b, 0x6f, 0x2f, 0xe0, 0xc6, 0x45, 0x40, 0xc1, 0x2e, 0xdc, 0xf5, 0x42, 0xa1, 0x9b,
0xd0, 0x8d, 0xd2, 0xee, 0xbb, 0x30, 0x5d, 0x0a, 0x91, 0xae, 0x0b, 0xd9, 0xb5, 0x55, 0x6c, 0xe3,
0x23, 0x58, 0x85, 0x1e, 0xff, 0x29, 0x13, 0x08, 0x92, 0xe9, 0x75, 0x02, 0xf1, 0xc0, 0x47, 0x66,
0x26, 0x90, 0x8f, 0x7f, 0x72, 0x32, 0x01, 0x32, 0x50, 0x39, 0x32, 0xd6, 0xd7, 0x54, 0xeb, 0x92,
0xbc, 0x91, 0x8b, 0xb4, 0x45, 0xaf, 0xe4, 0x86, 0xf8, 0x69, 0x4a, 0x76, 0xc8, 0x07, 0xd9, 0x26,
0xef, 0x64, 0x37, 0x2d, 0x51, 0x81, 0xdc, 0x27, 0x8c, 0xad, 0xd6, 0xe6, 0x9f, 0x14, 0x51, 0xba,
0x2d, 0xdb, 0xa2, 0x63, 0xf2, 0x45, 0x24, 0x86, 0x9a, 0x1f, 0xd9, 0x16, 0x3d, 0x25, 0x74, 0x9a,
0xea, 0xc0, 0x47, 0xdb, 0xa2, 0x20, 0xe1, 0xdb, 0xc9, 0xe9, 0xf5, 0xff, 0x52, 0x0f, 0xe8, 0x13,
0x59, 0x82, 0x7e, 0xf6, 0x43, 0x95, 0xcb, 0xd8, 0x2f, 0x95, 0x70, 0xad, 0x50, 0xe3, 0xd4, 0x44,
0xc5, 0x22, 0x9c, 0x30, 0x84, 0x28, 0xd4, 0x38, 0x4b, 0x22, 0x59, 0x80, 0xc5, 0x44, 0xdc, 0xc2,
0xab, 0x4a, 0x05, 0x87, 0x33, 0x44, 0x8e, 0xc6, 0xd5, 0x73, 0x37, 0xb6, 0xb6, 0x94, 0xc8, 0xe9,
0x74, 0x30, 0xa9, 0xd5, 0x70, 0xe7, 0x38, 0xd3, 0xa3, 0x29, 0x5e, 0xf1, 0xd4, 0x79, 0xfd, 0xe0,
0xbc, 0xe1, 0xfe, 0x7c, 0x91, 0x9a, 0x07, 0x01, 0xa4, 0x5e, 0x87, 0xc7, 0x74, 0xa6, 0x9f, 0x60,
0x92, 0x68, 0xfe, 0x3b, 0xa2, 0xc0, 0xd3, 0xdd, 0xe7, 0x45, 0x6b, 0x83, 0x01, 0xa4, 0xd9, 0xc4,
0x27, 0xd7, 0xf6, 0xac, 0x89, 0x4c, 0x0c, 0x87, 0x90, 0x76, 0x1b, 0x3f, 0x4c, 0x76, 0xb6, 0xb2,
0x88, 0x09, 0x4e, 0xbb, 0xdd, 0xd9, 0xa2, 0xd1, 0x08, 0xd2, 0x6a, 0xe1, 0x7b, 0x2d, 0x91, 0x08,
0x36, 0x98, 0xea, 0x84, 0xc2, 0x42, 0x8c, 0x97, 0x48, 0xd2, 0xeb, 0x41, 0x1a, 0x0d, 0x84, 0x6b,
0x6f, 0x9d, 0xe1, 0xb4, 0x98, 0x6e, 0xa7, 0x4a, 0xea, 0xba, 0x78, 0xb6, 0xd2, 0x0c, 0x26, 0x91,
0xef, 0x63, 0x52, 0xad, 0xe2, 0x36, 0xa1, 0xbd, 0x4d, 0x1f, 0xef, 0x4a, 0xa2, 0x73, 0xa6, 0x38,
0xb0, 0x71, 0xf2, 0xfc, 0x02, 0x4d, 0x5d, 0x0d, 0xb2, 0xfd, 0xb3, 0x85, 0x90, 0x00, 0x00, 0x00,
0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE label2text_xpm[1] = {{ png, sizeof( png ), "label2text_xpm" }};
//EOF
+24 -17
View File
@@ -7,23 +7,30 @@
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, 0x02, 0x00, 0x00, 0x00, 0x26, 0x28, 0xdb,
0x99, 0x00, 0x00, 0x00, 0xdc, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0x63, 0x78, 0x46, 0x55, 0xc0,
0x30, 0x6a, 0x1c, 0xf9, 0xc6, 0x7d, 0xf8, 0xf0, 0xe1, 0x3f, 0x95, 0xc0, 0xd7, 0xaf, 0x5f, 0x69,
0x6c, 0xdc, 0xdd, 0xbb, 0xdf, 0x96, 0x2e, 0xbe, 0x3d, 0x73, 0xfa, 0x8d, 0xbd, 0x7b, 0xdf, 0xfd,
0xfe, 0xfd, 0x8f, 0x32, 0xe3, 0x7e, 0xff, 0x51, 0x55, 0x38, 0xcc, 0xcb, 0xbd, 0x55, 0x5d, 0x71,
0x11, 0x03, 0xc3, 0xfe, 0xed, 0xf3, 0xaf, 0x50, 0xea, 0x3a, 0x13, 0xdd, 0xa3, 0x2c, 0x2c, 0x07,
0x0c, 0x0d, 0x4f, 0x33, 0x32, 0xee, 0x3f, 0xbe, 0xe6, 0x2a, 0xc9, 0xc6, 0x6d, 0xd9, 0xf2, 0xb0,
0xa3, 0xe3, 0x2e, 0x1c, 0xb9, 0xd9, 0x1f, 0xbf, 0x71, 0xe3, 0xeb, 0x8b, 0x17, 0x3f, 0x6b, 0x6b,
0xef, 0x35, 0xa7, 0xed, 0x47, 0x96, 0x22, 0x88, 0x16, 0x2e, 0xbc, 0xc7, 0xd0, 0xd5, 0x75, 0x0d,
0xe8, 0x2f, 0x38, 0xf2, 0xb5, 0x3d, 0x34, 0x7f, 0xfe, 0x73, 0x20, 0x6a, 0x6a, 0xbc, 0x2f, 0xca,
0xbc, 0x11, 0x59, 0x8a, 0x20, 0x8a, 0x8e, 0x3e, 0x87, 0x6e, 0x9c, 0x08, 0xf3, 0xa6, 0x86, 0x9a,
0xdb, 0x3b, 0x76, 0xbc, 0xb5, 0x50, 0xd8, 0x4c, 0x92, 0x59, 0xd8, 0x8d, 0x03, 0x22, 0x1e, 0xc6,
0xed, 0x32, 0xcc, 0x6b, 0x48, 0x35, 0x0b, 0xa7, 0x71, 0x64, 0x23, 0x90, 0x71, 0x5b, 0x27, 0xef,
0xef, 0x34, 0x6e, 0xa7, 0x0a, 0x5a, 0x98, 0xb7, 0x9a, 0xe1, 0x43, 0x57, 0xd7, 0x7f, 0x06, 0x06,
0xaa, 0xa0, 0xaf, 0xd1, 0xd1, 0xa3, 0xc6, 0x51, 0x60, 0xdc, 0x68, 0x5d, 0x31, 0x58, 0x8c, 0x03,
0x00, 0x7a, 0x13, 0x67, 0x71, 0xe0, 0xcc, 0x56, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82,
0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
0xce, 0x00, 0x00, 0x01, 0x4b, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0xd5, 0xbf, 0x4b, 0x02,
0x61, 0x00, 0x87, 0xf1, 0x77, 0x51, 0x9c, 0x0c, 0x91, 0xa0, 0x25, 0x30, 0xc2, 0xa0, 0x6c, 0x15,
0x22, 0xa4, 0xa8, 0x21, 0xa7, 0xa2, 0x21, 0xb2, 0x74, 0x09, 0x49, 0x73, 0x13, 0x13, 0xd4, 0x6a,
0x13, 0x5c, 0x0c, 0x44, 0xa4, 0x1f, 0xc4, 0x21, 0x35, 0xa4, 0x21, 0x18, 0x05, 0x81, 0x24, 0x38,
0x35, 0x34, 0x49, 0x4b, 0xfd, 0x07, 0x81, 0xe0, 0x12, 0xb7, 0x1c, 0x0d, 0x05, 0x4f, 0xc3, 0x91,
0x60, 0x5a, 0x17, 0x62, 0x11, 0xe1, 0xc1, 0x03, 0x77, 0xf0, 0x85, 0x0f, 0xef, 0xbb, 0x9c, 0xa8,
0xd5, 0x6a, 0xfc, 0x46, 0xa2, 0x07, 0xfd, 0x7d, 0x48, 0x96, 0x65, 0x7e, 0xfa, 0x51, 0x14, 0xa5,
0x07, 0x75, 0x1b, 0xaa, 0xd7, 0xc1, 0xef, 0x57, 0x8b, 0xc7, 0x21, 0x12, 0x51, 0xdf, 0xc3, 0xe1,
0xce, 0xa1, 0xeb, 0xca, 0x03, 0xa9, 0x83, 0xdb, 0xa6, 0xaa, 0xa7, 0x65, 0x10, 0x02, 0xec, 0x76,
0xc8, 0x64, 0x20, 0x10, 0x00, 0xab, 0x15, 0x8c, 0x46, 0xce, 0xce, 0xef, 0x5b, 0xf6, 0x5a, 0xe5,
0x8b, 0x77, 0x88, 0xf4, 0xe1, 0x0d, 0x7d, 0x43, 0xbb, 0x4d, 0x1d, 0x87, 0x24, 0x15, 0x72, 0xb9,
0x20, 0x97, 0x83, 0x44, 0x02, 0x1c, 0x0e, 0xd0, 0xeb, 0x99, 0x77, 0x17, 0x5a, 0xf6, 0x5a, 0xad,
0x07, 0x2f, 0xda, 0x43, 0x85, 0xf0, 0x11, 0xe8, 0x74, 0x50, 0x2a, 0xa9, 0x65, 0xb3, 0x20, 0xa9,
0xf8, 0xaa, 0xb7, 0xd8, 0x3d, 0x68, 0x7f, 0xf3, 0x44, 0x3d, 0x91, 0x10, 0x3c, 0x7b, 0x7d, 0xbc,
0x8e, 0xda, 0xd4, 0x6f, 0x93, 0x09, 0xe7, 0x52, 0xbe, 0x7b, 0xd0, 0xc4, 0x5c, 0x96, 0xaa, 0x6d,
0x86, 0x84, 0xc9, 0xc9, 0xd8, 0xe0, 0x0e, 0x8b, 0x03, 0x3e, 0x62, 0xe6, 0x05, 0x1e, 0xdd, 0x1b,
0xf4, 0x8f, 0xa4, 0x3a, 0x83, 0xca, 0xd2, 0x15, 0xe9, 0xd9, 0x50, 0x4b, 0x95, 0xe8, 0x1e, 0x16,
0x4b, 0xbc, 0x31, 0x9e, 0x1c, 0xde, 0xe6, 0x32, 0x98, 0x6e, 0xbb, 0xd5, 0x2a, 0xbf, 0x25, 0x21,
0xe4, 0x64, 0xb2, 0x71, 0x4d, 0x1f, 0x7b, 0x5a, 0x59, 0x63, 0x79, 0x3c, 0x4a, 0xcc, 0x11, 0xe5,
0x65, 0x6a, 0xfa, 0xd3, 0x9d, 0x56, 0x8a, 0xc7, 0xf3, 0x35, 0x84, 0x10, 0x60, 0x36, 0x83, 0xc1,
0xd0, 0x31, 0xf2, 0x7d, 0xa8, 0x0b, 0xfd, 0x53, 0xa8, 0xf7, 0x2b, 0xef, 0x41, 0xef, 0xbd, 0x01,
0xd4, 0x13, 0x20, 0xa3, 0x03, 0x4f, 0x86, 0x07, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82,
};
const BITMAP_OPAQUE lang_sl_xpm[1] = {{ png, sizeof( png ), "lang_sl_xpm" }};

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