Compare commits
138 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9c9252e8a3 | |||
| 3a744ad72f | |||
| 554e2a4bce | |||
| 6e8979d8d8 | |||
| 583d416640 | |||
| 03b50b4f85 | |||
| 440e135e3a | |||
| ab39f06003 | |||
| 98f78f534c | |||
| d18b12c1a3 | |||
| 6a7b1aa39a | |||
| c4be74a9d0 | |||
| 9092048dbc | |||
| bb419f1201 | |||
| d505fd2b60 | |||
| a771e0eccb | |||
| 593a5181d7 | |||
| c29274e760 | |||
| 216573bf48 | |||
| 1c235a5c89 | |||
| f90049dd9e | |||
| 90787e84bf | |||
| c36c80a077 | |||
| 227333239f | |||
| 2d43fcf9ee | |||
| 3edad56e6b | |||
| 4e2d900775 | |||
| 4dae82054e | |||
| cb5948d3a5 | |||
| 9fc7281fab | |||
| bb779b237a | |||
| 1294b4fec8 | |||
| 0b754562f6 | |||
| 15cb032ab7 | |||
| c85d2fd3bf | |||
| bc821ff47d | |||
| 42d9f42807 | |||
| 7ceff4cf5d | |||
| 4147da312b | |||
| 439891c31f | |||
| 322524101d | |||
| fd698653d9 | |||
| 8b503a06fa | |||
| 4a201df556 | |||
| 577b9f478b | |||
| f5a2eb1ab0 | |||
| 4379480d4b | |||
| dfa4afa826 | |||
| a533514763 | |||
| 952aaef52a | |||
| a54016a6f7 | |||
| 0c8a95c44b | |||
| 403633d21f | |||
| cc6f1d784d | |||
| e07ef3be9c | |||
| f35f534ff4 | |||
| 3899ec136b | |||
| 91ee809558 | |||
| 4c94e2729f | |||
| 2a5a207148 | |||
| c75bd89d63 | |||
| f58844bf8b | |||
| 07ac3499f3 | |||
| 050b64b822 | |||
| 43aa94dcfc | |||
| b2e54a432b | |||
| e766732020 | |||
| 3a5e01c44a | |||
| d4883da98b | |||
| 7cc3e9a16d | |||
| 9ad352d4bd | |||
| 031173bc47 | |||
| 658820a25e | |||
| 17fdce01a9 | |||
| bc4cc00332 | |||
| b57e9492b1 | |||
| 712bdc9d8d | |||
| 33a7c95455 | |||
| f054dcc77d | |||
| 95858b77c1 | |||
| 4afbce5ad6 | |||
| 93956002ac | |||
| 006dd290e9 | |||
| fb875145aa | |||
| 77993ced7e | |||
| e1f64d6283 | |||
| 2b60ce484e | |||
| a21b336138 | |||
| 0655280f2c | |||
| 2793578dcb | |||
| f1a70662c5 | |||
| 8a7e501fe6 | |||
| 86fc2dc2ba | |||
| 9cff42b4ed | |||
| 55546126a1 | |||
| 5a11dacd9e | |||
| bb5873bf20 | |||
| 20eda54349 | |||
| c98461f59e | |||
| b154c9a5c4 | |||
| 12255e3680 | |||
| 473c41ddbf | |||
| b93382831c | |||
| 5ee61f5ae7 | |||
| 082bbd49e7 | |||
| 4e2e69c9cb | |||
| 6f78bb6960 | |||
| a00caac789 | |||
| 4e8f191f43 | |||
| b1c5afd72f | |||
| aa5a2225e7 | |||
| 4c7672b581 | |||
| 5f9fa05e21 | |||
| ee92fa51bc | |||
| 63b3960120 | |||
| e5c76ddf3e | |||
| 4b07979008 | |||
| 168fa09f5f | |||
| 4facd57cb7 | |||
| e999636048 | |||
| 5bd769ea40 | |||
| bd693f97a1 | |||
| af0cb68c1b | |||
| 761d7fd438 | |||
| c537e8a892 | |||
| 702e85cd96 | |||
| c93e0b6c5e | |||
| f7b4a20066 | |||
| 49ac89bfed | |||
| 16e62b29f9 | |||
| b8180b0459 | |||
| 37f250b384 | |||
| 5685ec525b | |||
| 5be59ea8dd | |||
| 5855f2d909 | |||
| 5424223949 | |||
| de22148b44 | |||
| 73664e610b |
-19
@@ -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__
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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_
|
||||
@@ -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" );
|
||||
|
||||
|
||||
@@ -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
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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" );
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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 )
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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()
|
||||
@@ -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" )
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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.
|
||||
|
||||
@@ -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:**
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -7,7 +7,7 @@ AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: false
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
|
||||
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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_
|
||||
@@ -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 );
|
||||
|
||||
|
||||
+1842
-2087
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" }};
|
||||
|
||||
@@ -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
|
||||
@@ -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" }};
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user