Make the "No Net" mark color editable (mark for pads having no net name)

Note: this mark is currently drawn only in legacy canvas.
This commit is contained in:
jean-pierre charras 2017-10-05 20:11:55 +02:00
parent acccb10ca5
commit 1164eaab72
7 changed files with 54 additions and 43 deletions

View File

@ -68,6 +68,7 @@ static const EDA_COLOR_T default_layer_color[] = {
}; };
// for color order, see enum GAL_LAYER_ID
static const EDA_COLOR_T default_items_color[] = { static const EDA_COLOR_T default_items_color[] = {
LIGHTGRAY, // unused LIGHTGRAY, // unused
CYAN, // LAYER_VIA_MICROVIA CYAN, // LAYER_VIA_MICROVIA
@ -82,7 +83,9 @@ static const EDA_COLOR_T default_items_color[] = {
GREEN, // LAYER_PAD_BK GREEN, // LAYER_PAD_BK
LIGHTGRAY, // LAYER_RATSNEST LIGHTGRAY, // LAYER_RATSNEST
DARKGRAY, // LAYER_GRID DARKGRAY, // LAYER_GRID
LIGHTRED, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTRED, // LAYER_GRID_AXES
BLUE, // LAYER_NO_CONNECTS
LIGHTGRAY, LIGHTGRAY,
LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY,
LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY,
LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY, LIGHTGRAY,
@ -224,6 +227,7 @@ void COLORS_DESIGN_SETTINGS::setupConfigParams()
Add( "Color4DViaBBlindEx", ITEM_COLOR( LAYER_VIA_BBLIND ), BROWN ); Add( "Color4DViaBBlindEx", ITEM_COLOR( LAYER_VIA_BBLIND ), BROWN );
Add( "Color4DViaMicroEx", ITEM_COLOR( LAYER_VIA_MICROVIA ), CYAN ); Add( "Color4DViaMicroEx", ITEM_COLOR( LAYER_VIA_MICROVIA ), CYAN );
Add( "Color4DRatsEx", ITEM_COLOR( LAYER_RATSNEST ), WHITE ); Add( "Color4DRatsEx", ITEM_COLOR( LAYER_RATSNEST ), WHITE );
Add( "Color4DNoNetPadMarker", ITEM_COLOR( LAYER_NO_CONNECTS ), BLUE );
} }
SetConfigPrefix( currprefix ); SetConfigPrefix( currprefix );

View File

@ -739,17 +739,17 @@ int BOARD::GetVisibleElements() const
} }
bool BOARD::IsElementVisible( GAL_LAYER_ID LAYER_aPCB ) const bool BOARD::IsElementVisible( GAL_LAYER_ID aLayer ) const
{ {
return m_designSettings.IsElementVisible( LAYER_aPCB ); return m_designSettings.IsElementVisible( aLayer );
} }
void BOARD::SetElementVisibility( GAL_LAYER_ID LAYER_aPCB, bool isEnabled ) void BOARD::SetElementVisibility( GAL_LAYER_ID aLayer, bool isEnabled )
{ {
m_designSettings.SetElementVisibility( LAYER_aPCB, isEnabled ); m_designSettings.SetElementVisibility( aLayer, isEnabled );
switch( LAYER_aPCB ) switch( aLayer )
{ {
case LAYER_RATSNEST: case LAYER_RATSNEST:
{ {
@ -791,9 +791,9 @@ void BOARD::SetElementVisibility( GAL_LAYER_ID LAYER_aPCB, bool isEnabled )
} }
bool BOARD::IsModuleLayerVisible( PCB_LAYER_ID layer ) bool BOARD::IsModuleLayerVisible( PCB_LAYER_ID aLayer )
{ {
switch( layer ) switch( aLayer )
{ {
case F_Cu: case F_Cu:
return IsElementVisible( LAYER_MOD_FR ); return IsElementVisible( LAYER_MOD_FR );

View File

@ -501,29 +501,29 @@ public:
* Function IsElementVisible * Function IsElementVisible
* tests whether a given element category is visible. Keep this as an * tests whether a given element category is visible. Keep this as an
* inline function. * inline function.
* @param LAYER_aPCB is from the enum by the same name * @param aLayer is from the enum by the same name
* @return bool - true if the element is visible. * @return bool - true if the element is visible.
* @see enum GAL_LAYER_ID * @see enum GAL_LAYER_ID
*/ */
bool IsElementVisible( GAL_LAYER_ID LAYER_aPCB ) const; bool IsElementVisible( GAL_LAYER_ID aLayer ) const;
/** /**
* Function SetElementVisibility * Function SetElementVisibility
* changes the visibility of an element category * changes the visibility of an element category
* @param LAYER_aPCB is from the enum by the same name * @param aLayer is from the enum by the same name
* @param aNewState = The new visibility state of the element category * @param aNewState = The new visibility state of the element category
* @see enum GAL_LAYER_ID * @see enum GAL_LAYER_ID
*/ */
void SetElementVisibility( GAL_LAYER_ID LAYER_aPCB, bool aNewState ); void SetElementVisibility( GAL_LAYER_ID aLayer, bool aNewState );
/** /**
* Function IsModuleLayerVisible * Function IsModuleLayerVisible
* expects either of the two layers on which a module can reside, and returns * expects either of the two layers on which a module can reside, and returns
* whether that layer is visible. * whether that layer is visible.
* @param layer One of the two allowed layers for modules: F_Cu or B_Cu * @param aLayer One of the two allowed layers for modules: F_Cu or B_Cu
* @return bool - true if the layer is visible, else false. * @return bool - true if the layer is visible, else false.
*/ */
bool IsModuleLayerVisible( PCB_LAYER_ID layer ); bool IsModuleLayerVisible( PCB_LAYER_ID aLayer );
/** /**
* Function GetDesignSettings * Function GetDesignSettings

View File

@ -68,6 +68,7 @@ public:
// visible layers // visible layers
COLOR4D m_HoleColor; // color used to draw the pad hole COLOR4D m_HoleColor; // color used to draw the pad hole
COLOR4D m_NPHoleColor; // color used to draw a pad Not Plated hole COLOR4D m_NPHoleColor; // color used to draw a pad Not Plated hole
COLOR4D m_NoNetMarkColor; // color used to draw a mark on pads having no net
int m_PadClearance; // clearance value, used to draw the pad area outlines int m_PadClearance; // clearance value, used to draw the pad area outlines
wxSize m_Mask_margin; // margin, used to draw solder paste when only one layer is shown wxSize m_Mask_margin; // margin, used to draw solder paste when only one layer is shown
bool m_Display_padnum; // true to show pad number bool m_Display_padnum; // true to show pad number

View File

@ -1,10 +1,10 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2016 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 2017 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -63,6 +63,7 @@ PAD_DRAWINFO::PAD_DRAWINFO()
m_Color = BLACK; m_Color = BLACK;
m_HoleColor = BLACK; // could be DARKGRAY; m_HoleColor = BLACK; // could be DARKGRAY;
m_NPHoleColor = YELLOW; m_NPHoleColor = YELLOW;
m_NoNetMarkColor = BLUE;
m_PadClearance = 0; m_PadClearance = 0;
m_Display_padnum = true; m_Display_padnum = true;
m_Display_netname = true; m_Display_netname = true;
@ -285,6 +286,7 @@ void D_PAD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GR_DRAWMODE aDraw_mode,
drawInfo.m_DrawMode = aDraw_mode; drawInfo.m_DrawMode = aDraw_mode;
drawInfo.m_Color = color; drawInfo.m_Color = color;
drawInfo.m_NoNetMarkColor = cds.GetItemColor( LAYER_NO_CONNECTS );
drawInfo.m_DrawPanel = aPanel; drawInfo.m_DrawPanel = aPanel;
drawInfo.m_Mask_margin = mask_margin; drawInfo.m_Mask_margin = mask_margin;
drawInfo.m_ShowNCMark = brd->IsElementVisible( LAYER_NO_CONNECTS ); drawInfo.m_ShowNCMark = brd->IsElementVisible( LAYER_NO_CONNECTS );
@ -612,15 +614,14 @@ void D_PAD::DrawShape( EDA_RECT* aClipBox, wxDC* aDC, PAD_DRAWINFO& aDrawInfo )
if( GetNetCode() == 0 && aDrawInfo.m_ShowNCMark ) if( GetNetCode() == 0 && aDrawInfo.m_ShowNCMark )
{ {
int dx0 = std::min( halfsize.x, halfsize.y ); int dx0 = std::min( halfsize.x, halfsize.y );
COLOR4D nc_color = COLOR4D( BLUE );
if( m_layerMask[F_Cu] ) /* Draw \ */ if( m_layerMask[F_Cu] ) /* Draw \ */
GRLine( aClipBox, aDC, holepos.x - dx0, holepos.y - dx0, GRLine( aClipBox, aDC, holepos.x - dx0, holepos.y - dx0,
holepos.x + dx0, holepos.y + dx0, 0, nc_color ); holepos.x + dx0, holepos.y + dx0, 0, aDrawInfo.m_NoNetMarkColor );
if( m_layerMask[B_Cu] ) // Draw / if( m_layerMask[B_Cu] ) // Draw /
GRLine( aClipBox, aDC, holepos.x + dx0, holepos.y - dx0, GRLine( aClipBox, aDC, holepos.x + dx0, holepos.y - dx0,
holepos.x - dx0, holepos.y + dx0, 0, nc_color ); holepos.x - dx0, holepos.y + dx0, 0, aDrawInfo.m_NoNetMarkColor );
} }
if( !aDrawInfo.m_IsPrinting ) if( !aDrawInfo.m_IsPrinting )

View File

@ -1,9 +1,9 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2004-2016 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr * Copyright (C) 2004-2017 Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2010-2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2010-2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010-2016 KiCad Developers, see change_log.txt for contributors. * Copyright (C) 2010-2017 KiCad Developers, see change_log.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -56,32 +56,33 @@
const LAYER_WIDGET::ROW PCB_LAYER_WIDGET::s_render_rows[] = { const LAYER_WIDGET::ROW PCB_LAYER_WIDGET::s_render_rows[] = {
#define RR LAYER_WIDGET::ROW // Render Row abbreviation to reduce source width #define RR LAYER_WIDGET::ROW // Render Row abbreviation to reduce source width
#define NOCOLOR COLOR4D::UNSPECIFIED // specify rows that do not have a color selector icon
// text id color tooltip // text id color tooltip
RR( _( "Through Via" ), LAYER_VIA_THROUGH, WHITE, _( "Show through vias" ) ), RR( _( "Through Via" ), LAYER_VIA_THROUGH, WHITE, _( "Show through vias" ) ),
RR( _( "Bl/Buried Via" ), LAYER_VIA_BBLIND, WHITE, _( "Show blind or buried vias" ) ), RR( _( "Bl/Buried Via" ), LAYER_VIA_BBLIND, WHITE, _( "Show blind or buried vias" ) ),
RR( _( "Micro Via" ), LAYER_VIA_MICROVIA, WHITE, _( "Show micro vias") ), RR( _( "Micro Via" ), LAYER_VIA_MICROVIA, WHITE, _( "Show micro vias") ),
RR( _( "Non Plated Holes" ),LAYER_NON_PLATED, WHITE, _( "Show non plated holes in specific color") ), RR( _( "Non Plated Holes" ),LAYER_NON_PLATED, WHITE, _( "Show non plated holes in specific color") ),
RR( _( "Ratsnest" ), LAYER_RATSNEST, WHITE, _( "Show unconnected nets as a ratsnest") ), RR( _( "Ratsnest" ), LAYER_RATSNEST, WHITE, _( "Show unconnected nets as a ratsnest") ),
RR( _( "Pads Front" ), LAYER_PAD_FR, WHITE, _( "Show footprint pads on board's front" ) ), RR( _( "No-Connects" ), LAYER_NO_CONNECTS, BLUE, _( "Show a marker on pads which have no net connected" ) ),
RR( _( "Pads Back" ), LAYER_PAD_BK, WHITE, _( "Show footprint pads on board's back" ) ), RR( _( "Pads Front" ), LAYER_PAD_FR, WHITE, _( "Show footprint pads on board's front" ) ),
RR( _( "Pads Back" ), LAYER_PAD_BK, WHITE, _( "Show footprint pads on board's back" ) ),
RR( _( "Text Front" ), LAYER_MOD_TEXT_FR, COLOR4D::UNSPECIFIED, _( "Show footprint text on board's front" ) ), RR( _( "Text Front" ), LAYER_MOD_TEXT_FR, NOCOLOR, _( "Show footprint text on board's front" ) ),
RR( _( "Text Back" ), LAYER_MOD_TEXT_BK, COLOR4D::UNSPECIFIED, _( "Show footprint text on board's back" ) ), RR( _( "Text Back" ), LAYER_MOD_TEXT_BK, NOCOLOR, _( "Show footprint text on board's back" ) ),
RR( _( "Hidden Text" ), LAYER_MOD_TEXT_INVISIBLE, WHITE, _( "Show footprint text marked as invisible" ) ), RR( _( "Hidden Text" ), LAYER_MOD_TEXT_INVISIBLE, WHITE, _( "Show footprint text marked as invisible" ) ),
RR( _( "Anchors" ), LAYER_ANCHOR, WHITE, _( "Show footprint and text origins as a cross" ) ), RR( _( "Anchors" ), LAYER_ANCHOR, WHITE, _( "Show footprint and text origins as a cross" ) ),
RR( _( "Grid" ), LAYER_GRID, WHITE, _( "Show the (x,y) grid dots" ) ), RR( _( "Grid" ), LAYER_GRID, WHITE, _( "Show the (x,y) grid dots" ) ),
RR( _( "No-Connects" ), LAYER_NO_CONNECTS, COLOR4D::UNSPECIFIED, _( "Show a marker on pads which have no net connected" ) ), RR( _( "Footprints Front" ),LAYER_MOD_FR, NOCOLOR, _( "Show footprints that are on board's front") ),
RR( _( "Footprints Front" ),LAYER_MOD_FR, COLOR4D::UNSPECIFIED, _( "Show footprints that are on board's front") ), RR( _( "Footprints Back" ), LAYER_MOD_BK, NOCOLOR, _( "Show footprints that are on board's back") ),
RR( _( "Footprints Back" ), LAYER_MOD_BK, COLOR4D::UNSPECIFIED, _( "Show footprints that are on board's back") ), RR( _( "Values" ), LAYER_MOD_VALUES, NOCOLOR, _( "Show footprint's values") ),
RR( _( "Values" ), LAYER_MOD_VALUES, COLOR4D::UNSPECIFIED, _( "Show footprint's values") ), RR( _( "References" ), LAYER_MOD_REFERENCES, NOCOLOR, _( "Show footprint's references") ),
RR( _( "References" ), LAYER_MOD_REFERENCES, COLOR4D::UNSPECIFIED, _( "Show footprint's references") ), RR( _( "Worksheet" ), LAYER_WORKSHEET, DARKRED, _( "Show worksheet") ),
RR( _( "Worksheet" ), LAYER_WORKSHEET, DARKRED, _( "Show worksheet") ), RR( _( "Cursor" ), LAYER_CURSOR, WHITE, _( "PCB Cursor" ), true, false ),
RR( _( "Cursor" ), LAYER_CURSOR, WHITE, _( "PCB Cursor" ), true, false ), RR( _( "Aux items" ), LAYER_AUX_ITEMS, WHITE, _( "Auxillary items (rulers, assistants, axes, etc.)" ), true, false ),
RR( _( "Aux items" ), LAYER_AUX_ITEMS, WHITE, _( "Auxillary items (rulers, assistants, axes, etc.)" ), true, false ), RR( _( "Background" ), LAYER_PCB_BACKGROUND, BLACK, _( "PCB Background" ), true, false )
RR( _( "Background" ), LAYER_PCB_BACKGROUND, BLACK, _( "PCB Background" ), true, false )
}; };
static int s_allowed_in_FpEditor[] = static int s_allowed_in_FpEditor[] =
@ -188,7 +189,7 @@ void PCB_LAYER_WIDGET::AddRightClickMenuItems( wxMenu& menu )
void PCB_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event ) void PCB_LAYER_WIDGET::onRightDownLayers( wxMouseEvent& event )
{ {
wxMenu menu; wxMenu menu;
AddRightClickMenuItems( menu ); AddRightClickMenuItems( menu );
PopupMenu( &menu ); PopupMenu( &menu );

View File

@ -261,6 +261,10 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
// to edit a bad layer // to edit a bad layer
GetBoard()->SetVisibleAlls(); GetBoard()->SetVisibleAlls();
// However the "no net" mark on pads is useless, because there is
// no net in footprint editor: make it non visible
GetBoard()->SetElementVisibility( LAYER_NO_CONNECTS, false );
wxFont font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ); wxFont font = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
m_Layers = new PCB_LAYER_WIDGET( this, GetCanvas(), font.GetPointSize(), true ); m_Layers = new PCB_LAYER_WIDGET( this, GetCanvas(), font.GetPointSize(), true );