void D_PAD::Show( int nestLevel, std::ostream& os ) const { char padname[5] = { m_Padname[0], m_Padname[1], m_Padname[2], m_Padname[3], 0 }; char layerMask[16]; sprintf( layerMask, "0x%08X", m_layerMask ); // for now, make it look like XML: NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << " shape=\"" << ShowPadShape() << '"' << " attr=\"" << ShowPadAttr( ) << '"' << " num=\"" << padname << '"' << " net=\"" << m_Netname.mb_str() << '"' << " netcode=\"" << GetNet() << '"' << " layerMask=\"" << layerMask << '"' << m_Pos << "/>\n"; // NestedSpace( nestLevel+1, os ) << m_Text.mb_str() << '\n'; // NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() // << ">\n"; }
void D_PAD::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM>& aList ) { MODULE* module; wxString Line; BOARD* board; module = (MODULE*) m_Parent; if( module ) { wxString msg = module->GetReference(); aList.push_back( MSG_PANEL_ITEM( _( "Footprint" ), msg, DARKCYAN ) ); StringPadName( Line ); aList.push_back( MSG_PANEL_ITEM( _( "Pad" ), Line, BROWN ) ); } aList.push_back( MSG_PANEL_ITEM( _( "Net" ), GetNetname(), DARKCYAN ) ); /* For test and debug only: display m_physical_connexion and * m_logical_connexion */ #if 1 // Used only to debug connectivity calculations Line.Printf( wxT( "%d-%d-%d " ), GetSubRatsnest(), GetSubNet(), GetZoneSubNet() ); aList.push_back( MSG_PANEL_ITEM( wxT( "L-P-Z" ), Line, DARKGREEN ) ); #endif board = GetBoard(); aList.push_back( MSG_PANEL_ITEM( _( "Layer" ), LayerMaskDescribe( board, m_layerMask ), DARKGREEN ) ); aList.push_back( MSG_PANEL_ITEM( ShowPadShape(), ShowPadAttr(), DARKGREEN ) ); Line = ::CoordinateToString( m_Size.x ); aList.push_back( MSG_PANEL_ITEM( _( "Width" ), Line, RED ) ); Line = ::CoordinateToString( m_Size.y ); aList.push_back( MSG_PANEL_ITEM( _( "Height" ), Line, RED ) ); Line = ::CoordinateToString( (unsigned) m_Drill.x ); if( GetDrillShape() == PAD_DRILL_SHAPE_CIRCLE ) { aList.push_back( MSG_PANEL_ITEM( _( "Drill" ), Line, RED ) ); } else { Line = ::CoordinateToString( (unsigned) m_Drill.x ); wxString msg; msg = ::CoordinateToString( (unsigned) m_Drill.y ); Line += wxT( "/" ) + msg; aList.push_back( MSG_PANEL_ITEM( _( "Drill X / Y" ), Line, RED ) ); } double module_orient = module ? module->GetOrientation() : 0; if( module_orient ) Line.Printf( wxT( "%3.1f(+%3.1f)" ), ( m_Orient - module_orient ) / 10.0, module_orient / 10.0 ); else Line.Printf( wxT( "%3.1f" ), m_Orient / 10.0 ); aList.push_back( MSG_PANEL_ITEM( _( "Angle" ), Line, LIGHTBLUE ) ); Line = ::CoordinateToString( m_Pos.x ) + wxT( ", " ) + ::CoordinateToString( m_Pos.y ); aList.push_back( MSG_PANEL_ITEM( _( "Position" ), Line, LIGHTBLUE ) ); if( GetPadToDieLength() ) { Line = ::CoordinateToString( GetPadToDieLength() ); aList.push_back( MSG_PANEL_ITEM( _( "Length in package" ), Line, CYAN ) ); } }
void D_PAD::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM>& aList ) { MODULE* module; wxString Line; BOARD* board; module = (MODULE*) m_Parent; if( module ) { aList.push_back( MSG_PANEL_ITEM( _( "Footprint" ), module->GetReference(), DARKCYAN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Pad" ), m_name, BROWN ) ); } aList.push_back( MSG_PANEL_ITEM( _( "Net" ), GetNetname(), DARKCYAN ) ); board = GetBoard(); aList.push_back( MSG_PANEL_ITEM( _( "Layer" ), LayerMaskDescribe( board, m_layerMask ), DARKGREEN ) ); aList.push_back( MSG_PANEL_ITEM( ShowPadShape(), ShowPadAttr(), DARKGREEN ) ); Line = ::CoordinateToString( m_Size.x ); aList.push_back( MSG_PANEL_ITEM( _( "Width" ), Line, RED ) ); Line = ::CoordinateToString( m_Size.y ); aList.push_back( MSG_PANEL_ITEM( _( "Height" ), Line, RED ) ); Line = ::CoordinateToString( (unsigned) m_Drill.x ); if( GetDrillShape() == PAD_DRILL_SHAPE_CIRCLE ) { aList.push_back( MSG_PANEL_ITEM( _( "Drill" ), Line, RED ) ); } else { Line = ::CoordinateToString( (unsigned) m_Drill.x ); wxString msg; msg = ::CoordinateToString( (unsigned) m_Drill.y ); Line += wxT( "/" ) + msg; aList.push_back( MSG_PANEL_ITEM( _( "Drill X / Y" ), Line, RED ) ); } double module_orient_degrees = module ? module->GetOrientationDegrees() : 0; if( module_orient_degrees != 0.0 ) Line.Printf( wxT( "%3.1f(+%3.1f)" ), GetOrientationDegrees() - module_orient_degrees, module_orient_degrees ); else Line.Printf( wxT( "%3.1f" ), GetOrientationDegrees() ); aList.push_back( MSG_PANEL_ITEM( _( "Angle" ), Line, LIGHTBLUE ) ); Line = ::CoordinateToString( m_Pos.x ) + wxT( ", " ) + ::CoordinateToString( m_Pos.y ); aList.push_back( MSG_PANEL_ITEM( _( "Position" ), Line, LIGHTBLUE ) ); if( GetPadToDieLength() ) { Line = ::CoordinateToString( GetPadToDieLength() ); aList.push_back( MSG_PANEL_ITEM( _( "Length in package" ), Line, CYAN ) ); } }
void D_PAD::GetMsgPanelInfo( std::vector< MSG_PANEL_ITEM>& aList ) { MODULE* module; wxString Line; BOARD* board; module = (MODULE*) m_Parent; if( module ) { wxString msg = module->GetReference(); aList.push_back( MSG_PANEL_ITEM( _( "Module" ), msg, DARKCYAN ) ); ReturnStringPadName( Line ); aList.push_back( MSG_PANEL_ITEM( _( "RefP" ), Line, BROWN ) ); } aList.push_back( MSG_PANEL_ITEM( _( "Net" ), m_Netname, DARKCYAN ) ); /* For test and debug only: display m_physical_connexion and * m_logical_connexion */ #if 1 // Used only to debug connectivity calculations Line.Printf( wxT( "%d-%d-%d " ), GetSubRatsnest(), GetSubNet(), GetZoneSubNet() ); aList.push_back( MSG_PANEL_ITEM( wxT( "L-P-Z" ), Line, DARKGREEN ) ); #endif board = GetBoard(); wxString layerInfo; if( (m_layerMask & ALL_CU_LAYERS) == 0 ) // pad is not on any copper layers { switch( m_layerMask & ~ALL_CU_LAYERS ) { case ADHESIVE_LAYER_BACK: layerInfo = board->GetLayerName( ADHESIVE_N_BACK ); break; case ADHESIVE_LAYER_FRONT: layerInfo = board->GetLayerName( ADHESIVE_N_FRONT ); break; case SOLDERPASTE_LAYER_BACK: layerInfo = board->GetLayerName( SOLDERPASTE_N_BACK ); break; case SOLDERPASTE_LAYER_FRONT: layerInfo = board->GetLayerName( SOLDERPASTE_N_FRONT ); break; case SILKSCREEN_LAYER_BACK: layerInfo = board->GetLayerName( SILKSCREEN_N_BACK ); break; case SILKSCREEN_LAYER_FRONT: layerInfo = board->GetLayerName( SILKSCREEN_N_FRONT ); break; case SOLDERMASK_LAYER_BACK: layerInfo = board->GetLayerName( SOLDERMASK_N_BACK ); break; case SOLDERMASK_LAYER_FRONT: layerInfo = board->GetLayerName( SOLDERMASK_N_FRONT ); break; case DRAW_LAYER: layerInfo = board->GetLayerName( DRAW_N ); break; case COMMENT_LAYER: layerInfo = board->GetLayerName( COMMENT_N ); break; case ECO1_LAYER: layerInfo = board->GetLayerName( ECO1_N ); break; case ECO2_LAYER: layerInfo = board->GetLayerName( ECO2_N ); break; case EDGE_LAYER: layerInfo = board->GetLayerName( EDGE_N ); break; default: layerInfo = _( "Non-copper" ); break; } } else { #define INTERIOR_COPPER (ALL_CU_LAYERS & ~(LAYER_BACK | LAYER_FRONT)) static const wxChar* andInternal = _( " & int" ); if( (m_layerMask & (LAYER_BACK | LAYER_FRONT)) == LAYER_BACK ) { layerInfo = board->GetLayerName( LAYER_N_BACK ); if( m_layerMask & INTERIOR_COPPER ) layerInfo += andInternal; } else if( (m_layerMask & (LAYER_BACK | LAYER_FRONT)) == (LAYER_BACK | LAYER_FRONT) ) { layerInfo = board->GetLayerName( LAYER_N_BACK ) + wxT(", ") + board->GetLayerName( LAYER_N_FRONT ); if( m_layerMask & INTERIOR_COPPER ) layerInfo += andInternal; } else if( (m_layerMask & (LAYER_BACK | LAYER_FRONT)) == LAYER_FRONT ) { layerInfo = board->GetLayerName( LAYER_N_FRONT ); if( m_layerMask & INTERIOR_COPPER ) layerInfo += andInternal; } else // necessarily true: if( m_layerMask & INTERIOR_COPPER ) { layerInfo = _( "internal" ); } } aList.push_back( MSG_PANEL_ITEM( _( "Layer" ), layerInfo, DARKGREEN ) ); aList.push_back( MSG_PANEL_ITEM( ShowPadShape(), ShowPadAttr(), DARKGREEN ) ); Line = ::CoordinateToString( m_Size.x ); aList.push_back( MSG_PANEL_ITEM( _( "H Size" ), Line, RED ) ); Line = ::CoordinateToString( m_Size.y ); aList.push_back( MSG_PANEL_ITEM( _( "V Size" ), Line, RED ) ); Line = ::CoordinateToString( (unsigned) m_Drill.x ); if( m_DrillShape == PAD_CIRCLE ) { aList.push_back( MSG_PANEL_ITEM( _( "Drill" ), Line, RED ) ); } else { Line = ::CoordinateToString( (unsigned) m_Drill.x ); wxString msg; msg = ::CoordinateToString( (unsigned) m_Drill.y ); Line += wxT( "/" ) + msg; aList.push_back( MSG_PANEL_ITEM( _( "Drill X / Y" ), Line, RED ) ); } int module_orient = module ? module->GetOrientation() : 0; if( module_orient ) Line.Printf( wxT( "%3.1f(+%3.1f)" ), (double) ( m_Orient - module_orient ) / 10, (double) module_orient / 10 ); else Line.Printf( wxT( "%3.1f" ), (double) m_Orient / 10 ); aList.push_back( MSG_PANEL_ITEM( _( "Orient" ), Line, LIGHTBLUE ) ); Line = ::CoordinateToString( m_Pos.x ); aList.push_back( MSG_PANEL_ITEM( _( "X Pos" ), Line, LIGHTBLUE ) ); Line = ::CoordinateToString( m_Pos.y ); aList.push_back( MSG_PANEL_ITEM( _( "Y pos" ), Line, LIGHTBLUE ) ); if( GetPadToDieLength() ) { Line = ::CoordinateToString( GetPadToDieLength() ); aList.push_back( MSG_PANEL_ITEM( _( "Length in package" ), Line, CYAN ) ); } }
void D_PAD::GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM>& aList ) { MODULE* module; wxString msg; BOARD* board; module = (MODULE*) m_Parent; if( module ) { aList.push_back( MSG_PANEL_ITEM( _( "Footprint" ), module->GetReference(), DARKCYAN ) ); aList.push_back( MSG_PANEL_ITEM( _( "Pad" ), m_name, BROWN ) ); } aList.push_back( MSG_PANEL_ITEM( _( "Net" ), UnescapeString( GetNetname() ), DARKCYAN ) ); board = GetBoard(); aList.push_back( MSG_PANEL_ITEM( _( "Layer" ), LayerMaskDescribe( board, m_layerMask ), DARKGREEN ) ); aList.push_back( MSG_PANEL_ITEM( ShowPadShape(), ShowPadAttr(), DARKGREEN ) ); msg = MessageTextFromValue( aUnits, m_Size.x, true ); aList.push_back( MSG_PANEL_ITEM( _( "Width" ), msg, RED ) ); msg = MessageTextFromValue( aUnits, m_Size.y, true ); aList.push_back( MSG_PANEL_ITEM( _( "Height" ), msg, RED ) ); msg = MessageTextFromValue( aUnits, m_Drill.x, true ); if( GetDrillShape() == PAD_DRILL_SHAPE_CIRCLE ) { aList.push_back( MSG_PANEL_ITEM( _( "Drill" ), msg, RED ) ); } else { msg = MessageTextFromValue( aUnits, m_Drill.x, true ) + wxT( "/" ) + MessageTextFromValue( aUnits, m_Drill.y, true ); aList.push_back( MSG_PANEL_ITEM( _( "Drill X / Y" ), msg, RED ) ); } double module_orient_degrees = module ? module->GetOrientationDegrees() : 0; if( module_orient_degrees != 0.0 ) msg.Printf( wxT( "%3.1f(+%3.1f)" ), GetOrientationDegrees() - module_orient_degrees, module_orient_degrees ); else msg.Printf( wxT( "%3.1f" ), GetOrientationDegrees() ); aList.push_back( MSG_PANEL_ITEM( _( "Angle" ), msg, LIGHTBLUE ) ); msg = MessageTextFromValue( aUnits, m_Pos.x ) + wxT( ", " ) + MessageTextFromValue( aUnits, m_Pos.y ); aList.push_back( MSG_PANEL_ITEM( _( "Position" ), msg, LIGHTBLUE ) ); if( GetPadToDieLength() ) { msg = MessageTextFromValue( aUnits, GetPadToDieLength(), true ); aList.push_back( MSG_PANEL_ITEM( _( "Length in package" ), msg, CYAN ) ); } }