Loading pcbnew/dialogs/dialog_display_options.cpp +16 −1 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,10 @@ #include <dialog_display_options.h> #include <dialog_display_options.h> #include <dialog_display_options_base.h> #include <dialog_display_options_base.h> #include <class_drawpanel_gal.h> #include <view/view.h> #include <pcb_painter.h> void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent ) void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent ) { { Loading Loading @@ -165,6 +169,17 @@ void DIALOG_DISPLAY_OPTIONS::OnOkClick(wxCommandEvent& event) DisplayOpt.DisplayDrawItems = m_OptDisplayDrawings->GetSelection(); DisplayOpt.DisplayDrawItems = m_OptDisplayDrawings->GetSelection(); DisplayOpt.DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection(); DisplayOpt.DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection(); // Apply changes to the GAL KiGfx::VIEW* view = m_Parent->GetGalCanvas()->GetView(); KiGfx::PCB_PAINTER* painter = static_cast<KiGfx::PCB_PAINTER*>( view->GetPainter() ); KiGfx::PCB_RENDER_SETTINGS* settings = static_cast<KiGfx::PCB_RENDER_SETTINGS*>( painter->GetSettings() ); settings->LoadDisplayOptions( DisplayOpt ); view->RecacheAllItems(); if( m_Parent->IsGalCanvasActive() ) m_Parent->GetGalCanvas()->Refresh(); else m_Parent->GetCanvas()->Refresh(); m_Parent->GetCanvas()->Refresh(); EndModal( 1 ); EndModal( 1 ); Loading pcbnew/pcb_painter.cpp +102 −59 Original line number Original line Diff line number Diff line Loading @@ -90,12 +90,36 @@ void PCB_RENDER_SETTINGS::ImportLegacyColors( COLORS_DESIGN_SETTINGS* aSettings void PCB_RENDER_SETTINGS::LoadDisplayOptions( const DISPLAY_OPTIONS& aOptions ) void PCB_RENDER_SETTINGS::LoadDisplayOptions( const DISPLAY_OPTIONS& aOptions ) { { m_hiContrastEnabled = aOptions.ContrastModeDisplay; m_hiContrastEnabled = aOptions.ContrastModeDisplay; m_padNumbers = aOptions.DisplayPadNum; // Whether to draw tracks, vias & pads filled or as outlines // Whether to draw tracks, vias & pads filled or as outlines m_sketchModeSelect[PADS_VISIBLE] = !aOptions.DisplayPadFill; m_sketchModeSelect[PADS_VISIBLE] = !aOptions.DisplayPadFill; m_sketchModeSelect[VIAS_VISIBLE] = !aOptions.DisplayViaFill; m_sketchModeSelect[VIAS_VISIBLE] = !aOptions.DisplayViaFill; m_sketchModeSelect[TRACKS_VISIBLE] = !aOptions.DisplayPcbTrackFill; m_sketchModeSelect[TRACKS_VISIBLE] = !aOptions.DisplayPcbTrackFill; switch( aOptions.DisplayNetNamesMode ) { case 0: m_netNamesOnPads = false; m_netNamesOnTracks = false; break; case 1: m_netNamesOnPads = true; m_netNamesOnTracks = false; break; case 2: m_netNamesOnPads = false; m_netNamesOnTracks = true; break; case 3: m_netNamesOnPads = true; m_netNamesOnTracks = true; break; } switch( aOptions.DisplayZonesMode ) switch( aOptions.DisplayZonesMode ) { { case 0: case 0: Loading Loading @@ -264,7 +288,7 @@ void PCB_PAINTER::draw( const TRACK* aTrack, int aLayer ) int netNumber = aTrack->GetNet(); int netNumber = aTrack->GetNet(); COLOR4D color; COLOR4D color; if( IsNetnameLayer( aLayer ) ) if( m_pcbSettings->m_netNamesOnTracks && IsNetnameLayer( aLayer ) ) { { // If there is a net name - display it on the track // If there is a net name - display it on the track if( netNumber != 0 ) if( netNumber != 0 ) Loading Loading @@ -378,6 +402,11 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer ) // Draw description layer // Draw description layer if( IsNetnameLayer( aLayer ) ) if( IsNetnameLayer( aLayer ) ) { { // Is anything that we can display enabled? if( m_pcbSettings->m_netNamesOnPads || m_pcbSettings->m_padNumbers ) { bool displayNetname = ( m_pcbSettings->m_netNamesOnPads && !aPad->GetNetname().empty() ); size = VECTOR2D( aPad->GetSize() / 2 ); size = VECTOR2D( aPad->GetSize() / 2 ); double scale = m_gal->GetZoomFactor(); double scale = m_gal->GetZoomFactor(); double maxSize = PCB_RENDER_SETTINGS::MAX_FONT_SIZE / scale; double maxSize = PCB_RENDER_SETTINGS::MAX_FONT_SIZE / scale; Loading @@ -391,7 +420,7 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer ) // Keep the size ratio for the font, but make it smaller // Keep the size ratio for the font, but make it smaller if( size.x < size.y ) if( size.x < size.y ) { { orientation -= M_PI / 2; orientation -= M_PI / 2.0; size.y = size.x * 4.0 / 3.0; size.y = size.x * 4.0 / 3.0; } } else if( size.x == size.y ) else if( size.x == size.y ) Loading Loading @@ -424,27 +453,41 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer ) else else m_gal->SetStrokeColor( color.Highlighted( 0.8 ) ); m_gal->SetStrokeColor( color.Highlighted( 0.8 ) ); // Let's make some space for a netname too, if there's one to display if( displayNetname && m_pcbSettings->m_padNumbers ) if( !aPad->GetNetname().empty() ) { { // Divide the space, when both pad numbers and netnames are enabled size = size / 2.0; size = size / 2.0; m_gal->SetGlyphSize( size ); m_gal->SetGlyphSize( size ); m_gal->SetLineWidth( size.y / 10.0 ); m_gal->SetLineWidth( size.y / 8.0 ); m_gal->StrokeText( std::string( aPad->GetNetname().mb_str() ), m_gal->StrokeText( std::string( aPad->GetNetname().mb_str() ), VECTOR2D( 0, size.y ), 0.0 ); VECTOR2D( 0.0, size.y ), 0.0 ); m_gal->Translate( VECTOR2D( 0.0, -size.y / 2.0 ) ); m_gal->StrokeText( std::string( aPad->GetPadName().mb_str() ), VECTOR2D( 0.0, -size.y / 2.0 ), 0.0 ); } } else else { { // In case when there's no netname assigned // There is only one thing to display if( displayNetname ) { m_gal->SetGlyphSize( size / 2.0 ); m_gal->SetLineWidth( size.y / 12.0 ); m_gal->StrokeText( std::string( aPad->GetNetname().mb_str() ), VECTOR2D( 0.0, 0.0 ), 0.0 ); } if( m_pcbSettings->m_padNumbers ) { m_gal->SetGlyphSize( size ); m_gal->SetGlyphSize( size ); m_gal->SetLineWidth( size.y / 10.0 ); m_gal->SetLineWidth( size.y / 10.0 ); m_gal->StrokeText( std::string( aPad->GetPadName().mb_str() ), VECTOR2D( 0.0, 0.0 ), 0.0 ); } } } m_gal->StrokeText( std::string( aPad->GetPadName().mb_str() ), VECTOR2D( 0, 0 ), 0.0 ); m_gal->Restore(); m_gal->Restore(); } return; return; } } Loading pcbnew/pcb_painter.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -102,8 +102,9 @@ protected: COLOR4D m_itemColorsDark [END_PCB_VISIBLE_LIST]; COLOR4D m_itemColorsDark [END_PCB_VISIBLE_LIST]; bool m_sketchModeSelect[END_PCB_VISIBLE_LIST]; bool m_sketchModeSelect[END_PCB_VISIBLE_LIST]; bool m_visibleLayers [NB_LAYERS]; bool m_padNumbers; bool m_visibleItems [END_PCB_VISIBLE_LIST]; bool m_netNamesOnPads; bool m_netNamesOnTracks; static const double MAX_FONT_SIZE = 100000000; static const double MAX_FONT_SIZE = 100000000; Loading Loading
pcbnew/dialogs/dialog_display_options.cpp +16 −1 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,10 @@ #include <dialog_display_options.h> #include <dialog_display_options.h> #include <dialog_display_options_base.h> #include <dialog_display_options_base.h> #include <class_drawpanel_gal.h> #include <view/view.h> #include <pcb_painter.h> void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent ) void PCB_EDIT_FRAME::InstallDisplayOptionsDialog( wxCommandEvent& aEvent ) { { Loading Loading @@ -165,6 +169,17 @@ void DIALOG_DISPLAY_OPTIONS::OnOkClick(wxCommandEvent& event) DisplayOpt.DisplayDrawItems = m_OptDisplayDrawings->GetSelection(); DisplayOpt.DisplayDrawItems = m_OptDisplayDrawings->GetSelection(); DisplayOpt.DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection(); DisplayOpt.DisplayNetNamesMode = m_ShowNetNamesOption->GetSelection(); // Apply changes to the GAL KiGfx::VIEW* view = m_Parent->GetGalCanvas()->GetView(); KiGfx::PCB_PAINTER* painter = static_cast<KiGfx::PCB_PAINTER*>( view->GetPainter() ); KiGfx::PCB_RENDER_SETTINGS* settings = static_cast<KiGfx::PCB_RENDER_SETTINGS*>( painter->GetSettings() ); settings->LoadDisplayOptions( DisplayOpt ); view->RecacheAllItems(); if( m_Parent->IsGalCanvasActive() ) m_Parent->GetGalCanvas()->Refresh(); else m_Parent->GetCanvas()->Refresh(); m_Parent->GetCanvas()->Refresh(); EndModal( 1 ); EndModal( 1 ); Loading
pcbnew/pcb_painter.cpp +102 −59 Original line number Original line Diff line number Diff line Loading @@ -90,12 +90,36 @@ void PCB_RENDER_SETTINGS::ImportLegacyColors( COLORS_DESIGN_SETTINGS* aSettings void PCB_RENDER_SETTINGS::LoadDisplayOptions( const DISPLAY_OPTIONS& aOptions ) void PCB_RENDER_SETTINGS::LoadDisplayOptions( const DISPLAY_OPTIONS& aOptions ) { { m_hiContrastEnabled = aOptions.ContrastModeDisplay; m_hiContrastEnabled = aOptions.ContrastModeDisplay; m_padNumbers = aOptions.DisplayPadNum; // Whether to draw tracks, vias & pads filled or as outlines // Whether to draw tracks, vias & pads filled or as outlines m_sketchModeSelect[PADS_VISIBLE] = !aOptions.DisplayPadFill; m_sketchModeSelect[PADS_VISIBLE] = !aOptions.DisplayPadFill; m_sketchModeSelect[VIAS_VISIBLE] = !aOptions.DisplayViaFill; m_sketchModeSelect[VIAS_VISIBLE] = !aOptions.DisplayViaFill; m_sketchModeSelect[TRACKS_VISIBLE] = !aOptions.DisplayPcbTrackFill; m_sketchModeSelect[TRACKS_VISIBLE] = !aOptions.DisplayPcbTrackFill; switch( aOptions.DisplayNetNamesMode ) { case 0: m_netNamesOnPads = false; m_netNamesOnTracks = false; break; case 1: m_netNamesOnPads = true; m_netNamesOnTracks = false; break; case 2: m_netNamesOnPads = false; m_netNamesOnTracks = true; break; case 3: m_netNamesOnPads = true; m_netNamesOnTracks = true; break; } switch( aOptions.DisplayZonesMode ) switch( aOptions.DisplayZonesMode ) { { case 0: case 0: Loading Loading @@ -264,7 +288,7 @@ void PCB_PAINTER::draw( const TRACK* aTrack, int aLayer ) int netNumber = aTrack->GetNet(); int netNumber = aTrack->GetNet(); COLOR4D color; COLOR4D color; if( IsNetnameLayer( aLayer ) ) if( m_pcbSettings->m_netNamesOnTracks && IsNetnameLayer( aLayer ) ) { { // If there is a net name - display it on the track // If there is a net name - display it on the track if( netNumber != 0 ) if( netNumber != 0 ) Loading Loading @@ -378,6 +402,11 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer ) // Draw description layer // Draw description layer if( IsNetnameLayer( aLayer ) ) if( IsNetnameLayer( aLayer ) ) { { // Is anything that we can display enabled? if( m_pcbSettings->m_netNamesOnPads || m_pcbSettings->m_padNumbers ) { bool displayNetname = ( m_pcbSettings->m_netNamesOnPads && !aPad->GetNetname().empty() ); size = VECTOR2D( aPad->GetSize() / 2 ); size = VECTOR2D( aPad->GetSize() / 2 ); double scale = m_gal->GetZoomFactor(); double scale = m_gal->GetZoomFactor(); double maxSize = PCB_RENDER_SETTINGS::MAX_FONT_SIZE / scale; double maxSize = PCB_RENDER_SETTINGS::MAX_FONT_SIZE / scale; Loading @@ -391,7 +420,7 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer ) // Keep the size ratio for the font, but make it smaller // Keep the size ratio for the font, but make it smaller if( size.x < size.y ) if( size.x < size.y ) { { orientation -= M_PI / 2; orientation -= M_PI / 2.0; size.y = size.x * 4.0 / 3.0; size.y = size.x * 4.0 / 3.0; } } else if( size.x == size.y ) else if( size.x == size.y ) Loading Loading @@ -424,27 +453,41 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer ) else else m_gal->SetStrokeColor( color.Highlighted( 0.8 ) ); m_gal->SetStrokeColor( color.Highlighted( 0.8 ) ); // Let's make some space for a netname too, if there's one to display if( displayNetname && m_pcbSettings->m_padNumbers ) if( !aPad->GetNetname().empty() ) { { // Divide the space, when both pad numbers and netnames are enabled size = size / 2.0; size = size / 2.0; m_gal->SetGlyphSize( size ); m_gal->SetGlyphSize( size ); m_gal->SetLineWidth( size.y / 10.0 ); m_gal->SetLineWidth( size.y / 8.0 ); m_gal->StrokeText( std::string( aPad->GetNetname().mb_str() ), m_gal->StrokeText( std::string( aPad->GetNetname().mb_str() ), VECTOR2D( 0, size.y ), 0.0 ); VECTOR2D( 0.0, size.y ), 0.0 ); m_gal->Translate( VECTOR2D( 0.0, -size.y / 2.0 ) ); m_gal->StrokeText( std::string( aPad->GetPadName().mb_str() ), VECTOR2D( 0.0, -size.y / 2.0 ), 0.0 ); } } else else { { // In case when there's no netname assigned // There is only one thing to display if( displayNetname ) { m_gal->SetGlyphSize( size / 2.0 ); m_gal->SetLineWidth( size.y / 12.0 ); m_gal->StrokeText( std::string( aPad->GetNetname().mb_str() ), VECTOR2D( 0.0, 0.0 ), 0.0 ); } if( m_pcbSettings->m_padNumbers ) { m_gal->SetGlyphSize( size ); m_gal->SetGlyphSize( size ); m_gal->SetLineWidth( size.y / 10.0 ); m_gal->SetLineWidth( size.y / 10.0 ); m_gal->StrokeText( std::string( aPad->GetPadName().mb_str() ), VECTOR2D( 0.0, 0.0 ), 0.0 ); } } } m_gal->StrokeText( std::string( aPad->GetPadName().mb_str() ), VECTOR2D( 0, 0 ), 0.0 ); m_gal->Restore(); m_gal->Restore(); } return; return; } } Loading
pcbnew/pcb_painter.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -102,8 +102,9 @@ protected: COLOR4D m_itemColorsDark [END_PCB_VISIBLE_LIST]; COLOR4D m_itemColorsDark [END_PCB_VISIBLE_LIST]; bool m_sketchModeSelect[END_PCB_VISIBLE_LIST]; bool m_sketchModeSelect[END_PCB_VISIBLE_LIST]; bool m_visibleLayers [NB_LAYERS]; bool m_padNumbers; bool m_visibleItems [END_PCB_VISIBLE_LIST]; bool m_netNamesOnPads; bool m_netNamesOnTracks; static const double MAX_FONT_SIZE = 100000000; static const double MAX_FONT_SIZE = 100000000; Loading