Temporarily disabled display of netlabels on pads due to performance drop.

This commit is contained in:
Maciej Suminski 2013-04-10 13:47:19 +02:00
parent 0d85444062
commit 80999ba0a4
5 changed files with 9 additions and 83 deletions

View File

@ -147,7 +147,6 @@ enum PCB_VISIBLE
PADS_VISIBLE, PADS_VISIBLE,
VIA_HOLES_VISIBLE, VIA_HOLES_VISIBLE,
PAD_HOLES_VISIBLE, PAD_HOLES_VISIBLE,
NETNAME_VISIBLE,
END_PCB_VISIBLE_LIST // sentinel END_PCB_VISIBLE_LIST // sentinel
}; };

View File

@ -95,7 +95,6 @@ const int m_galLayerOrder[] =
ITEM_GAL_LAYER( MOD_REFERENCES_VISIBLE), ITEM_GAL_LAYER( MOD_VALUES_VISIBLE ), ITEM_GAL_LAYER( MOD_REFERENCES_VISIBLE), ITEM_GAL_LAYER( MOD_VALUES_VISIBLE ),
SILKSCREEN_N_FRONT, SOLDERPASTE_N_FRONT, ADHESIVE_N_FRONT, SOLDERMASK_N_FRONT, SILKSCREEN_N_FRONT, SOLDERPASTE_N_FRONT, ADHESIVE_N_FRONT, SOLDERMASK_N_FRONT,
ITEM_GAL_LAYER( NETNAME_VISIBLE ),
ITEM_GAL_LAYER( VIA_HOLES_VISIBLE ), ITEM_GAL_LAYER( PAD_HOLES_VISIBLE ), ITEM_GAL_LAYER( VIA_HOLES_VISIBLE ), ITEM_GAL_LAYER( PAD_HOLES_VISIBLE ),
ITEM_GAL_LAYER( VIAS_VISIBLE ), ITEM_GAL_LAYER( PADS_VISIBLE ), ITEM_GAL_LAYER( VIAS_VISIBLE ), ITEM_GAL_LAYER( PADS_VISIBLE ),

View File

@ -852,21 +852,18 @@ EDA_ITEM* D_PAD::Clone() const
void D_PAD::ViewGetLayers( int aLayers[], int& aCount ) const void D_PAD::ViewGetLayers( int aLayers[], int& aCount ) const
{ {
// Pad description layer (number / net)
aLayers[0] = ITEM_GAL_LAYER( NETNAME_VISIBLE );
if( m_Attribute == PAD_SMD || m_Attribute == PAD_CONN) if( m_Attribute == PAD_SMD || m_Attribute == PAD_CONN)
{ {
// Single layer pad (smd) without hole // Single layer pad (smd) without hole
aLayers[1] = GetParent()->GetLayer(); aLayers[0] = GetParent()->GetLayer();
aCount = 2; aCount = 1;
} }
else else
{ {
// Multi layer pad with hole - pad is shown on one common layer, hole on the other // Multi layer pad with hole - pad is shown on one common layer, hole on the other
aLayers[1] = ITEM_GAL_LAYER( PADS_VISIBLE ); aLayers[0] = ITEM_GAL_LAYER( PADS_VISIBLE );
aLayers[2] = ITEM_GAL_LAYER( PAD_HOLES_VISIBLE ); aLayers[1] = ITEM_GAL_LAYER( PAD_HOLES_VISIBLE );
aCount = 3; aCount = 2;
} }
} }

View File

