Added selection box for DIMENSION.

This commit is contained in:
Maciej Suminski 2013-08-30 14:02:57 +02:00
parent fb9a4c2bfc
commit 01d4080e47
4 changed files with 44 additions and 21 deletions

View File

@ -489,6 +489,18 @@ wxString DIMENSION::GetSelectMenuText() const
}
void DIMENSION::ViewGetLayers( int aLayers[], int& aCount ) const
{
// Layer that simply displays the text
aLayers[0] = m_Layer;
// On the general purpose overlay there is a selection box displayed
aLayers[1] = ITEM_GAL_LAYER( GP_OVERLAY );
aCount = 2;
}
EDA_ITEM* DIMENSION::Clone() const
{
return new DIMENSION( *this );

View File

@ -144,6 +144,9 @@ public:
EDA_ITEM* Clone() const;
/// @copydoc VIEW_ITEM::ViewGetLayers()
virtual void ViewGetLayers( int aLayers[], int& aCount ) const;
#if defined(DEBUG)
virtual void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); } // override
#endif

View File

@ -236,7 +236,7 @@ bool PCB_PAINTER::Draw( const VIEW_ITEM* aItem, int aLayer )
break;
case PCB_DIMENSION_T:
draw( (DIMENSION*) aItem );
draw( (DIMENSION*) aItem, aLayer );
break;
case PCB_TARGET_T:
@ -784,29 +784,37 @@ void PCB_PAINTER::draw( const ZONE_CONTAINER* aZone )
}
void PCB_PAINTER::draw( const DIMENSION* aDimension )
void PCB_PAINTER::draw( const DIMENSION* aDimension, int aLayer )
{
int layer = aDimension->GetLayer();
COLOR4D strokeColor = GetColor( NULL, layer );
if( aLayer == ITEM_GAL_LAYER( GP_OVERLAY ) )
{
if( aDimension->IsSelected() )
drawSelectionBox( aDimension );
}
else
{
int layer = aDimension->GetLayer();
COLOR4D strokeColor = GetColor( NULL, layer );
m_gal->SetStrokeColor( strokeColor );
m_gal->SetIsFill( false );
m_gal->SetIsStroke( true );
m_gal->SetLineWidth( aDimension->GetWidth() );
m_gal->SetStrokeColor( strokeColor );
m_gal->SetIsFill( false );
m_gal->SetIsStroke( true );
m_gal->SetLineWidth( aDimension->GetWidth() );
// Draw an arrow
m_gal->DrawLine( VECTOR2D( aDimension->m_crossBarO ), VECTOR2D( aDimension->m_crossBarF ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_featureLineGO ),
VECTOR2D( aDimension->m_featureLineGF ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_featureLineDO ),
VECTOR2D( aDimension->m_featureLineDF ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowD1O ), VECTOR2D( aDimension->m_arrowD1F ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowD2O ), VECTOR2D( aDimension->m_arrowD2F ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowG1O ), VECTOR2D( aDimension->m_arrowG1F ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowG2O ), VECTOR2D( aDimension->m_arrowG2F ) );
// Draw an arrow
m_gal->DrawLine( VECTOR2D( aDimension->m_crossBarO ), VECTOR2D( aDimension->m_crossBarF ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_featureLineGO ),
VECTOR2D( aDimension->m_featureLineGF ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_featureLineDO ),
VECTOR2D( aDimension->m_featureLineDF ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowD1O ), VECTOR2D( aDimension->m_arrowD1F ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowD2O ), VECTOR2D( aDimension->m_arrowD2F ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowG1O ), VECTOR2D( aDimension->m_arrowG1F ) );
m_gal->DrawLine( VECTOR2D( aDimension->m_arrowG2O ), VECTOR2D( aDimension->m_arrowG2F ) );
// Draw text
draw( &aDimension->Text(), layer );
// Draw text
draw( &aDimension->Text(), layer );
}
}

View File

@ -145,7 +145,7 @@ protected:
void draw( const TEXTE_PCB*, int );
void draw( const TEXTE_MODULE*, int );
void draw( const ZONE_CONTAINER* );
void draw( const DIMENSION* );
void draw( const DIMENSION*, int );
void draw( const PCB_TARGET* );
/// Draws a white semitransparent box indicating an item as selected