From cd85ee626be306ddbdcd679928fa6e184996cff2 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sat, 9 Aug 2014 20:18:04 +0200 Subject: [PATCH] Cosmetic enhancement: change plot icon in menus. 3dviewer: back to double (from float) in class S3D_MASTER for 3 members (m_MatScale, m_MatRotation, m_MatPosition) which are used in dialogs and r/w file functions, which expect double. Using float create minor but unwanted issues in r/w file functions. S3D_MATERIAL: enable all color options: if a 3d shape has bad color parameters, the shape must be modified, not the 3d rendering. The rendering now matches what we see in other vrml viewer like FreeCAD. Some minor coding style fixes. --- 3d-viewer/3d_aux.cpp | 15 +- 3d-viewer/3d_class.cpp | 8 +- 3d-viewer/3d_material.h | 4 +- 3d-viewer/3d_struct.h | 66 ++- 3d-viewer/vrml_v1_modelparser.cpp | 57 ++- 3d-viewer/vrml_v2_modelparser.cpp | 26 +- bitmaps_png/cpp_26/plot.cpp | 126 +++-- bitmaps_png/sources/plot.svg | 460 ++++++------------ .../dialog_edit_module_for_BoardEditor.cpp | 9 +- .../dialog_edit_module_for_BoardEditor.h | 6 +- .../dialog_edit_module_for_Modedit.cpp | 9 +- .../dialogs/dialog_edit_module_for_Modedit.h | 6 +- pcbnew/legacy_plugin.cpp | 6 +- 13 files changed, 334 insertions(+), 464 deletions(-) diff --git a/3d-viewer/3d_aux.cpp b/3d-viewer/3d_aux.cpp index 2a5c758fcd..e78229a296 100644 --- a/3d-viewer/3d_aux.cpp +++ b/3d-viewer/3d_aux.cpp @@ -151,7 +151,7 @@ void TransfertToGLlist( std::vector< S3D_VERTEX >& aVertices, double aBiuTo3DUni glEnd(); } -VERTEX_VALUE_CTRL::VERTEX_VALUE_CTRL( wxWindow* aParent, wxBoxSizer* aBoxSizer ) +S3DPOINT_VALUE_CTRL::S3DPOINT_VALUE_CTRL( wxWindow* aParent, wxBoxSizer* aBoxSizer ) { wxString text; @@ -187,15 +187,16 @@ VERTEX_VALUE_CTRL::VERTEX_VALUE_CTRL( wxWindow* aParent, wxBoxSizer* aBoxSizer ) } -VERTEX_VALUE_CTRL::~VERTEX_VALUE_CTRL() +S3DPOINT_VALUE_CTRL::~S3DPOINT_VALUE_CTRL() { + // Nothing to delete: all items are managed by the parent window. } -S3D_VERTEX VERTEX_VALUE_CTRL::GetValue() +S3DPOINT S3DPOINT_VALUE_CTRL::GetValue() { - S3D_VERTEX value; - double dtmp; + S3DPOINT value; + double dtmp; m_XValueCtrl->GetValue().ToDouble( &dtmp ); value.x = dtmp; @@ -207,7 +208,7 @@ S3D_VERTEX VERTEX_VALUE_CTRL::GetValue() } -void VERTEX_VALUE_CTRL::SetValue( S3D_VERTEX vertex ) +void S3DPOINT_VALUE_CTRL::SetValue( S3DPOINT vertex ) { wxString text; @@ -225,7 +226,7 @@ void VERTEX_VALUE_CTRL::SetValue( S3D_VERTEX vertex ) } -void VERTEX_VALUE_CTRL::Enable( bool onoff ) +void S3DPOINT_VALUE_CTRL::Enable( bool onoff ) { m_XValueCtrl->Enable( onoff ); m_YValueCtrl->Enable( onoff ); diff --git a/3d-viewer/3d_class.cpp b/3d-viewer/3d_class.cpp index 3b0288c674..8a1d5f4c62 100644 --- a/3d-viewer/3d_class.cpp +++ b/3d-viewer/3d_class.cpp @@ -78,11 +78,11 @@ S3D_MASTER::S3D_MASTER( EDA_ITEM* aParent ) : m_ShapeType = FILE3D_NONE; m_use_modelfile_diffuseColor = true; - m_use_modelfile_emissiveColor = false; - m_use_modelfile_specularColor = false; - m_use_modelfile_ambientIntensity = false; + m_use_modelfile_emissiveColor = true; + m_use_modelfile_specularColor = true; + m_use_modelfile_ambientIntensity = true; m_use_modelfile_transparency = true; - m_use_modelfile_shininess = false; + m_use_modelfile_shininess = true; } diff --git a/3d-viewer/3d_material.h b/3d-viewer/3d_material.h index 180825d105..49e8b4da21 100644 --- a/3d-viewer/3d_material.h +++ b/3d-viewer/3d_material.h @@ -35,11 +35,11 @@ class S3D_MASTER; -class S3D_MATERIAL : public EDA_ITEM /* openGL "material" data*/ +class S3D_MATERIAL : public EDA_ITEM // openGL "material" data { public: wxString m_Name; - + // Material list std::vector< glm::vec3 > m_AmbientColor; std::vector< glm::vec3 > m_DiffuseColor; diff --git a/3d-viewer/3d_struct.h b/3d-viewer/3d_struct.h index 34384ad29d..22b12ce56e 100644 --- a/3d-viewer/3d_struct.h +++ b/3d-viewer/3d_struct.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2014 Mario Luzeiro - * Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com + * Copyright (C) 2004 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2011 Wayne Stambaugh * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors. * @@ -35,9 +35,10 @@ #include #include <3d_material.h> #include - -/* 3D modeling units -> PCB units conversion scale: - * 1 "3D model unit" wings3d = 1 unit = 2.54 mm = 0.1 inch = 100 mils + +/** + * @note For historical reasons the 3D modeling unit is 0.1 inch + * 1 3Dunit = 2.54 mm = 0.1 inch = 100 mils */ #define UNITS3D_TO_UNITSPCB (IU_PER_MILS * 100) @@ -45,19 +46,42 @@ class S3D_MASTER; class STRUCT_3D_SHAPE; -/* S3D_VERTEX manages a 3D coordinate (3 float numbers: x,y,z coordinates)*/ +// S3D_VERTEX manages a opengl 3D coordinate (3 float numbers: x,y,z coordinates) +// float are widely used in opengl functions. +// they are used here in coordinates which are also used in opengl functions. #define S3D_VERTEX glm::vec3 +// S3DPOINT manages a set of 3 double values (x,y,z ) +// It is used for values which are not directly used in opengl functions. +// It is used in dialogs, or when reading/writing files for instance +class S3DPOINT +{ +public: + double x, y, z; -/* Master structure for a 3D item description */ +public: + S3DPOINT() + { + x = y = z = 0.0; + } + + S3DPOINT( double px, double py, double pz) + { + x = px; + y = py; + z = pz; + } +}; + +// Master structure for a 3D footprint shape description class S3D_MASTER : public EDA_ITEM { public: - S3D_VERTEX m_MatScale; - S3D_VERTEX m_MatRotation; - S3D_VERTEX m_MatPosition; - STRUCT_3D_SHAPE* m_3D_Drawings; - S3D_MATERIAL* m_Materials; + S3DPOINT m_MatScale; ///< a scaling factor for the entire 3D footprint shape + S3DPOINT m_MatRotation; ///< a grotation for the entire 3D footprint shape + S3DPOINT m_MatPosition; ///< an offset for the entire 3D footprint shape + STRUCT_3D_SHAPE* m_3D_Drawings; ///< the list of basic shapes + S3D_MATERIAL* m_Materials; ///< the list of materiels used by the shapes enum FILE3D_TYPE { @@ -76,9 +100,9 @@ public: bool m_use_modelfile_shininess; private: - wxString m_Shape3DName; /* 3D shape name in 3D library */ + wxString m_Shape3DName; // the 3D shape filename in 3D library FILE3D_TYPE m_ShapeType; - double m_lastTransparency; // last transparency value from + double m_lastTransparency; // last transparency value from // last material in use bool m_loadTransparentObjects; bool m_loadNonTransparentObjects; @@ -185,26 +209,26 @@ public: /** - * Class VERTEX_VALUE_CTRL - * displays a vertex for editing. A vertex is a triplet of values + * Class S3DPOINT_VALUE_CTRL + * displays a S3DPOINT for editing (in dialogs). A S3DPOINT is a triplet of values * Values can be scale, rotation, offset... */ -class VERTEX_VALUE_CTRL +class S3DPOINT_VALUE_CTRL { private: wxTextCtrl* m_XValueCtrl, * m_YValueCtrl, * m_ZValueCtrl; public: - VERTEX_VALUE_CTRL( wxWindow* parent, wxBoxSizer* BoxSizer ); + S3DPOINT_VALUE_CTRL( wxWindow* parent, wxBoxSizer* BoxSizer ); - ~VERTEX_VALUE_CTRL(); + ~S3DPOINT_VALUE_CTRL(); /** * Function GetValue - * @return the vertex in internal units. + * @return the 3D point in internal units. */ - S3D_VERTEX GetValue(); - void SetValue( S3D_VERTEX vertex ); + S3DPOINT GetValue(); + void SetValue( S3DPOINT a3Dpoint ); void Enable( bool enbl ); void SetToolTip( const wxString& text ); }; diff --git a/3d-viewer/vrml_v1_modelparser.cpp b/3d-viewer/vrml_v1_modelparser.cpp index 213677d393..0c3cf3c8ea 100644 --- a/3d-viewer/vrml_v1_modelparser.cpp +++ b/3d-viewer/vrml_v1_modelparser.cpp @@ -84,8 +84,8 @@ void VRML1_MODEL_PARSER::Load( const wxString aFilename ) glRotatef(-matRot.z, 0.0f, 0.0f, 1.0f ); glRotatef(-matRot.y, 0.0f, 1.0f, 0.0f ); glRotatef(-matRot.x, 1.0f, 0.0f, 0.0f ); - - glScalef( matScale.x, matScale.y, matScale.z ); + + glScalef( matScale.x, matScale.y, matScale.z ); // Switch the locale to standard C (needed to print floating point numbers like 1.3) SetLocaleTo_C_standard(); @@ -103,9 +103,7 @@ void VRML1_MODEL_PARSER::Load( const wxString aFilename ) if( strcmp( text, "Separator" ) == 0 ) { m_model = new S3D_MESH(); - childs.push_back( m_model ); - read_separator(); } } @@ -114,7 +112,7 @@ void VRML1_MODEL_PARSER::Load( const wxString aFilename ) SetLocaleTo_Default(); // revert to the current locale - //DBG( printf( "chils size:%lu\n", childs.size() ) ); + //DBG( printf( "chils size:%lu\n", childs.size() ) ); if( GetMaster()->IsOpenGlAllowed() ) { @@ -137,13 +135,16 @@ int VRML1_MODEL_PARSER::read_separator() if( strcmp( text, "Material" ) == 0 ) { readMaterial( ); - } else if( strcmp( text, "Coordinate3" ) == 0 ) + } + else if( strcmp( text, "Coordinate3" ) == 0 ) { readCoordinate3(); - } else if( strcmp( text, "IndexedFaceSet" ) == 0 ) + } + else if( strcmp( text, "IndexedFaceSet" ) == 0 ) { readIndexedFaceSet(); - } else if( strcmp( text, "Separator" ) == 0 ) + } + else if( strcmp( text, "Separator" ) == 0 ) { S3D_MESH *parent = m_model; @@ -157,11 +158,13 @@ int VRML1_MODEL_PARSER::read_separator() read_separator(); m_model = parent; - }else if ( ( *text != '}' ) ) + } + else if ( ( *text != '}' ) ) { //DBG( printf( "read_NotImplemented %s\n", text ) ); read_NotImplemented( m_file, '}'); - } else + } + else { break; } @@ -201,19 +204,24 @@ int VRML1_MODEL_PARSER::readMaterial() if( strcmp( text, "ambientColor" ) == 0 ) { readMaterial_ambientColor(); - } else if( strcmp( text, "diffuseColor" ) == 0 ) + } + else if( strcmp( text, "diffuseColor" ) == 0 ) { readMaterial_diffuseColor( ); - } else if( strcmp( text, "emissiveColor" ) == 0 ) + } + else if( strcmp( text, "emissiveColor" ) == 0 ) { readMaterial_emissiveColor( ); - }else if( strcmp( text, "specularColor" ) == 0 ) + } + else if( strcmp( text, "specularColor" ) == 0 ) { readMaterial_specularColor( ); - }else if( strcmp( text, "shininess" ) == 0 ) + } + else if( strcmp( text, "shininess" ) == 0 ) { readMaterial_shininess( ); - }else if( strcmp( text, "transparency" ) == 0 ) + } + else if( strcmp( text, "transparency" ) == 0 ) { readMaterial_transparency( ); } @@ -272,7 +280,8 @@ int VRML1_MODEL_PARSER::readIndexedFaceSet( ) if( strcmp( text, "coordIndex" ) == 0 ) { readIndexedFaceSet_coordIndex( ); - } else if( strcmp( text, "materialIndex" ) == 0 ) + } + else if( strcmp( text, "materialIndex" ) == 0 ) { readIndexedFaceSet_materialIndex( ); } @@ -292,7 +301,7 @@ int VRML1_MODEL_PARSER::readMaterial_ambientColor( ) int VRML1_MODEL_PARSER::readMaterial_diffuseColor( ) { //DBG( printf( " readMaterial_diffuseColor\n" ) ); - + return parseVertexList( m_file, m_model->m_Materials->m_DiffuseColor); } @@ -334,6 +343,7 @@ int VRML1_MODEL_PARSER::readMaterial_shininess( ) m_model->m_Materials->m_Shininess.clear(); float shininess_value; + while( fscanf( m_file, "%f,", &shininess_value ) ) { // VRML value is normalized and openGL expects a value 0 - 128 @@ -346,7 +356,7 @@ int VRML1_MODEL_PARSER::readMaterial_shininess( ) m_model->m_Materials->m_Shininess.clear(); } - //DBG( printf( " m_Shininess.size: %ld\n", m_model->m_Materials->m_Shininess.size() ) ); + //DBG( printf( " m_Shininess.size: %ld\n", m_model->m_Materials->m_Shininess.size() ) ); return 0; } @@ -359,6 +369,7 @@ int VRML1_MODEL_PARSER::readMaterial_transparency() m_model->m_Materials->m_Transparency.clear(); float tmp; + while( fscanf (m_file, "%f,", &tmp) ) { m_model->m_Materials->m_Transparency.push_back( tmp ); @@ -368,8 +379,8 @@ int VRML1_MODEL_PARSER::readMaterial_transparency() { m_model->m_Materials->m_Transparency.clear(); } - - //DBG( printf( " m_Transparency.size: %ld\n", m_model->m_Materials->m_Transparency.size() ) ); + + //DBG( printf( " m_Transparency.size: %ld\n", m_model->m_Materials->m_Transparency.size() ) ); return 0; } @@ -378,7 +389,7 @@ int VRML1_MODEL_PARSER::readMaterial_transparency() int VRML1_MODEL_PARSER::readCoordinate3_point() { //DBG( printf( " readCoordinate3_point\n" ) ); - + if( parseVertexList( m_file, m_model->m_Point ) == 0 ) { return 0; @@ -420,7 +431,7 @@ int VRML1_MODEL_PARSER::readIndexedFaceSet_coordIndex() m_model->m_CoordIndex.push_back( coord_list ); } - //DBG( printf( " m_CoordIndex.size: %ld\n", m_model->m_CoordIndex.size() ) ); + //DBG( printf( " m_CoordIndex.size: %ld\n", m_model->m_CoordIndex.size() ) ); return 0; } @@ -438,7 +449,7 @@ int VRML1_MODEL_PARSER::readIndexedFaceSet_materialIndex() m_model->m_MaterialIndex.push_back( index ); } - //DBG( printf( " m_MaterialIndex.size: %ld\n", m_model->m_MaterialIndex.size() ) ); + //DBG( printf( " m_MaterialIndex.size: %ld\n", m_model->m_MaterialIndex.size() ) ); return 0; } diff --git a/3d-viewer/vrml_v2_modelparser.cpp b/3d-viewer/vrml_v2_modelparser.cpp index 3eb2a8c0b9..a570ecdcf2 100644 --- a/3d-viewer/vrml_v2_modelparser.cpp +++ b/3d-viewer/vrml_v2_modelparser.cpp @@ -73,9 +73,12 @@ void VRML2_MODEL_PARSER::Load( const wxString aFilename ) float vrmlunits_to_3Dunits = g_Parm_3D_Visu.m_BiuTo3Dunits * UNITS3D_TO_UNITSPCB; glScalef( vrmlunits_to_3Dunits, vrmlunits_to_3Dunits, vrmlunits_to_3Dunits ); - glm::vec3 matScale( GetMaster()->m_MatScale.x, GetMaster()->m_MatScale.y, GetMaster()->m_MatScale.z ); - glm::vec3 matRot( GetMaster()->m_MatRotation.x, GetMaster()->m_MatRotation.y, GetMaster()->m_MatRotation.z ); - glm::vec3 matPos( GetMaster()->m_MatPosition.x, GetMaster()->m_MatPosition.y, GetMaster()->m_MatPosition.z ); + glm::vec3 matScale( GetMaster()->m_MatScale.x, GetMaster()->m_MatScale.y, + GetMaster()->m_MatScale.z ); + glm::vec3 matRot( GetMaster()->m_MatRotation.x, GetMaster()->m_MatRotation.y, + GetMaster()->m_MatRotation.z ); + glm::vec3 matPos( GetMaster()->m_MatPosition.x, GetMaster()->m_MatPosition.y, + GetMaster()->m_MatPosition.z ); #define SCALE_3D_CONV ((IU_PER_MILS * 1000.0f) / UNITS3D_TO_UNITSPCB) @@ -104,7 +107,6 @@ void VRML2_MODEL_PARSER::Load( const wxString aFilename ) if( strcmp( text, "Transform" ) == 0 ) { m_model = new S3D_MESH(); - childs.push_back( m_model ); read_Transform(); @@ -113,7 +115,6 @@ void VRML2_MODEL_PARSER::Load( const wxString aFilename ) else if( strcmp( text, "DEF" ) == 0 ) { m_model = new S3D_MESH(); - childs.push_back( m_model ); read_DEF(); @@ -294,15 +295,11 @@ int VRML2_MODEL_PARSER::read_DEF() else if( strcmp( text, "Shape" ) == 0 ) { S3D_MESH *parent = m_model; - S3D_MESH *new_mesh_model = new S3D_MESH(); - m_model->childs.push_back( new_mesh_model ); m_model = new_mesh_model; - read_Shape(); - m_model = parent; } } @@ -401,9 +398,7 @@ int VRML2_MODEL_PARSER::read_material() { wxString mat_name; material = new S3D_MATERIAL( GetMaster(), mat_name ); - GetMaster()->Insert( material ); - m_model->m_Materials = material; if( strcmp( text, "Material" ) == 0 ) @@ -423,9 +418,7 @@ int VRML2_MODEL_PARSER::read_material() mat_name = FROM_UTF8( text ); material = new S3D_MATERIAL( GetMaster(), mat_name ); - GetMaster()->Insert( material ); - m_model->m_Materials = material; if( GetNextTag( m_file, text ) ) @@ -506,6 +499,7 @@ int VRML2_MODEL_PARSER::read_Material() //DBG( printf( " specularColor") ); parseVertex ( m_file, vertex); //DBG( printf( "\n") ); + if( GetMaster()->m_use_modelfile_specularColor == true ) { m_model->m_Materials->m_SpecularColor.push_back( vertex ); @@ -516,6 +510,7 @@ int VRML2_MODEL_PARSER::read_Material() float ambientIntensity; parseFloat( m_file, &ambientIntensity ); //DBG( printf( " ambientIntensity %f\n", ambientIntensity) ); + if( GetMaster()->m_use_modelfile_ambientIntensity == true ) { m_model->m_Materials->m_AmbientColor.push_back( glm::vec3( ambientIntensity, ambientIntensity, ambientIntensity ) ); @@ -526,6 +521,7 @@ int VRML2_MODEL_PARSER::read_Material() float transparency; parseFloat( m_file, &transparency ); //DBG( printf( " transparency %f\n", transparency) ); + if( GetMaster()->m_use_modelfile_transparency == true ) { m_model->m_Materials->m_Transparency.push_back( transparency ); @@ -535,6 +531,7 @@ int VRML2_MODEL_PARSER::read_Material() { float shininess; parseFloat( m_file, &shininess ); + //DBG( printf( " shininess %f\n", shininess) ); // VRML value is normalized and openGL expects a value 0 - 128 if( GetMaster()->m_use_modelfile_shininess == true ) @@ -590,7 +587,8 @@ int VRML2_MODEL_PARSER::read_IndexedFaceSet() { //DBG( printf( " colorPerVertex = true\n") ); colorPerVertex = true; - } else + } + else { colorPerVertex = false; } diff --git a/bitmaps_png/cpp_26/plot.cpp b/bitmaps_png/cpp_26/plot.cpp index 6cf8050168..2b4b1f52ec 100644 --- a/bitmaps_png/cpp_26/plot.cpp +++ b/bitmaps_png/cpp_26/plot.cpp @@ -8,71 +8,67 @@ 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, 0xf2, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x5b, 0x48, 0x9b, - 0x67, 0x18, 0xc7, 0x83, 0xb8, 0xad, 0xc5, 0x5e, 0x94, 0x51, 0xc6, 0x6e, 0x06, 0x03, 0x6f, 0xbd, - 0x50, 0x2f, 0xaa, 0xf5, 0x94, 0x43, 0x47, 0x84, 0x95, 0x68, 0xba, 0xc6, 0xd8, 0x56, 0xb3, 0x39, - 0x8a, 0x83, 0x59, 0x16, 0x32, 0xb6, 0x31, 0x7b, 0x33, 0xbc, 0x50, 0xf1, 0x46, 0xb6, 0x39, 0x89, - 0x13, 0x37, 0xe2, 0x66, 0x52, 0x98, 0x0d, 0xa3, 0xa9, 0x2d, 0xd6, 0x2b, 0x63, 0x40, 0x1b, 0xa3, - 0xa8, 0x4c, 0x5b, 0x4d, 0x3d, 0xd4, 0xc4, 0x34, 0xe6, 0x9c, 0x98, 0x7c, 0x39, 0x79, 0xc8, 0x7f, - 0xef, 0xf7, 0x69, 0x52, 0xb3, 0x7e, 0x4b, 0x75, 0x73, 0x0b, 0xfc, 0x20, 0xdf, 0x93, 0xbc, 0xcf, - 0x8f, 0xe7, 0x3d, 0x3c, 0xef, 0xc7, 0xd9, 0x8b, 0x6d, 0x81, 0x8d, 0xc8, 0x96, 0xcb, 0x17, 0xf4, - 0x6d, 0x8e, 0x93, 0xef, 0x97, 0x00, 0x70, 0xfe, 0x2d, 0x1c, 0x3a, 0xe9, 0xc7, 0x37, 0x3e, 0x82, - 0xf4, 0x5a, 0x4d, 0x8a, 0xda, 0xeb, 0x52, 0xc8, 0x15, 0x37, 0xd1, 0xdd, 0xfd, 0x2d, 0x28, 0xbf, - 0x23, 0x4a, 0xa4, 0xdf, 0x9f, 0x88, 0xa8, 0xfe, 0xc3, 0xeb, 0xb8, 0x2c, 0x11, 0xb3, 0x72, 0xa3, - 0xb1, 0x01, 0x21, 0xdf, 0x26, 0x8c, 0x8f, 0x0c, 0xf1, 0xe1, 0x87, 0xf7, 0xa3, 0x49, 0xc6, 0xc6, - 0xc6, 0x76, 0xf4, 0x63, 0x7a, 0x9b, 0x5e, 0xaf, 0xbf, 0x35, 0x31, 0x31, 0x71, 0xfa, 0x58, 0x22, - 0x93, 0xd1, 0x10, 0x7b, 0x6e, 0x79, 0x1a, 0x5c, 0x5f, 0x7d, 0x4c, 0x29, 0x95, 0xdf, 0x31, 0xd5, - 0xd1, 0x71, 0x95, 0xaa, 0x17, 0xa1, 0x80, 0x1b, 0xc1, 0x60, 0x30, 0xc5, 0xd0, 0xd0, 0x10, 0x9c, - 0x4e, 0x27, 0x26, 0x27, 0x27, 0xf7, 0x88, 0xcc, 0x4f, 0xc4, 0x82, 0x23, 0x8b, 0xbc, 0x4e, 0x6b, - 0x98, 0x3c, 0xbb, 0x09, 0x89, 0x68, 0xd0, 0x83, 0x9f, 0xfa, 0x94, 0x4c, 0xfc, 0x33, 0x79, 0x13, - 0x62, 0x21, 0x2f, 0x28, 0x8a, 0x4a, 0xa1, 0xd1, 0xa8, 0x91, 0x48, 0x24, 0x10, 0x0a, 0x85, 0x30, - 0x33, 0x33, 0x03, 0x22, 0x8b, 0x8e, 0x8e, 0x8e, 0xf2, 0x8e, 0x24, 0x0a, 0x07, 0x9c, 0xf1, 0xe4, - 0x66, 0xd8, 0x8d, 0x06, 0x60, 0x7e, 0x3c, 0xc7, 0xc4, 0xa5, 0xd7, 0x24, 0xcc, 0x73, 0xf8, 0x90, - 0xa8, 0xb7, 0xb7, 0x07, 0x7e, 0xbf, 0x1f, 0x81, 0x40, 0x00, 0x36, 0x9b, 0x0d, 0x06, 0x83, 0x01, - 0x23, 0x23, 0x23, 0x9b, 0x3c, 0x1e, 0xef, 0xec, 0x2b, 0x45, 0x94, 0x3f, 0x5d, 0x64, 0x59, 0x79, - 0xc2, 0xc4, 0x25, 0xb5, 0x57, 0xb0, 0xf3, 0x17, 0xd1, 0xbd, 0x7b, 0x3a, 0x0c, 0x0c, 0xfc, 0x82, - 0xdb, 0xb7, 0xd5, 0xd0, 0x6a, 0xef, 0x40, 0xa7, 0xbb, 0x4b, 0x62, 0x77, 0xc1, 0xe3, 0x57, 0xb8, - 0x39, 0x1c, 0x4e, 0x56, 0xe6, 0xa9, 0x73, 0x58, 0xa8, 0xbd, 0x58, 0x70, 0x35, 0x4e, 0x79, 0xc9, - 0x06, 0x70, 0x40, 0xa3, 0x56, 0x31, 0xf1, 0x4f, 0x6f, 0x7e, 0x82, 0x38, 0xe5, 0x4b, 0x9b, 0x3a, - 0x36, 0xee, 0x3f, 0xd0, 0x81, 0x2f, 0xe0, 0xc6, 0x48, 0x55, 0xa7, 0x32, 0x8a, 0xec, 0xd6, 0x65, - 0xa6, 0xa2, 0x48, 0xd0, 0x85, 0x87, 0xc3, 0x3a, 0x66, 0xdb, 0xd3, 0xf1, 0xce, 0xce, 0x0e, 0x50, - 0x01, 0xd7, 0xc9, 0x89, 0xd8, 0xa0, 0xd7, 0xc7, 0x65, 0x5f, 0x47, 0x34, 0x1c, 0xfa, 0x6f, 0x44, - 0xf4, 0xba, 0x7c, 0xf9, 0xd5, 0xe7, 0xb0, 0x3e, 0x5b, 0x42, 0x78, 0xcb, 0xf3, 0x4a, 0xc9, 0xb1, - 0x44, 0xf3, 0x73, 0x26, 0x78, 0x1c, 0x16, 0x82, 0x15, 0xdb, 0x61, 0x1f, 0xdc, 0xa4, 0x92, 0x81, - 0x5f, 0x7f, 0xc6, 0x55, 0xd2, 0x29, 0x98, 0xae, 0x71, 0x35, 0x89, 0x24, 0x45, 0x4d, 0x92, 0x5a, - 0x09, 0xf3, 0x9b, 0x46, 0xa3, 0xc1, 0xe0, 0xe0, 0xe0, 0x0e, 0x21, 0xa2, 0xd5, 0x6a, 0xbf, 0x61, - 0x15, 0xd1, 0x53, 0x14, 0x8f, 0x86, 0x11, 0x8d, 0x84, 0x21, 0x6b, 0x90, 0x41, 0xa1, 0x50, 0x40, - 0x2e, 0x97, 0xa3, 0xa9, 0xa9, 0x09, 0x8d, 0x8d, 0x8d, 0x68, 0x68, 0x68, 0x80, 0x4c, 0x26, 0x43, - 0x7d, 0x7d, 0x3d, 0x2b, 0x1f, 0xd4, 0x5c, 0x81, 0xc7, 0xe3, 0x61, 0x0e, 0xb4, 0xcb, 0xe5, 0x82, - 0x5a, 0xad, 0xde, 0x26, 0x67, 0x2b, 0xfb, 0x25, 0x91, 0x7b, 0xd3, 0x82, 0xc8, 0xc1, 0x5a, 0x5c, - 0xaa, 0x12, 0xa1, 0xb9, 0xb9, 0x99, 0x49, 0x5e, 0x57, 0x57, 0x07, 0xa9, 0x54, 0x0a, 0xb1, 0x58, - 0x8c, 0xaa, 0xaa, 0x2a, 0x56, 0x44, 0x22, 0x11, 0x33, 0xc6, 0xe1, 0x70, 0xc0, 0xeb, 0xf5, 0x32, - 0xf4, 0xf7, 0xf7, 0xef, 0xaa, 0x54, 0xaa, 0x53, 0x2c, 0xa2, 0x75, 0xb8, 0x5d, 0x0e, 0xd8, 0xed, - 0x76, 0x5c, 0xac, 0x14, 0x42, 0x22, 0x91, 0x80, 0xcc, 0xf7, 0x4b, 0x70, 0xb9, 0x5c, 0x56, 0xde, - 0xab, 0xac, 0x84, 0xc5, 0x62, 0x61, 0xc6, 0xd3, 0xf4, 0xf5, 0xf5, 0xb1, 0x8b, 0xe8, 0xa9, 0x7b, - 0x6e, 0xb3, 0x62, 0x6d, 0x6d, 0x0d, 0x65, 0x7c, 0x3e, 0x0a, 0x0b, 0x0b, 0x51, 0x50, 0x50, 0x70, - 0x24, 0xf2, 0xf3, 0xf3, 0x51, 0xce, 0x17, 0xc0, 0x6c, 0x36, 0x33, 0xe3, 0x69, 0x94, 0x4a, 0xe5, - 0xdf, 0x8b, 0x9e, 0xad, 0xad, 0x62, 0x71, 0x71, 0x11, 0x85, 0x45, 0x17, 0x50, 0x5c, 0xce, 0x3d, - 0x44, 0xc5, 0x0b, 0xca, 0x2a, 0x50, 0xc4, 0x42, 0xfe, 0xf9, 0x22, 0x3c, 0x9a, 0x37, 0xe0, 0x87, - 0x15, 0x05, 0xf4, 0x4b, 0x0f, 0xd0, 0xd5, 0xd5, 0x95, 0x2e, 0x8a, 0x86, 0x3c, 0x71, 0x2a, 0xe0, - 0xdc, 0xef, 0x6f, 0x4b, 0x4f, 0x30, 0x3b, 0x3b, 0x8b, 0xf1, 0xf1, 0xf1, 0x7f, 0x44, 0xf7, 0xd2, - 0x17, 0x10, 0x6d, 0x64, 0xe3, 0xeb, 0x15, 0x21, 0x39, 0xe8, 0x9d, 0xbb, 0x2d, 0x2d, 0x2d, 0x29, - 0xd1, 0xbb, 0x34, 0x3f, 0xf6, 0x28, 0xb1, 0x30, 0xff, 0x07, 0xd3, 0x89, 0xa7, 0xa7, 0xa7, 0x31, - 0x35, 0x35, 0x05, 0x93, 0xc9, 0x04, 0xa3, 0xd1, 0x78, 0x2c, 0x86, 0xa7, 0x7e, 0xc7, 0x2d, 0xf3, - 0xfb, 0xf8, 0x6d, 0xb6, 0x07, 0x1d, 0x1d, 0x1d, 0x2f, 0x44, 0xc9, 0x7d, 0xde, 0xde, 0xde, 0xee, - 0x6b, 0x6b, 0x6b, 0x4b, 0xb0, 0x80, 0x24, 0xad, 0xad, 0xad, 0x99, 0x48, 0xb0, 0xb0, 0x45, 0x44, - 0xd9, 0x29, 0x11, 0xf9, 0xbc, 0x96, 0x9b, 0x9b, 0xfb, 0x0e, 0x8f, 0xcf, 0x8d, 0x55, 0x57, 0x57, - 0x43, 0x7c, 0x59, 0x8c, 0x85, 0x85, 0x05, 0x08, 0x85, 0xc2, 0x63, 0x41, 0x4f, 0xb9, 0xa4, 0x46, - 0x42, 0x8e, 0x41, 0x35, 0xdd, 0xc5, 0x77, 0xf3, 0xf2, 0xf2, 0x72, 0x49, 0xee, 0xd7, 0x0f, 0x8b, - 0xb2, 0x08, 0x6f, 0x16, 0x97, 0x9c, 0x57, 0x97, 0x95, 0x97, 0xc4, 0xcb, 0x2b, 0x4a, 0x77, 0x36, - 0x36, 0x36, 0xb0, 0xbc, 0xbc, 0x7c, 0x2c, 0xe8, 0x7b, 0x49, 0x20, 0xe0, 0xc5, 0x49, 0x8e, 0xed, - 0x0b, 0x25, 0x45, 0x77, 0xe8, 0x9c, 0xc9, 0x2b, 0x23, 0xbd, 0x1f, 0x91, 0xca, 0x72, 0x72, 0x72, - 0xde, 0x2e, 0x2d, 0x2d, 0x1e, 0x25, 0xd5, 0xed, 0xf2, 0x05, 0xbc, 0x3d, 0xc1, 0xc5, 0x7d, 0x48, - 0x0f, 0x4b, 0x64, 0x80, 0xee, 0x71, 0x74, 0x15, 0x28, 0x2d, 0x2b, 0x99, 0xa3, 0x73, 0xd0, 0xb9, - 0xd2, 0x72, 0x67, 0xbc, 0xe7, 0xf7, 0x2b, 0x7d, 0x83, 0x70, 0x86, 0x70, 0x96, 0x70, 0x8e, 0xf0, - 0xd6, 0x01, 0xe7, 0x0e, 0x62, 0x67, 0x0e, 0xfe, 0x93, 0x95, 0x31, 0xd7, 0x49, 0xbc, 0xb3, 0x1d, - 0xe9, 0x75, 0xeb, 0xff, 0x12, 0xfd, 0x09, 0xe5, 0x6d, 0x34, 0x09, 0xd2, 0x38, 0x7f, 0x95, 0x00, - 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, + 0xce, 0x00, 0x00, 0x03, 0xb1, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x49, 0x4c, 0x13, + 0x51, 0x18, 0xc7, 0x1b, 0xe3, 0x16, 0xf7, 0x28, 0x31, 0xc6, 0xc4, 0x48, 0x10, 0x5b, 0x4c, 0x13, + 0xd2, 0x32, 0x2d, 0x6a, 0xc0, 0x84, 0xc4, 0x80, 0x96, 0xa5, 0x33, 0xd3, 0x85, 0x2e, 0x60, 0x5b, + 0x16, 0x4b, 0x62, 0xa2, 0xb4, 0x43, 0xa4, 0x88, 0x52, 0x0a, 0xd1, 0x83, 0xd1, 0x83, 0x07, 0xe2, + 0x5a, 0xf5, 0x60, 0x22, 0x07, 0x85, 0x83, 0x89, 0x8a, 0x82, 0xe0, 0xc1, 0x1d, 0x0d, 0x1a, 0x34, + 0x22, 0xa0, 0xc1, 0x28, 0x21, 0x1a, 0x8a, 0x8a, 0x6b, 0x2a, 0xfa, 0x39, 0x6f, 0x98, 0x69, 0xdf, + 0x30, 0xa0, 0x12, 0x97, 0xc3, 0x2f, 0xed, 0xbc, 0xf6, 0xfd, 0x7f, 0xf3, 0xbd, 0x65, 0xde, 0xc8, + 0x00, 0x40, 0xf6, 0x3f, 0x90, 0xfd, 0x57, 0x91, 0x5a, 0xb5, 0xbc, 0x94, 0xe5, 0x24, 0xc6, 0x09, + 0x8c, 0xe3, 0x3c, 0x41, 0x8c, 0x63, 0x18, 0x47, 0x31, 0x8e, 0x60, 0x1c, 0xe6, 0xd9, 0xcb, 0x32, + 0x5d, 0x96, 0xa4, 0x8e, 0xdd, 0x4f, 0x24, 0xc5, 0x8e, 0x18, 0x0c, 0x04, 0x18, 0x8d, 0xa3, 0xb0, + 0xdf, 0xbf, 0x47, 0x49, 0x42, 0x7c, 0xa3, 0x69, 0x0c, 0x2a, 0x69, 0x04, 0x41, 0x71, 0xa8, 0x11, + 0x5f, 0x11, 0x24, 0x29, 0x21, 0x9c, 0xac, 0x8d, 0x0b, 0xb3, 0xf9, 0x67, 0x51, 0x35, 0xb0, 0xad, + 0x74, 0x3d, 0xd4, 0x1d, 0xb4, 0xff, 0x13, 0x98, 0xb2, 0x0c, 0x40, 0x0e, 0x4e, 0x54, 0xb1, 0x43, + 0xc7, 0x35, 0x7a, 0xcb, 0xd2, 0xa1, 0x78, 0xf3, 0xba, 0xbf, 0xc2, 0x36, 0xcf, 0xe8, 0xcd, 0x57, + 0xee, 0xcc, 0x94, 0x8a, 0xd6, 0xac, 0x89, 0x83, 0x98, 0x98, 0x39, 0x1c, 0xa9, 0xa9, 0x6b, 0xc1, + 0x6e, 0xb7, 0x80, 0xcd, 0x66, 0x01, 0xab, 0x35, 0x17, 0x72, 0x73, 0x4d, 0x60, 0x36, 0x1b, 0xc1, + 0x64, 0xa2, 0xd9, 0xe1, 0xa5, 0x80, 0xa6, 0xf5, 0x40, 0x92, 0xd9, 0x90, 0x93, 0x93, 0x09, 0xd9, + 0xd9, 0x3a, 0x0e, 0xa5, 0x52, 0x1e, 0xe9, 0xaf, 0x52, 0x2d, 0xe3, 0x32, 0x77, 0xee, 0xca, 0x92, + 0x8a, 0xcc, 0xb9, 0x1a, 0x48, 0x49, 0x8d, 0xe7, 0x70, 0x97, 0xb8, 0x20, 0x14, 0x0a, 0x4d, 0x0a, + 0xa3, 0x31, 0x33, 0xd2, 0x9f, 0xa4, 0x54, 0x5c, 0xe6, 0xae, 0xaa, 0x6c, 0xa9, 0x08, 0xa7, 0x3a, + 0x50, 0x2a, 0x0a, 0xe9, 0xef, 0xe9, 0xf9, 0xa5, 0xa8, 0xdc, 0xe7, 0x94, 0xe4, 0x54, 0xf9, 0x31, + 0x91, 0x97, 0x49, 0x87, 0x7d, 0xfb, 0x4d, 0x22, 0xaa, 0xaa, 0xb6, 0x8a, 0x42, 0xea, 0x8d, 0x46, + 0x68, 0xaa, 0xa8, 0x80, 0x97, 0xdd, 0xdd, 0x13, 0x8a, 0xca, 0xca, 0x36, 0x49, 0x72, 0x7c, 0x15, + 0xba, 0xa8, 0x68, 0x3c, 0x8a, 0x8b, 0x9c, 0x91, 0x80, 0x67, 0xed, 0xed, 0x70, 0xb9, 0xb2, 0x12, + 0x3e, 0x0c, 0x0d, 0x41, 0x5b, 0x6d, 0x2d, 0x5c, 0xaf, 0xab, 0x83, 0xd0, 0xe0, 0xa0, 0x44, 0x44, + 0x92, 0x1b, 0x61, 0xa2, 0x3c, 0x24, 0x52, 0x25, 0xaa, 0xe5, 0xab, 0x13, 0x88, 0x0d, 0x80, 0x58, + 0xa5, 0x49, 0xbf, 0x87, 0xda, 0x18, 0xc6, 0x7b, 0x5d, 0x08, 0xb8, 0x57, 0x5f, 0x0f, 0x17, 0x18, + 0x06, 0x1e, 0x35, 0x36, 0x42, 0x6f, 0x4b, 0x0b, 0xf4, 0xdf, 0xbf, 0x0f, 0xe7, 0x3d, 0x1e, 0xe8, + 0x6a, 0x6b, 0x13, 0x89, 0x1c, 0x8e, 0xfc, 0x06, 0xd4, 0x37, 0x41, 0x93, 0x11, 0x4a, 0xd0, 0xb0, + 0x79, 0x9a, 0x8c, 0x37, 0xe8, 0x1a, 0xc1, 0x3d, 0x19, 0x96, 0x12, 0x39, 0xb3, 0xe4, 0x1a, 0x0a, + 0x46, 0x21, 0xaf, 0xa1, 0x36, 0x9f, 0xcf, 0xd7, 0x84, 0x87, 0x5c, 0xa9, 0xa9, 0x81, 0x87, 0x0d, + 0x0d, 0xd0, 0xdf, 0xd1, 0x01, 0xe1, 0x70, 0x18, 0xba, 0x2f, 0x5d, 0x82, 0x7a, 0x93, 0x09, 0xae, + 0xec, 0xd9, 0x13, 0xf9, 0x4f, 0x61, 0x61, 0xe1, 0x51, 0xd4, 0x57, 0xae, 0xa5, 0x5e, 0xb3, 0x00, + 0x4b, 0x48, 0xf4, 0x08, 0x4a, 0x4c, 0xcc, 0x98, 0x1d, 0x11, 0x69, 0xc9, 0x9b, 0x63, 0x45, 0x28, + 0xec, 0xdc, 0x96, 0x2d, 0xd0, 0x79, 0xe6, 0x0c, 0xf4, 0x36, 0x37, 0x43, 0xd3, 0xf6, 0xed, 0xd0, + 0x7e, 0xea, 0x94, 0x64, 0xe8, 0x30, 0xd1, 0x20, 0x2f, 0x7a, 0x2b, 0x12, 0x29, 0x52, 0xf4, 0x73, + 0xa3, 0x15, 0x51, 0x77, 0x50, 0x9b, 0xc7, 0xe3, 0x39, 0x2d, 0xaa, 0x28, 0x10, 0x80, 0xdb, 0x87, + 0x0e, 0x41, 0x4b, 0x75, 0x35, 0xbc, 0x7a, 0xf1, 0x62, 0xdc, 0xc5, 0x80, 0x89, 0x42, 0xbc, 0x68, + 0x58, 0x24, 0x8a, 0x5f, 0xad, 0x9b, 0x17, 0xad, 0x88, 0xba, 0x8b, 0xda, 0x0c, 0x06, 0x03, 0xdd, + 0xda, 0xda, 0xfa, 0x5e, 0x08, 0xb9, 0x58, 0x5e, 0x0e, 0x3d, 0x37, 0x6e, 0xfc, 0x74, 0x79, 0x63, + 0xa2, 0x21, 0x24, 0x52, 0x68, 0xa9, 0x8f, 0x22, 0x51, 0x1c, 0x61, 0x9e, 0x8f, 0x55, 0xd4, 0x21, + 0xfc, 0xc8, 0x76, 0x3c, 0x11, 0x0c, 0x06, 0xdf, 0x0c, 0x0c, 0x0c, 0xfc, 0xd6, 0x86, 0x2d, 0x28, + 0x28, 0x38, 0xc2, 0x8b, 0xde, 0xf2, 0x15, 0x7d, 0x11, 0x89, 0x62, 0x55, 0xd4, 0x82, 0xa8, 0x88, + 0x7e, 0x80, 0x9f, 0x23, 0x25, 0x25, 0x25, 0x7b, 0xdd, 0x6e, 0xf7, 0x67, 0xbf, 0xdf, 0xff, 0x7c, + 0x12, 0xa2, 0x77, 0xbc, 0x28, 0x2c, 0x12, 0x29, 0xd7, 0x9a, 0x17, 0x62, 0xa2, 0x87, 0x63, 0x0f, + 0x2d, 0x86, 0x61, 0x82, 0x5e, 0xaf, 0x77, 0xe8, 0x57, 0x22, 0xa7, 0xd3, 0x29, 0x88, 0x86, 0x79, + 0xd1, 0x37, 0x91, 0x28, 0x21, 0x99, 0x5e, 0x84, 0x2d, 0xef, 0xc7, 0x63, 0x45, 0x81, 0x40, 0x60, + 0x6a, 0x51, 0x51, 0x51, 0x57, 0x5f, 0x5f, 0xdf, 0x4f, 0x45, 0x2e, 0x97, 0xeb, 0x30, 0x27, 0x4a, + 0xa6, 0xde, 0xf3, 0x22, 0x10, 0x89, 0xe4, 0x44, 0x4e, 0x0c, 0x36, 0x47, 0x4f, 0xc6, 0x3b, 0x8a, + 0x1d, 0x0e, 0xc7, 0x22, 0x76, 0x25, 0xde, 0xea, 0xec, 0xec, 0x1c, 0x41, 0x73, 0x36, 0x1e, 0x82, + 0x08, 0x2d, 0x02, 0x41, 0x24, 0x93, 0x05, 0xa6, 0x44, 0x44, 0x2b, 0x12, 0xe9, 0xc5, 0x98, 0xa8, + 0x77, 0xa2, 0x73, 0x3f, 0x2d, 0x2d, 0x6d, 0xaa, 0x5e, 0xaf, 0xcf, 0xcf, 0xcb, 0xcb, 0xf3, 0xdb, + 0xed, 0xf6, 0x00, 0xc2, 0x66, 0xb3, 0xd5, 0x58, 0xad, 0xd6, 0x5a, 0x8b, 0xc5, 0xb2, 0x3b, 0x2b, + 0x2b, 0x6b, 0x1d, 0x3f, 0x74, 0x9f, 0x04, 0x11, 0x41, 0xb8, 0xa7, 0x45, 0xe7, 0x48, 0x6b, 0x5e, + 0x82, 0x89, 0xfa, 0xfe, 0xe4, 0x25, 0x84, 0xdb, 0x2a, 0xec, 0x22, 0x10, 0x44, 0x0a, 0xb5, 0x7e, + 0x29, 0x27, 0x52, 0x68, 0xe8, 0x42, 0x85, 0x86, 0x3a, 0x87, 0x89, 0x40, 0x4e, 0x50, 0x27, 0xd9, + 0xf2, 0xf3, 0x27, 0x2b, 0x59, 0xa9, 0xa5, 0x0e, 0xb0, 0xe1, 0x4f, 0x05, 0xc9, 0x28, 0xe4, 0x00, + 0xfb, 0xd9, 0x2c, 0x43, 0x15, 0x88, 0x24, 0x51, 0xd9, 0xa3, 0xc9, 0x8a, 0xd8, 0x9b, 0xbb, 0xca, + 0xef, 0x21, 0x09, 0xb2, 0xf8, 0x78, 0xdd, 0x8c, 0xd8, 0x34, 0xd7, 0xcc, 0xb1, 0x28, 0x95, 0xe6, + 0xe9, 0x7f, 0xf3, 0xbd, 0xee, 0x07, 0xad, 0x9c, 0x79, 0xf1, 0x33, 0xfc, 0xbe, 0xc6, 0x00, 0x00, + 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, }; const BITMAP_OPAQUE plot_xpm[1] = {{ png, sizeof( png ), "plot_xpm" }}; diff --git a/bitmaps_png/sources/plot.svg b/bitmaps_png/sources/plot.svg index e21fc9b641..4c2c6dbccd 100644 --- a/bitmaps_png/sources/plot.svg +++ b/bitmaps_png/sources/plot.svg @@ -1,336 +1,178 @@ + + + + + + + + + + + + + + id="metadata7"> image/svg+xml - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + transform="translate(0,-988.36218)"> + style="fill:#727272;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 17.002107,1026.8886 11.090925,12.7083 -2.114472,-8.0173 z" + id="path3009" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + style="fill:#263550;fill-opacity:1;stroke:#6e6d46;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 51.898416,1013.7273 6.938118,0 0.330387,30.3114 1.428336,1.3934 3.390612,0.3088 0,4.0213 -16.716961,-3e-4 0.0625,-4.0002 3.080268,-0.2268 1.321547,-1.4968 z" + id="path3784-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccc" /> + + + + + + + + + + + + + + + - - - - - - - - - - - - diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp index 96915ab88d..fb636c2095 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp @@ -319,9 +319,9 @@ void DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties() m_CostRot180Ctrl->SetValue( m_CurrentModule->GetPlacementCost180() ); // Initialize 3D parameters - m_3D_Scale = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeScale ); - m_3D_Offset = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeOffset ); - m_3D_Rotation = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeRotation ); + m_3D_Scale = new S3DPOINT_VALUE_CTRL( m_Panel3D, m_bSizerShapeScale ); + m_3D_Offset = new S3DPOINT_VALUE_CTRL( m_Panel3D, m_bSizerShapeOffset ); + m_3D_Rotation = new S3DPOINT_VALUE_CTRL( m_Panel3D, m_bSizerShapeRotation ); // if m_3D_ShapeNameListBox is not empty, preselect first 3D shape if( m_3D_ShapeNameListBox->GetCount() > 0 ) @@ -352,8 +352,7 @@ void DIALOG_MODULE_BOARD_EDITOR::Transfert3DValuesToDisplay( } else { - S3D_VERTEX dummy_vertex; - dummy_vertex.x = dummy_vertex.y = dummy_vertex.z = 1.0; + S3DPOINT dummy_vertex( 1.0, 1.0, 1.0 ); m_3D_Scale->SetValue( dummy_vertex ); } } diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.h b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.h index cf056082d3..4792584a74 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.h +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.h @@ -20,9 +20,9 @@ private: TEXTE_MODULE* m_ValueCopy; std::vector m_Shapes3D_list; int m_LastSelected3DShapeIndex; - VERTEX_VALUE_CTRL * m_3D_Scale; - VERTEX_VALUE_CTRL * m_3D_Offset; - VERTEX_VALUE_CTRL * m_3D_Rotation; + S3DPOINT_VALUE_CTRL * m_3D_Scale; + S3DPOINT_VALUE_CTRL * m_3D_Offset; + S3DPOINT_VALUE_CTRL * m_3D_Rotation; public: diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp index 6cc15e9aa6..3a2d03949c 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp @@ -161,9 +161,9 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties() m_CostRot180Ctrl->SetValue( m_currentModule->GetPlacementCost180() ); // Initialize 3D parameters - m_3D_Scale = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeScale ); - m_3D_Offset = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeOffset ); - m_3D_Rotation = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeRotation ); + m_3D_Scale = new S3DPOINT_VALUE_CTRL( m_Panel3D, m_bSizerShapeScale ); + m_3D_Offset = new S3DPOINT_VALUE_CTRL( m_Panel3D, m_bSizerShapeOffset ); + m_3D_Rotation = new S3DPOINT_VALUE_CTRL( m_Panel3D, m_bSizerShapeRotation ); // Initialize dialog relative to masks clearances m_NetClearanceUnits->SetLabel( GetAbbreviatedUnitsLabel( g_UserUnit ) ); @@ -222,8 +222,7 @@ void DIALOG_MODULE_MODULE_EDITOR::Transfert3DValuesToDisplay( S3D_MASTER * aStru } else { - S3D_VERTEX dummy_vertex; - dummy_vertex.x = dummy_vertex.y = dummy_vertex.z = 1.0; + S3DPOINT dummy_vertex( 1.0, 1.0, 1.0 ); m_3D_Scale->SetValue( dummy_vertex ); } } diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit.h b/pcbnew/dialogs/dialog_edit_module_for_Modedit.h index 6a7bbb8963..69d77862dd 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit.h +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit.h @@ -23,9 +23,9 @@ private: TEXTE_MODULE* m_valueCopy; std::vector m_shapes3D_list; int m_lastSelected3DShapeIndex; - VERTEX_VALUE_CTRL * m_3D_Scale; - VERTEX_VALUE_CTRL * m_3D_Offset; - VERTEX_VALUE_CTRL * m_3D_Rotation; + S3DPOINT_VALUE_CTRL * m_3D_Scale; + S3DPOINT_VALUE_CTRL * m_3D_Offset; + S3DPOINT_VALUE_CTRL * m_3D_Rotation; public: diff --git a/pcbnew/legacy_plugin.cpp b/pcbnew/legacy_plugin.cpp index ceca0ddb4d..e92c20454c 100644 --- a/pcbnew/legacy_plugin.cpp +++ b/pcbnew/legacy_plugin.cpp @@ -1936,7 +1936,7 @@ void LEGACY_PLUGIN::load3D( MODULE* aModule ) else if( TESTLINE( "Sc" ) ) // Scale { - sscanf( line + SZ( "Sc" ), "%f %f %f\n", + sscanf( line + SZ( "Sc" ), "%lf %lf %lf\n", &t3D->m_MatScale.x, &t3D->m_MatScale.y, &t3D->m_MatScale.z ); @@ -1944,7 +1944,7 @@ void LEGACY_PLUGIN::load3D( MODULE* aModule ) else if( TESTLINE( "Of" ) ) // Offset { - sscanf( line + SZ( "Of" ), "%f %f %f\n", + sscanf( line + SZ( "Of" ), "%lf %lf %lf\n", &t3D->m_MatPosition.x, &t3D->m_MatPosition.y, &t3D->m_MatPosition.z ); @@ -1952,7 +1952,7 @@ void LEGACY_PLUGIN::load3D( MODULE* aModule ) else if( TESTLINE( "Ro" ) ) // Rotation { - sscanf( line + SZ( "Ro" ), "%f %f %f\n", + sscanf( line + SZ( "Ro" ), "%lf %lf %lf\n", &t3D->m_MatRotation.x, &t3D->m_MatRotation.y, &t3D->m_MatRotation.z );