@ -71,7 +71,6 @@ void PCB_RENDER_SETTINGS::ImportLegacyColors( COLORS_DESIGN_SETTINGS* aSettings
m_itemColors[PAD_HOLES_VISIBLE] = COLOR4D( 0.0, 0.5, 0.5, 1.0 ); m_itemColors[PAD_HOLES_VISIBLE] = COLOR4D( 0.0, 0.5, 0.5, 1.0 );
m_itemColors[VIAS_VISIBLE] = COLOR4D( 0.7, 0.7, 0.7, 1.0 ); m_itemColors[VIAS_VISIBLE] = COLOR4D( 0.7, 0.7, 0.7, 1.0 );
m_itemColors[PADS_VISIBLE] = COLOR4D( 0.7, 0.7, 0.7, 1.0 ); m_itemColors[PADS_VISIBLE] = COLOR4D( 0.7, 0.7, 0.7, 1.0 );
m_itemColors[NETNAME_VISIBLE] = COLOR4D( 0.9, 0.9, 0.9, 1.0 );
Update(); Update();
} }
@ -112,8 +111,6 @@ void PCB_RENDER_SETTINGS::Update()
} }
const double PCB_PAINTER::MAX_FONT_SIZE = 1500000;
PCB_PAINTER::PCB_PAINTER( GAL* aGal ) : PCB_PAINTER::PCB_PAINTER( GAL* aGal ) :
PAINTER( aGal ) PAINTER( aGal )
{ {
@ -310,78 +307,11 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer )
{ {
COLOR4D color; COLOR4D color;
VECTOR2D size; VECTOR2D size;
VECTOR2D position( aPad->GetPosition() );
PAD_SHAPE_T shape; PAD_SHAPE_T shape;
double m, n; double m, n;
double orientation = aPad->GetOrientation();
NORMALIZE_ANGLE_90( orientation ); // do not display descriptions upside down
orientation = orientation * M_PI / 1800.0;
color = getLayerColor( aLayer, aPad->GetNet() ); color = getLayerColor( aLayer, aPad->GetNet() );
// Draw description layer
if( aLayer == ITEM_GAL_LAYER( NETNAME_VISIBLE ) )
{
size = VECTOR2D( aPad->GetSize() / 2 );
// Font size limits
if( size.x > MAX_FONT_SIZE )
size.x = MAX_FONT_SIZE;
if( size.y > MAX_FONT_SIZE )
size.y = MAX_FONT_SIZE;
// Keep the size ratio for the font, but make it smaller
if( size.x < size.y )
{
orientation -= M_PI / 2;
size.y = size.x * 4.0 / 3.0;
}
else
{
size.x = size.y * 3.0 / 4.0;
}
m_gal->Save();
m_gal->Translate( position );
m_gal->Rotate( -orientation );
// Default font settings
m_stroke_font->SetHorizontalJustify( GR_TEXT_HJUSTIFY_CENTER );
m_stroke_font->SetVerticalJustify( GR_TEXT_VJUSTIFY_CENTER );
m_stroke_font->SetBold( false );
m_stroke_font->SetItalic( false );
m_stroke_font->SetMirrored( false );
m_gal->SetStrokeColor( color );
// Let's make some space for a netname too, if there's one to display
if( !aPad->GetNetname().empty() )
{
size = size / 2.0;
m_stroke_font->SetGlyphSize( size );
m_gal->SetLineWidth( size.y / 10.0 );
m_stroke_font->Draw( std::string( aPad->GetNetname().mb_str() ),
VECTOR2D( 0, size.y ), 0.0 );
m_gal->Translate( VECTOR2D( 0.0, -size.y / 2.0 ) );
}
else
{
// In case when there's no netname assigned
m_stroke_font->SetGlyphSize( size );
m_gal->SetLineWidth( size.y / 10.0 );
}
m_stroke_font->Draw( std::string( aPad->GetPadName().mb_str() ), VECTOR2D( 0, 0 ), 0.0 );
m_gal->Restore();
return;
}
// Pad/hole drawing
m_gal->Save();
m_gal->Translate( position );
m_gal->Rotate( -orientation );
if( m_pcbSettings->m_sketchModeSelect[PADS_VISIBLE] ) if( m_pcbSettings->m_sketchModeSelect[PADS_VISIBLE] )
{ {
// Outline mode // Outline mode
@ -400,6 +330,10 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer )
m_gal->SetFillColor( color ); m_gal->SetFillColor( color );
} }
m_gal->Save();
m_gal->Translate( VECTOR2D( aPad->GetPosition() ) );
m_gal->Rotate( -aPad->GetOrientation() * M_PI / 1800.0 ); // orientation is in tenths of degree
// Choose drawing settings depending on if we are drawing a pad itself or a hole // Choose drawing settings depending on if we are drawing a pad itself or a hole
if( aLayer == ITEM_GAL_LAYER( PAD_HOLES_VISIBLE ) ) if( aLayer == ITEM_GAL_LAYER( PAD_HOLES_VISIBLE ) )
{ {

View File

@ -151,9 +151,6 @@ protected:
void draw( const ZONE_CONTAINER* ); void draw( const ZONE_CONTAINER* );
void draw( const DIMENSION* ); void draw( const DIMENSION* );
void draw( const PCB_TARGET* ); void draw( const PCB_TARGET* );
/// Maximum font size for drawing descriptions
static const double MAX_FONT_SIZE;
}; };
} // namespace KiGfx } // namespace KiGfx