Pcbnew: Added display a short net name on vias and pads. Also, code cleaning

This commit is contained in:
charras 2008-12-14 19:45:05 +00:00
parent 9dae370c1f
commit 6d856f60a6
51 changed files with 1151 additions and 925 deletions

View File

@ -5,6 +5,14 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2008-Dec-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
++pcbnew
Display a short net name on vias and pads (if zoom level allows it).
Short net names are net names without hierarchy path
Add m_ShortNetname and change m_Netname to private in classes D_PAD and EQUIPOT
2008-Dec-08 UPDATE Wayne Stambaugh <stambaughw@verizon.net> 2008-Dec-08 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
================================================================================ ================================================================================
++all ++all

View File

@ -138,9 +138,6 @@ void WinEDA_BasicFrame::PrintMsg( const wxString& text )
/******************************************************/ /******************************************************/
{ {
SetStatusText( text ); SetStatusText( text );
#ifdef DEBUG
printf( "%s\n", (const char*) text.mb_str() );
#endif
} }

View File

@ -92,7 +92,7 @@ void PlotWorkSheet( int format_plot, BASE_SCREEN* screen )
int ii, jj, xg, yg, ipas, gxpas, gypas; int ii, jj, xg, yg, ipas, gxpas, gypas;
wxSize PageSize; wxSize PageSize;
wxPoint pos, ref; wxPoint pos, ref;
int color; EDA_Colors color;
Ki_WorkSheetData* WsItem; Ki_WorkSheetData* WsItem;
int conv_unit = screen->GetInternalUnits() / 1000; /* Scale to convert dimension in 1/1000 in into internal units int conv_unit = screen->GetInternalUnits() / 1000; /* Scale to convert dimension in 1/1000 in into internal units
* (1/1000 inc for EESchema, 1/10000 for pcbnew */ * (1/1000 inc for EESchema, 1/10000 for pcbnew */

View File

@ -21,22 +21,23 @@
/* fonctions locales : */ /* fonctions locales : */
/****************************************************************************/ /****************************************************************************************************/
void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC, void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
const wxPoint& Pos, int gcolor, const wxString& Text, const wxPoint& aPos, enum EDA_Colors aColor, const wxString& aText,
int orient, const wxSize& Size, int h_justify, int v_justify, int width ) int aOrient, const wxSize& aSize, int aH_justify, int aV_justify, int aWidth )
/*****************************************************************************/ /****************************************************************************************************/
/* Draw a graphic text (like module texts) /** Function DrawGraphicText
* Text = text to draw * Draw a graphic text (like module texts)
* Pos = text position (according to h_justify, v_justify) * @param aPanel = the current DrawPanel
* Size = text size (size.x or size.y can be < 0 for mirrored texts) * @param aPos = text position (according to aH_justify, aV_justify)
* orient = angle in 0.1 degree * @param aColor (enum EDA_Colors) = text color
* mode_color = GR_OR, GR_XOR.. * @param aText = text to draw
* h_justify = horizontal justification (Left, center, right) * @param aOrient = angle in 0.1 degree
* v_justify = vertical justification (bottom, center, top) * @param aSize = text size (size.x or size.y can be < 0 for mirrored texts)
* width = line width (pen width) (default = 0) * @param aH_justify = horizontal justification (Left, center, right)
* if width < 0 : draw segments in sketch mode, width = abs(width) * @param aV_justify = vertical justification (bottom, center, top)
* @param aWidth = line aWidth (pen aWidth) (default = 0)
*/ */
{ {
int ii, kk, nbchar, AsciiCode, endcar; int ii, kk, nbchar, AsciiCode, endcar;
@ -52,29 +53,29 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
int coord[100]; // Buffer coordinate used to draw polylines (char shapes) int coord[100]; // Buffer coordinate used to draw polylines (char shapes)
bool sketch_mode = FALSE; bool sketch_mode = FALSE;
zoom = panel->GetZoom(); zoom = aPanel->GetZoom();
size_h = Size.x; size_h = aSize.x;
size_v = Size.y; size_v = aSize.y;
if( width < 0 ) if( aWidth < 0 )
{ {
width = -width; aWidth = -aWidth;
sketch_mode = TRUE; sketch_mode = TRUE;
} }
kk = 0; kk = 0;
ptr = 0; /* ptr = text index */ ptr = 0; /* ptr = text index */
nbchar = Text.Len(); nbchar = aText.Len();
if( nbchar == 0 ) if( nbchar == 0 )
return; return;
espacement = (10 * size_h ) / 9; // this is the pitch between chars espacement = (10 * size_h ) / 9; // this is the pitch between chars
ox = cX = Pos.x; ox = cX = aPos.x;
oy = cY = Pos.y; oy = cY = aPos.y;
/* Do not draw the text if out of draw area! */ /* Do not draw the text if out of draw area! */
if( panel ) if( aPanel )
{ {
int xm, ym, ll, xc, yc; int xm, ym, ll, xc, yc;
int textsize = ABS( espacement ); int textsize = ABS( espacement );
@ -83,10 +84,10 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
xc = GRMapX( cX ); xc = GRMapX( cX );
yc = GRMapY( cY ); yc = GRMapY( cY );
x0 = panel->m_ClipBox.GetX() - ll; x0 = aPanel->m_ClipBox.GetX() - ll;
y0 = panel->m_ClipBox.GetY() - ll; y0 = aPanel->m_ClipBox.GetY() - ll;
xm = panel->m_ClipBox.GetRight() + ll; xm = aPanel->m_ClipBox.GetRight() + ll;
ym = panel->m_ClipBox.GetBottom() + ll; ym = aPanel->m_ClipBox.GetBottom() + ll;
if( xc < x0 ) if( xc < x0 )
return; return;
@ -105,9 +106,9 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
ux0 = uy0 = 0; /* Decalage du centre du texte / coord de ref */ ux0 = uy0 = 0; /* Decalage du centre du texte / coord de ref */
if( (orient == 0) || (orient == 1800) ) /* Horizontal Text */ if( (aOrient == 0) || (aOrient == 1800) ) /* Horizontal Text */
{ {
switch( h_justify ) switch( aH_justify )
{ {
case GR_TEXT_HJUSTIFY_CENTER: case GR_TEXT_HJUSTIFY_CENTER:
break; break;
@ -121,7 +122,7 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
break; break;
} }
switch( v_justify ) switch( aV_justify )
{ {
case GR_TEXT_VJUSTIFY_CENTER: case GR_TEXT_VJUSTIFY_CENTER:
break; break;
@ -137,7 +138,7 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
} }
else /* Vertical Text */ else /* Vertical Text */
{ {
switch( h_justify ) switch( aH_justify )
{ {
case GR_TEXT_HJUSTIFY_CENTER: case GR_TEXT_HJUSTIFY_CENTER:
break; break;
@ -151,7 +152,7 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
break; break;
} }
switch( v_justify ) switch( aV_justify )
{ {
case GR_TEXT_VJUSTIFY_CENTER: case GR_TEXT_VJUSTIFY_CENTER:
break; break;
@ -172,10 +173,10 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
ox = cX - dx; ox = cX - dx;
oy = cY + dy; oy = cY + dy;
if( (Size.x / zoom) == 0 ) if( (aSize.x / zoom) == 0 )
return; return;
if( ABS( (Size.x / zoom) ) < 3 ) /* chars trop petits pour etre dessines */ if( ABS( (aSize.x / zoom) ) < 3 ) /* chars trop petits pour etre dessines */
{ /* le texte est symbolise par une barre */ { /* le texte est symbolise par une barre */
dx = (espacement * nbchar) / 2; dx = (espacement * nbchar) / 2;
dy = size_v / 2; /* Decalage du debut du texte / centre */ dy = size_v / 2; /* Decalage du debut du texte / centre */
@ -186,10 +187,10 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
dx += cX; dx += cX;
dy = cY; dy = cY;
RotatePoint( &ux0, &uy0, cX, cY, orient ); RotatePoint( &ux0, &uy0, cX, cY, aOrient );
RotatePoint( &dx, &dy, cX, cY, orient ); RotatePoint( &dx, &dy, cX, cY, aOrient );
GRLine( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, width, gcolor ); GRLine( &aPanel->m_ClipBox, DC, ux0, uy0, dx, dy, aWidth, aColor );
return; return;
} }
@ -204,15 +205,15 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
dx += cX; dx += cX;
dy = cY; dy = cY;
RotatePoint( &ux0, &uy0, cX, cY, orient ); RotatePoint( &ux0, &uy0, cX, cY, aOrient );
RotatePoint( &dx, &dy, cX, cY, orient ); RotatePoint( &dx, &dy, cX, cY, aOrient );
DC->SetTextForeground( wxColour( DC->SetTextForeground( wxColour(
ColorRefs[gcolor].r, ColorRefs[aColor].r,
ColorRefs[gcolor].g, ColorRefs[aColor].g,
ColorRefs[gcolor].b ) ); ColorRefs[aColor].b ) );
DC->DrawRotatedText( Text, GRMapX( ux0 ), GRMapY( uy0 ), (double) orient / 10.0 ); DC->DrawRotatedText( Text, GRMapX( ux0 ), GRMapY( uy0 ), (double) aOrient / 10.0 );
return; return;
#endif #endif
@ -220,13 +221,13 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
{ {
x0 = 0; y0 = 0; x0 = 0; y0 = 0;
#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) #if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC)
AsciiCode = Text.GetChar(ptr) & 0x7FF; AsciiCode = aText.GetChar(ptr) & 0x7FF;
if ( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr if ( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr
AsciiCode = utf8_to_ascii[AsciiCode - 0x410] & 0xFF; AsciiCode = utf8_to_ascii[AsciiCode - 0x410] & 0xFF;
else else
AsciiCode = AsciiCode & 0xFF; AsciiCode = AsciiCode & 0xFF;
#else #else
AsciiCode = Text.GetChar( ptr ) & 255; AsciiCode = aText.GetChar( ptr ) & 0xFF;
#endif #endif
ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description
* du caractere a dessiner */ * du caractere a dessiner */
@ -245,20 +246,20 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
case 'U': case 'U':
if( ii && (plume == 'D' ) ) if( ii && (plume == 'D' ) )
{ {
if( width <= 1 ) if( aWidth <= 1 )
GRPoly( &panel->m_ClipBox, DC, ii / 2, coord, 0, 0, GRPoly( &aPanel->m_ClipBox, DC, ii / 2, coord, 0, 0,
gcolor, gcolor ); aColor, aColor );
else if( sketch_mode ) else if( sketch_mode )
{ {
int ik, * coordptr; int ik, * coordptr;
coordptr = coord; coordptr = coord;
for( ik = 0; ik < (ii - 2); ik += 2, coordptr += 2 ) for( ik = 0; ik < (ii - 2); ik += 2, coordptr += 2 )
GRCSegm( &panel->m_ClipBox, DC, *coordptr, *(coordptr + 1), GRCSegm( &aPanel->m_ClipBox, DC, *coordptr, *(coordptr + 1),
*(coordptr + 2), *(coordptr + 3), width, gcolor ); *(coordptr + 2), *(coordptr + 3), aWidth, aColor );
} }
else else
GRPoly( &panel->m_ClipBox, DC, ii / 2, coord, 0, GRPoly( &aPanel->m_ClipBox, DC, ii / 2, coord, 0,
width, gcolor, gcolor ); aWidth, aColor, aColor );
} }
plume = f_cod; ii = 0; plume = f_cod; ii = 0;
break; break;
@ -279,7 +280,7 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
k2 = (k2 * size_h) / 9; k2 = (k2 * size_h) / 9;
dx = k2 + ox; dy = k1 + oy; dx = k2 + ox; dy = k1 + oy;
RotatePoint( &dx, &dy, cX, cY, orient ); RotatePoint( &dx, &dy, cX, cY, aOrient );
coord[ii++] = dx; coord[ii++] = dx;
coord[ii++] = dy; coord[ii++] = dy;
break; break;
@ -299,13 +300,21 @@ void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC,
/******************************************************************************************/ /******************************************************************************************/
void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor, void PlotGraphicText( int aFormat_plot, const wxPoint& aPos, enum EDA_Colors aColor,
const wxString& Text, const wxString& aText,
int orient, const wxSize& Size, int h_justify, int v_justify ) int aOrient, const wxSize& aSize, int aH_justify, int aV_justify )
/******************************************************************************************/ /******************************************************************************************/
/* /** Function PlotGraphicText
* id DrawGraphicText, for plot graphic text * same as DrawGraphicText, but plot graphic text insteed of draw it
* @param aFormat_plot = plot format (PLOT_FORMAT_POST, PLOT_FORMAT_HPGL, PLOT_FORMAT_GERBER)
* @param aPos = text position (according to aH_justify, aV_justify)
* @param aColor (enum EDA_Colors) = text color
* @param aText = text to draw
* @param aOrient = angle in 0.1 degree
* @param aSize = text size (size.x or size.y can be < 0 for mirrored texts)
* @param aH_justify = horizontal justification (Left, center, right)
* @param aV_justify = vertical justification (bottom, center, top)
*/ */
{ {
int kk, nbchar, end, AsciiCode; int kk, nbchar, end, AsciiCode;
@ -319,7 +328,7 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
void (*FctPlume)( wxPoint pos, int state ); void (*FctPlume)( wxPoint pos, int state );
switch( format_plot ) switch( aFormat_plot )
{ {
case PLOT_FORMAT_POST: case PLOT_FORMAT_POST:
FctPlume = LineTo_PS; FctPlume = LineTo_PS;
@ -334,11 +343,11 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
return; return;
} }
if( gcolor >= 0 && IsPostScript( format_plot ) ) if( aColor >= 0 && IsPostScript( aFormat_plot ) )
SetColorMapPS( gcolor ); SetColorMapPS( aColor );
size_h = Size.x; size_h = aSize.x;
size_v = Size.y; size_v = aSize.y;
if( size_h == 0 ) if( size_h == 0 )
size_h = DEFAULT_SIZE_TEXT; size_h = DEFAULT_SIZE_TEXT;
if( size_v == 0 ) if( size_v == 0 )
@ -348,11 +357,11 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
ptr = 0; /* ptr = text index */ ptr = 0; /* ptr = text index */
/* calcul de la position du debut des textes: ox et oy */ /* calcul de la position du debut des textes: ox et oy */
nbchar = Text.Len(); nbchar = aText.Len();
espacement = (10 * size_h ) / 9; espacement = (10 * size_h ) / 9;
ox = cX = Pos.x; ox = cX = aPos.x;
oy = cY = Pos.y; oy = cY = aPos.y;
/* Calcul du cadrage du texte */ /* Calcul du cadrage du texte */
dx = (espacement * nbchar) / 2; dx = (espacement * nbchar) / 2;
@ -360,9 +369,9 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
ux0 = uy0 = 0; /* Decalage du centre du texte / ccord de ref */ ux0 = uy0 = 0; /* Decalage du centre du texte / ccord de ref */
if( (orient == 0) || (orient == 1800) ) /* Texte Horizontal */ if( (aOrient == 0) || (aOrient == 1800) ) /* Texte Horizontal */
{ {
switch( h_justify ) switch( aH_justify )
{ {
case GR_TEXT_HJUSTIFY_CENTER: case GR_TEXT_HJUSTIFY_CENTER:
break; break;
@ -376,7 +385,7 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
break; break;
} }
switch( v_justify ) switch( aV_justify )
{ {
case GR_TEXT_VJUSTIFY_CENTER: case GR_TEXT_VJUSTIFY_CENTER:
break; break;
@ -392,7 +401,7 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
} }
else /* Texte Vertical */ else /* Texte Vertical */
{ {
switch( h_justify ) switch( aH_justify )
{ {
case GR_TEXT_HJUSTIFY_CENTER: case GR_TEXT_HJUSTIFY_CENTER:
break; break;
@ -406,7 +415,7 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
break; break;
} }
switch( v_justify ) switch( aV_justify )
{ {
case GR_TEXT_VJUSTIFY_CENTER: case GR_TEXT_VJUSTIFY_CENTER:
break; break;
@ -432,13 +441,13 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
while( kk++ < nbchar ) while( kk++ < nbchar )
{ {
#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC) #if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC)
AsciiCode = Text.GetChar(ptr) & 0x7FF; AsciiCode = aText.GetChar(ptr) & 0x7FF;
if ( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr if ( AsciiCode > 0x40F && AsciiCode < 0x450 ) // big small Cyr
AsciiCode = utf8_to_ascii[AsciiCode - 0x410] & 0xFF; AsciiCode = utf8_to_ascii[AsciiCode - 0x410] & 0xFF;
else else
AsciiCode = AsciiCode & 0xFF; AsciiCode = AsciiCode & 0xFF;
#else #else
AsciiCode = Text.GetChar( ptr ) & 0xFF; AsciiCode = aText.GetChar( ptr ) & 0xFF;
#endif #endif
ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description ptcar = graphic_fonte_shape[AsciiCode]; /* ptcar pointe la description
* du caractere a dessiner */ * du caractere a dessiner */
@ -469,7 +478,7 @@ void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor,
dx = k2 + ox; dx = k2 + ox;
dy = k1 + oy; dy = k1 + oy;
RotatePoint( &dx, &dy, orient ); RotatePoint( &dx, &dy, aOrient );
FctPlume( wxPoint( cX + dx, cY + dy ), plume ); FctPlume( wxPoint( cX + dx, cY + dy ), plume );
x0 = k2; x0 = k2;

View File

@ -26,7 +26,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w
Ki_PageDescr* Sheet = screen->m_CurrentSheetDesc; Ki_PageDescr* Sheet = screen->m_CurrentSheetDesc;
int ii, jj, xg, yg, ipas, gxpas, gypas; int ii, jj, xg, yg, ipas, gxpas, gypas;
wxPoint pos; wxPoint pos;
int refx, refy, Color; int refx, refy;
EDA_Colors Color;
wxString Line; wxString Line;
Ki_WorkSheetData* WsItem; Ki_WorkSheetData* WsItem;
int scale = m_InternalUnits / 1000; int scale = m_InternalUnits / 1000;
@ -240,8 +241,8 @@ void WinEDA_DrawFrame::TraceWorkSheet( wxDC* DC, BASE_SCREEN* screen, int line_w
break; break;
case WS_UPPER_SEGMENT: case WS_UPPER_SEGMENT:
case WS_LEFT_SEGMENT: case WS_LEFT_SEGMENT:
WS_MostUpperLine.m_Posy = WS_MostUpperLine.m_Posy =
WS_MostUpperLine.m_Endy = WS_MostUpperLine.m_Endy =
WS_MostLeftLine.m_Posy = STAMP_OY; WS_MostLeftLine.m_Posy = STAMP_OY;
pos.y = (refy - WsItem->m_Posy)* scale; pos.y = (refy - WsItem->m_Posy)* scale;
case WS_SEGMENT: case WS_SEGMENT:

View File

@ -16,7 +16,6 @@ set(CVPCB_SRCS
dialog_display_options.cpp dialog_display_options.cpp
displayframe.cpp displayframe.cpp
genequiv.cpp genequiv.cpp
# genorcad.cpp
init.cpp init.cpp
listboxes.cpp listboxes.cpp
listlib.cpp listlib.cpp
@ -41,6 +40,7 @@ set(CVPCB_EXTRA_SRCS
../pcbnew/class_mire.cpp ../pcbnew/class_mire.cpp
../pcbnew/class_module.cpp ../pcbnew/class_module.cpp
../pcbnew/class_pad.cpp ../pcbnew/class_pad.cpp
../pcbnew/class_pad_draw_functions.cpp
../pcbnew/class_pcb_text.cpp ../pcbnew/class_pcb_text.cpp
../pcbnew/class_text_mod.cpp ../pcbnew/class_text_mod.cpp
../pcbnew/class_track.cpp ../pcbnew/class_track.cpp

View File

@ -46,6 +46,7 @@ OBJECTS = $(TARGET).o \
class_board.o \ class_board.o \
class_module.o \ class_module.o \
class_pad.o \ class_pad.o \
class_pad_draw_functions.o\
class_text_mod.o \ class_text_mod.o \
class_edge_mod.o \ class_edge_mod.o \
class_equipot.o \ class_equipot.o \
@ -104,6 +105,9 @@ class_track.o: ../pcbnew/class_track.cpp
class_pad.o: ../pcbnew/class_pad.cpp class_pad.o: ../pcbnew/class_pad.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp
class_pad_draw_functions.o: ../pcbnew/class_pad_draw_functions.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp
class_module.o: ../pcbnew/class_module.cpp class_module.o: ../pcbnew/class_module.cpp
$(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp $(CXX) -c $(EDACPPFLAGS) -o $@ ../pcbnew/$*.cpp

View File

@ -316,7 +316,7 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
Text = wxT( "Sheet: " ) + m_SheetName; Text = wxT( "Sheet: " ) + m_SheetName;
DrawGraphicText( panel, DC, DrawGraphicText( panel, DC,
wxPoint( pos.x, pos.y - 8 ), txtcolor, wxPoint( pos.x, pos.y - 8 ), (EDA_Colors) txtcolor,
Text, TEXT_ORIENT_HORIZ, wxSize( m_SheetNameSize, m_SheetNameSize ), Text, TEXT_ORIENT_HORIZ, wxSize( m_SheetNameSize, m_SheetNameSize ),
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_BOTTOM, LineWidth ); GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_BOTTOM, LineWidth );
@ -328,7 +328,7 @@ void DrawSheetStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
Text = wxT( "File: " ) + m_FileName; Text = wxT( "File: " ) + m_FileName;
DrawGraphicText( panel, DC, DrawGraphicText( panel, DC,
wxPoint( pos.x, pos.y + m_Size.y + 4 ), wxPoint( pos.x, pos.y + m_Size.y + 4 ),
txtcolor, (EDA_Colors) txtcolor,
Text, TEXT_ORIENT_HORIZ, wxSize( m_FileNameSize, m_FileNameSize ), Text, TEXT_ORIENT_HORIZ, wxSize( m_FileNameSize, m_FileNameSize ),
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_TOP, LineWidth ); GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_TOP, LineWidth );

View File

@ -72,14 +72,15 @@ void Hierarchical_PIN_Sheet_Struct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, con
/********************************************************************************************/ /********************************************************************************************/
/* Routine de dessin des Labels type hierarchie */ /* Routine de dessin des Labels type hierarchie */
{ {
int side, txtcolor; int side;
EDA_Colors txtcolor;
int posx, tposx, posy, size2; int posx, tposx, posy, size2;
wxSize size; wxSize size;
int NbSegm, coord[20]; int NbSegm, coord[20];
int LineWidth = g_DrawMinimunLineWidth; int LineWidth = g_DrawMinimunLineWidth;
if( Color >= 0 ) if( Color >= 0 )
txtcolor = Color; txtcolor = (EDA_Colors)Color;
else else
txtcolor = ReturnLayerColor( m_Layer ); txtcolor = ReturnLayerColor( m_Layer );
GRSetDrawMode( DC, DrawMode ); GRSetDrawMode( DC, DrawMode );

View File

@ -244,7 +244,7 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel,
wxString PinText; wxString PinText;
int PinTextBarPos[256]; int PinTextBarPos[256];
int PinTextBarCount; int PinTextBarCount;
int NameColor, NumColor; EDA_Colors NameColor, NumColor;
int PinTxtLen; int PinTxtLen;
wxSize PinNameSize( m_PinNameSize, m_PinNameSize ); wxSize PinNameSize( m_PinNameSize, m_PinNameSize );
@ -257,8 +257,8 @@ void LibDrawPin::DrawPinTexts( WinEDA_DrawPanel* panel,
/* Get the num and name colors */ /* Get the num and name colors */
if( (Color < 0) && (m_Selected & IS_SELECTED) ) if( (Color < 0) && (m_Selected & IS_SELECTED) )
Color = g_ItemSelectetColor; Color = g_ItemSelectetColor;
NameColor = Color == -1 ? ReturnLayerColor( LAYER_PINNAM ) : Color; NameColor = (EDA_Colors) (Color == -1 ? ReturnLayerColor( LAYER_PINNAM ) : Color);
NumColor = Color == -1 ? ReturnLayerColor( LAYER_PINNUM ) : Color; NumColor = (EDA_Colors) (Color == -1 ? ReturnLayerColor( LAYER_PINNUM ) : Color);
/* Create the pin num string */ /* Create the pin num string */
ReturnPinStringNum( StringPinNum ); ReturnPinStringNum( StringPinNum );
@ -563,7 +563,7 @@ void LibDrawPin::PlotPinTexts( wxPoint& pin_pos,
wxString PinText; wxString PinText;
int PinTextBarPos[256]; int PinTextBarPos[256];
int PinTextBarCount; int PinTextBarCount;
int NameColor, NumColor; EDA_Colors NameColor, NumColor;
int PinTxtLen = 0; int PinTxtLen = 0;
wxSize PinNameSize = wxSize( m_PinNameSize, m_PinNameSize ); wxSize PinNameSize = wxSize( m_PinNameSize, m_PinNameSize );
wxSize PinNumSize = wxSize( m_PinNumSize, m_PinNumSize ); wxSize PinNumSize = wxSize( m_PinNumSize, m_PinNumSize );
@ -571,8 +571,8 @@ void LibDrawPin::PlotPinTexts( wxPoint& pin_pos,
&& g_PlotPSColorOpt; && g_PlotPSColorOpt;
/* Get the num and name colors */ /* Get the num and name colors */
NameColor = plot_color ? ReturnLayerColor( LAYER_PINNAM ) : -1; NameColor = (EDA_Colors) (plot_color ? ReturnLayerColor( LAYER_PINNAM ) : -1);
NumColor = plot_color ? ReturnLayerColor( LAYER_PINNUM ) : -1; NumColor = (EDA_Colors) (plot_color ? ReturnLayerColor( LAYER_PINNUM ) : -1);
/* Create the pin num string */ /* Create the pin num string */
ReturnPinStringNum( StringPinNum ); ReturnPinStringNum( StringPinNum );

View File

@ -123,11 +123,11 @@ void SCH_TEXT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset,
/* Texts type Comment (text on layer "NOTE") have 4 directions, and the Text origin is the first letter /* Texts type Comment (text on layer "NOTE") have 4 directions, and the Text origin is the first letter
*/ */
{ {
int color; EDA_Colors color;
int width = MAX( m_Width, g_DrawMinimunLineWidth ); int width = MAX( m_Width, g_DrawMinimunLineWidth );
if( Color >= 0 ) if( Color >= 0 )
color = Color; color = (EDA_Colors)Color;
else else
color = ReturnLayerColor( m_Layer ); color = ReturnLayerColor( m_Layer );
GRSetDrawMode( DC, DrawMode ); GRSetDrawMode( DC, DrawMode );
@ -331,13 +331,14 @@ void SCH_HIERLABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offs
*/ */
{ {
int Poly[40]; int Poly[40];
int ii, color; int ii;
EDA_Colors color;
wxPoint AnchorPos = m_Pos + offset;; wxPoint AnchorPos = m_Pos + offset;;
int width = MAX( m_Width, g_DrawMinimunLineWidth ); int width = MAX( m_Width, g_DrawMinimunLineWidth );
if( Color >= 0 ) if( Color >= 0 )
color = Color; color = (EDA_Colors)Color;
else else
color = ReturnLayerColor( m_Layer ); color = ReturnLayerColor( m_Layer );
@ -464,13 +465,15 @@ void SCH_GLOBALLABEL::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& dr
*/ */
{ {
int Poly[20]; int Poly[20];
int offset, color, HalfSize; int offset;
EDA_Colors color;
int HalfSize;
wxPoint AnchorPos = m_Pos + draw_offset;; wxPoint AnchorPos = m_Pos + draw_offset;;
int width = MAX( m_Width, g_DrawMinimunLineWidth ); int width = MAX( m_Width, g_DrawMinimunLineWidth );
if( Color >= 0 ) if( Color >= 0 )
color = Color; color = (EDA_Colors)Color;
else else
color = ReturnLayerColor( m_Layer ); color = ReturnLayerColor( m_Layer );

View File

@ -161,7 +161,7 @@ void LibDrawText::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOff
* transformation matrix causes xy axes to be flipped. */ * transformation matrix causes xy axes to be flipped. */
int t1 = (aTransformMatrix[0][0] != 0) ^ (m_Horiz != 0); int t1 = (aTransformMatrix[0][0] != 0) ^ (m_Horiz != 0);
DrawGraphicText( aPanel, aDC, pos1, color, m_Text, DrawGraphicText( aPanel, aDC, pos1, (EDA_Colors) color, m_Text,
t1 ? TEXT_ORIENT_HORIZ : TEXT_ORIENT_VERT, t1 ? TEXT_ORIENT_HORIZ : TEXT_ORIENT_VERT,
m_Size, m_Size,
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, linewidth ); GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, linewidth );
@ -337,7 +337,7 @@ void LibDrawField::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aOf
wxString* text = aData ? (wxString*) aData : &m_Text; wxString* text = aData ? (wxString*) aData : &m_Text;
GRSetDrawMode( aDC, aDrawMode ); GRSetDrawMode( aDC, aDrawMode );
DrawGraphicText( aPanel, aDC, text_pos, DrawGraphicText( aPanel, aDC, text_pos,
color, text->GetData(), (EDA_Colors) color, text->GetData(),
m_Orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, m_Orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ,
m_Size, m_Size,
m_HJustify, m_VJustify, linewidth ); m_HJustify, m_VJustify, linewidth );

View File

@ -418,12 +418,12 @@ void SeedLayers()
} }
/*******************************/ /***************************************/
int ReturnLayerColor( int Layer ) EDA_Colors ReturnLayerColor( int Layer )
/*******************************/ /****************************************/
{ {
if( g_LayerDescr.Flags == 0 ) if( g_LayerDescr.Flags == 0 )
return g_LayerDescr.LayerColor[Layer]; return (EDA_Colors) g_LayerDescr.LayerColor[Layer];
else else
return g_LayerDescr.CommonColor; return (EDA_Colors) g_LayerDescr.CommonColor;
} }

View File

@ -249,8 +249,8 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel,
* DrawMode: mode de trace * DrawMode: mode de trace
*/ */
{ {
int orient, color; int orient;
EDA_Colors color;
wxPoint pos; /* Position des textes */ wxPoint pos; /* Position des textes */
SCH_COMPONENT* DrawLibItem = (SCH_COMPONENT*) m_Parent; SCH_COMPONENT* DrawLibItem = (SCH_COMPONENT*) m_Parent;
int hjustify, vjustify; int hjustify, vjustify;
@ -304,7 +304,7 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel,
if( !m_AddExtraText || (m_FieldId != REFERENCE) ) if( !m_AddExtraText || (m_FieldId != REFERENCE) )
{ {
DrawGraphicText( panel, DC, pos, color, m_Text.GetData(), DrawGraphicText( panel, DC, pos, color, m_Text,
orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ, orient ? TEXT_ORIENT_VERT : TEXT_ORIENT_HORIZ,
m_Size, m_Size,
hjustify, vjustify, LineWidth ); hjustify, vjustify, LineWidth );

View File

@ -131,7 +131,7 @@ static void ShowMoveField( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field ) void WinEDA_LibeditFrame::PlaceField( wxDC* DC, LibDrawField* Field )
/*******************************************************************/ /*******************************************************************/
{ {
int color; EDA_Colors color;
if( Field == NULL ) if( Field == NULL )
return; return;
@ -183,7 +183,7 @@ void WinEDA_LibeditFrame::EditField( wxDC* DC, LibDrawField* Field )
{ {
wxString Text; wxString Text;
wxString title; wxString title;
int color; EDA_Colors color;
int LineWidth = MAX( Field->m_Width, g_DrawMinimunLineWidth ); int LineWidth = MAX( Field->m_Width, g_DrawMinimunLineWidth );
if( Field == NULL ) if( Field == NULL )
@ -253,7 +253,7 @@ void WinEDA_LibeditFrame::RotateField( wxDC* DC, LibDrawField* Field )
* sinon Modif du champ pointe par la souris * sinon Modif du champ pointe par la souris
*/ */
{ {
int color; EDA_Colors color;
if( Field == NULL ) if( Field == NULL )
return; return;

View File

@ -183,7 +183,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem )
LibEDA_BaseStruct* DEntry; LibEDA_BaseStruct* DEntry;
EDA_LibComponentStruct* Entry; EDA_LibComponentStruct* Entry;
int TransMat[2][2], Multi, convert; int TransMat[2][2], Multi, convert;
int CharColor = -1; EDA_Colors CharColor = UNSPECIFIED_COLOR;
wxPoint pos; wxPoint pos;
bool draw_bgfill = false; bool draw_bgfill = false;
@ -377,7 +377,8 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem,
wxPoint textpos; /* Position des textes */ wxPoint textpos; /* Position des textes */
SCH_CMP_FIELD* field = DrawLibItem->GetField( FieldNumber ); SCH_CMP_FIELD* field = DrawLibItem->GetField( FieldNumber );
int hjustify, vjustify; int hjustify, vjustify;
int orient, color = -1; int orient;
EDA_Colors color = UNSPECIFIED_COLOR;
if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt ) if( (g_PlotFormat == PLOT_FORMAT_POST) && g_PlotPSColorOpt )
color = ReturnLayerColor( field->GetLayer() ); color = ReturnLayerColor( field->GetLayer() );
@ -454,7 +455,7 @@ static void PlotPinSymbol( const wxPoint & pos, int len, int orient, int Shape )
*/ */
{ {
int MapX1, MapY1, x1, y1; int MapX1, MapY1, x1, y1;
int color; EDA_Colors color = UNSPECIFIED_COLOR;
color = ReturnLayerColor( LAYER_PIN ); color = ReturnLayerColor( LAYER_PIN );
@ -567,7 +568,7 @@ void PlotTextStruct( EDA_BaseStruct* Struct )
int pX, pY, Shape = 0, Orient = 0, offset; int pX, pY, Shape = 0, Orient = 0, offset;
wxSize Size; wxSize Size;
wxString Text; wxString Text;
int color = -1; EDA_Colors color = UNSPECIFIED_COLOR;
switch( Struct->Type() ) switch( Struct->Type() )
{ {
@ -680,12 +681,13 @@ void PlotTextStruct( EDA_BaseStruct* Struct )
} }
/***********************************************************/ /***********************************************************************/
static void PlotSheetLabelStruct( Hierarchical_PIN_Sheet_Struct* Struct ) static void PlotSheetLabelStruct( Hierarchical_PIN_Sheet_Struct* Struct )
/***********************************************************/ /***********************************************************************/
/* Routine de dessin des Sheet Labels type hierarchie */ /* Routine de dessin des Sheet Labels type hierarchie */
{ {
int side, txtcolor = -1; int side;
EDA_Colors txtcolor = UNSPECIFIED_COLOR;
int posx, tposx, posy, size, size2; int posx, tposx, posy, size, size2;
int coord[16]; int coord[16];
@ -760,7 +762,7 @@ void PlotSheetStruct( DrawSheetStruct* Struct )
/* Routine de dessin du bloc type hierarchie */ /* Routine de dessin du bloc type hierarchie */
{ {
Hierarchical_PIN_Sheet_Struct* SheetLabelStruct; Hierarchical_PIN_Sheet_Struct* SheetLabelStruct;
int txtcolor = -1; EDA_Colors txtcolor = UNSPECIFIED_COLOR;
wxSize size; wxSize size;
wxString Text; wxString Text;
wxPoint pos; wxPoint pos;

View File

@ -197,7 +197,7 @@ void RedrawOneStruct(WinEDA_DrawPanel * panel, wxDC * DC, SCH_ITEM *Struct, int
/* EELAYER.CPP */ /* EELAYER.CPP */
/**************/ /**************/
void SeedLayers(); void SeedLayers();
int ReturnLayerColor(int Layer); EDA_Colors ReturnLayerColor(int Layer);
void DisplayColorSetupFrame(WinEDA_DrawFrame * parent, const wxPoint & pos); void DisplayColorSetupFrame(WinEDA_DrawFrame * parent, const wxPoint & pos);
/*************/ /*************/

View File

@ -21,7 +21,7 @@ void Draw_Track_Buffer( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int draw_
int printmasklayer ) int printmasklayer )
/***************************************************************************************************/ /***************************************************************************************************/
/* Function to draw the tracks (i.e Sports or lines) in gerbview /* Function to draw the tracks (i.e Spots or lines) in gerbview
* Polygons are not handled here (there are in Pcb->m_Zone) * Polygons are not handled here (there are in Pcb->m_Zone)
* @param DC = device context to draw * @param DC = device context to draw
* @param Pcb = Board to draw (only Pcb->m_Track is used) * @param Pcb = Board to draw (only Pcb->m_Track is used)
@ -266,7 +266,7 @@ void Affiche_DCodes_Pistes( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb, int d
} }
DrawGraphicText( panel, DC, DrawGraphicText( panel, DC,
pos, g_DCodesColor, Line, pos, (EDA_Colors) g_DCodesColor, Line,
orient, wxSize( width, width ), orient, wxSize( width, width ),
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER ); GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
} }

View File

@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion
# include "config.h" # include "config.h"
(wxT(KICAD_SVN_VERSION)) (wxT(KICAD_SVN_VERSION))
# else # else
(wxT("(20081124-unstable)")) /* main program version */ (wxT("(20081214-unstable)")) /* main program version */
# endif # endif
#endif #endif
; ;
@ -20,7 +20,7 @@ COMMON_GLOBL wxString g_BuildAboutVersion
# include "config.h" # include "config.h"
(wxT(KICAD_ABOUT_VERSION)) (wxT(KICAD_ABOUT_VERSION))
# else # else
(wxT("(20081124-unstable)")) /* svn date & rev (normally overridden) */ (wxT("(20081214-unstable)")) /* svn date & rev (normally overridden) */
# endif # endif
#endif #endif
; ;

View File

@ -46,6 +46,7 @@ static inline int GetAlpha( int aColor )
enum EDA_Colors enum EDA_Colors
{ {
UNSPECIFIED_COLOR = -1,
BLACK = 0, BLACK = 0,
BLUE, BLUE,
GREEN, GREEN,

View File

@ -427,14 +427,37 @@ double round( double aNumber );
/**************/ /**************/
/* DRAWTXT.CPP */ /* DRAWTXT.CPP */
/**************/ /**************/
void DrawGraphicText( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& pos, /** Function DrawGraphicText
int mode_color, const wxString& Text, * Draw a graphic text (like module texts)
int orient, const wxSize& char_size, * @param aPanel = the current DrawPanel
int h_justify, int v_justify, int width = 0 ); * @param aPos = text position (according to h_justify, v_justify)
* @param aColor (enum EDA_Colors) = text color
* @param aText = text to draw
* @param aOrient = angle in 0.1 degree
* @param aSize = text size (size.x or size.y can be < 0 for mirrored texts)
* @param aH_justify = horizontal justification (Left, center, right)
* @param aV_justify = vertical justification (bottom, center, top)
* @param aWidth = line width (pen width) (default = 0)
* if width < 0 : draw segments in sketch mode, width = abs(width)
*/
void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* aDC,
const wxPoint& aPos, enum EDA_Colors aColor, const wxString& aText,
int aOrient, const wxSize& aSize, int aH_justify, int aV_justify, int aWidth = 0);
void PlotGraphicText( int format_plot, const wxPoint& Pos, int gcolor, /** Function PlotGraphicText
const wxString& Text, * same as DrawGraphicText, but plot graphic text insteed of draw it
int orient, const wxSize& Size, int h_justify, int v_justify ); * @param aFormat_plot = plot format (PLOT_FORMAT_POST, PLOT_FORMAT_HPGL, PLOT_FORMAT_GERBER)
* @param aPos = text position (according to aH_justify, aV_justify)
* @param aColor (enum EDA_Colors) = text color
* @param aText = text to draw
* @param aOrient = angle in 0.1 degree
* @param aSize = text size (size.x or size.y can be < 0 for mirrored texts)
* @param aH_justify = horizontal justification (Left, center, right)
* @param aV_justify = vertical justification (bottom, center, top)
*/
void PlotGraphicText( int aFormat_plot, const wxPoint& aPos, enum EDA_Colors aColor,
const wxString& aText,
int aOrient, const wxSize& aSize, int aH_justify, int aV_justify );
/***************/ /***************/
/* CONFIRM.CPP */ /* CONFIRM.CPP */

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-12-11 17:20+0100\n" "POT-Creation-Date: 2008-12-12 22:29+0100\n"
"PO-Revision-Date: 2008-12-11 18:52+0100\n" "PO-Revision-Date: 2008-12-12 22:31+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -24,7 +24,7 @@ msgstr ""
#: pcbnew/clean.cpp:180 #: pcbnew/clean.cpp:180
msgid "Delete unconnected tracks:" msgid "Delete unconnected tracks:"
msgstr "Suppression Pistes non connectées" msgstr "Suppression Pistes non connectées:"
#: pcbnew/clean.cpp:197 #: pcbnew/clean.cpp:197
msgid "ViaDef" msgid "ViaDef"
@ -1618,34 +1618,26 @@ msgid "Enable Auto Delete old Track"
msgstr "Autoriser l'effacement automatique des pistes" msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:457 #: pcbnew/pcbframe.cpp:457
msgid "Do not Show Zones"
msgstr "Ne pas montrer Zones"
#: pcbnew/pcbframe.cpp:457
msgid "Show Zones"
msgstr "Montrer Zones"
#: pcbnew/pcbframe.cpp:463
msgid "Show Pads Sketch mode" msgid "Show Pads Sketch mode"
msgstr "Afficher pastilles en contour" msgstr "Afficher pastilles en contour"
#: pcbnew/pcbframe.cpp:464 #: pcbnew/pcbframe.cpp:458
msgid "Show pads filled mode" msgid "Show pads filled mode"
msgstr "Afficher pastilles en mode plein" msgstr "Afficher pastilles en mode plein"
#: pcbnew/pcbframe.cpp:470 #: pcbnew/pcbframe.cpp:464
msgid "Show Tracks Sketch mode" msgid "Show Tracks Sketch mode"
msgstr "Afficher pistes en contour" msgstr "Afficher pistes en contour"
#: pcbnew/pcbframe.cpp:471 #: pcbnew/pcbframe.cpp:465
msgid "Show Tracks filled mode" msgid "Show Tracks filled mode"
msgstr "Afficher pistes en mode plein" msgstr "Afficher pistes en mode plein"
#: pcbnew/pcbframe.cpp:477 #: pcbnew/pcbframe.cpp:471
msgid "Normal Contrast Mode Display" msgid "Normal Contrast Mode Display"
msgstr "Mode d'affichage Contraste normal" msgstr "Mode d'affichage Contraste normal"
#: pcbnew/pcbframe.cpp:478 #: pcbnew/pcbframe.cpp:472
msgid "Hight Contrast Mode Display" msgid "Hight Contrast Mode Display"
msgstr "Mode d'affichage Haut Contraste" msgstr "Mode d'affichage Haut Contraste"
@ -2457,15 +2449,27 @@ msgstr "Montrer le chevelu du module pendant déplacement"
msgid "Enable Auto Del Track" msgid "Enable Auto Del Track"
msgstr "Autoriser l'effacement automatique des pistes" msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/tool_pcb.cpp:379 #: pcbnew/tool_pcb.cpp:374
msgid "Show filled areas in zones"
msgstr "Afficher les surfaces remplies dans les zones"
#: pcbnew/tool_pcb.cpp:377
msgid "Do not show filled areas in zones"
msgstr "Ne pas fficher les surfaces remplies dans les zones"
#: pcbnew/tool_pcb.cpp:380
msgid "Show outlines of filled areas only in zones"
msgstr "Afficher uniquement les contours des surfaces remplies dans les zones"
#: pcbnew/tool_pcb.cpp:385
msgid "Show Pads Sketch" msgid "Show Pads Sketch"
msgstr "Afficher pastilles en contour" msgstr "Afficher pastilles en contour"
#: pcbnew/tool_pcb.cpp:383 #: pcbnew/tool_pcb.cpp:389
msgid "Show Tracks Sketch" msgid "Show Tracks Sketch"
msgstr "Afficher Pistes en Contour" msgstr "Afficher Pistes en Contour"
#: pcbnew/tool_pcb.cpp:398 #: pcbnew/tool_pcb.cpp:404
msgid "" msgid ""
"Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n" "Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n"
" This is a experimental feature (under development)" " This is a experimental feature (under development)"
@ -2473,79 +2477,79 @@ msgstr ""
"Affiche/supprime le toolbar vertical auxiliaire (outils pour applications micro-ondes)\n" "Affiche/supprime le toolbar vertical auxiliaire (outils pour applications micro-ondes)\n"
"C'est un outil expérimental (en cours de développement)" "C'est un outil expérimental (en cours de développement)"
#: pcbnew/tool_pcb.cpp:428 #: pcbnew/tool_pcb.cpp:434
msgid "Net highlight" msgid "Net highlight"
msgstr "Surbrillance des équipotentielles" msgstr "Surbrillance des équipotentielles"
#: pcbnew/tool_pcb.cpp:433 #: pcbnew/tool_pcb.cpp:439
msgid "Display local ratsnest (pad or module)" msgid "Display local ratsnest (pad or module)"
msgstr "Afficher le chevelu local (pastilles ou modules)" msgstr "Afficher le chevelu local (pastilles ou modules)"
#: pcbnew/tool_pcb.cpp:439 #: pcbnew/tool_pcb.cpp:445
msgid "Add modules" msgid "Add modules"
msgstr "Addition de Modules" msgstr "Addition de Modules"
#: pcbnew/tool_pcb.cpp:443 #: pcbnew/tool_pcb.cpp:449
msgid "Add tracks and vias" msgid "Add tracks and vias"
msgstr "Ajouter pistes et vias" msgstr "Ajouter pistes et vias"
#: pcbnew/tool_pcb.cpp:447 #: pcbnew/tool_pcb.cpp:453
msgid "Add zones" msgid "Add zones"
msgstr "Addition de Zones" msgstr "Addition de Zones"
#: pcbnew/tool_pcb.cpp:452 #: pcbnew/tool_pcb.cpp:458
msgid "Add graphic line or polygon" msgid "Add graphic line or polygon"
msgstr "Addition de lignes ou polygones graphiques" msgstr "Addition de lignes ou polygones graphiques"
#: pcbnew/tool_pcb.cpp:456 #: pcbnew/tool_pcb.cpp:462
msgid "Add graphic circle" msgid "Add graphic circle"
msgstr "Addition de graphiques (Cercle)" msgstr "Addition de graphiques (Cercle)"
#: pcbnew/tool_pcb.cpp:460 #: pcbnew/tool_pcb.cpp:466
msgid "Add graphic arc" msgid "Add graphic arc"
msgstr "Addition de graphiques (Arc de Cercle)" msgstr "Addition de graphiques (Arc de Cercle)"
#: pcbnew/tool_pcb.cpp:464 #: pcbnew/tool_pcb.cpp:470
msgid "Add text" msgid "Add text"
msgstr "Ajout de Texte" msgstr "Ajout de Texte"
#: pcbnew/tool_pcb.cpp:469 #: pcbnew/tool_pcb.cpp:475
msgid "Add dimension" msgid "Add dimension"
msgstr "Ajout des cotes" msgstr "Ajout des cotes"
#: pcbnew/tool_pcb.cpp:473 #: pcbnew/tool_pcb.cpp:479
msgid "Add layer alignment target" msgid "Add layer alignment target"
msgstr "Ajouter Mire de superposition" msgstr "Ajouter Mire de superposition"
#: pcbnew/tool_pcb.cpp:478 #: pcbnew/tool_pcb.cpp:484
msgid "Delete items" msgid "Delete items"
msgstr "Suppression d'éléments" msgstr "Suppression d'éléments"
#: pcbnew/tool_pcb.cpp:483 #: pcbnew/tool_pcb.cpp:489
msgid "Offset adjust for drill and place files" msgid "Offset adjust for drill and place files"
msgstr "Ajuste offset pour fichier de perçage et placement" msgstr "Ajuste offset pour fichier de perçage et placement"
#: pcbnew/tool_pcb.cpp:511 #: pcbnew/tool_pcb.cpp:517
msgid "Create line of specified length for microwave applications" msgid "Create line of specified length for microwave applications"
msgstr "Creation de lignes de longueur spécifiée (pour applications micro-ondes)" msgstr "Creation de lignes de longueur spécifiée (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:517 #: pcbnew/tool_pcb.cpp:523
msgid "Create gap of specified length for microwave applications" msgid "Create gap of specified length for microwave applications"
msgstr "Creation de gaps de longueur spécifiée (pour applications micro-ondes)" msgstr "Creation de gaps de longueur spécifiée (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:525 #: pcbnew/tool_pcb.cpp:531
msgid "Create stub of specified length for microwave applications" msgid "Create stub of specified length for microwave applications"
msgstr "Creation de stub de longueur spécifiée (pour applications micro-ondes)" msgstr "Creation de stub de longueur spécifiée (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:531 #: pcbnew/tool_pcb.cpp:537
msgid "Create stub (arc) of specified length for microwave applications" msgid "Create stub (arc) of specified length for microwave applications"
msgstr "Creation de stub (arc) de longueur spécifiée (pour applications micro-ondes)" msgstr "Creation de stub (arc) de longueur spécifiée (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:538 #: pcbnew/tool_pcb.cpp:544
msgid "Create a polynomial shape for microwave applications" msgid "Create a polynomial shape for microwave applications"
msgstr "Creation de formes polynomiales (pour applications micro-ondes)" msgstr "Creation de formes polynomiales (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:579 #: pcbnew/tool_pcb.cpp:585
msgid "" msgid ""
"Auto track width: when starting on an existing track use its width\n" "Auto track width: when starting on an existing track use its width\n"
"otherwise, use current width setting" "otherwise, use current width setting"
@ -2553,19 +2557,19 @@ msgstr ""
"Largeur de piste automatique: si on démarre sur une piste existante, utiliser sa largeur\n" "Largeur de piste automatique: si on démarre sur une piste existante, utiliser sa largeur\n"
" sinon utiliser la largeur courante" " sinon utiliser la largeur courante"
#: pcbnew/tool_pcb.cpp:604 #: pcbnew/tool_pcb.cpp:610
msgid "Auto" msgid "Auto"
msgstr "Auto" msgstr "Auto"
#: pcbnew/tool_pcb.cpp:608 #: pcbnew/tool_pcb.cpp:614
msgid "Zoom " msgid "Zoom "
msgstr "Zoom " msgstr "Zoom "
#: pcbnew/tool_pcb.cpp:643 #: pcbnew/tool_pcb.cpp:649
msgid "User Grid" msgid "User Grid"
msgstr "Grille perso" msgstr "Grille perso"
#: pcbnew/tool_pcb.cpp:759 #: pcbnew/tool_pcb.cpp:765
msgid "+/- to switch" msgid "+/- to switch"
msgstr "+/- pour commuter" msgstr "+/- pour commuter"
@ -3392,7 +3396,7 @@ msgstr "Grille %.1f"
msgid "Grid %.3f" msgid "Grid %.3f"
msgstr "Grille %.3f" msgstr "Grille %.3f"
#: pcbnew/dialog_copper_zones.cpp:288 #: pcbnew/dialog_copper_zones.cpp:285
msgid "" msgid ""
"Error :\n" "Error :\n"
"you must choose a copper min thickness value bigger than 0.001 inch or 0.00254 mm)" "you must choose a copper min thickness value bigger than 0.001 inch or 0.00254 mm)"
@ -3400,7 +3404,7 @@ msgstr ""
"Erreur :\n" "Erreur :\n"
"vous devez choisir une valeur pour l'épaisseur de cuivre dans les freins thermiques plus grande que 0,001 pouce (ou 0,00254 mm)" "vous devez choisir une valeur pour l'épaisseur de cuivre dans les freins thermiques plus grande que 0,001 pouce (ou 0,00254 mm)"
#: pcbnew/dialog_copper_zones.cpp:313 #: pcbnew/dialog_copper_zones.cpp:308
msgid "" msgid ""
"Error :\n" "Error :\n"
"you must choose a copper bridge value for thermal reliefs bigger than the min zone thickness" "you must choose a copper bridge value for thermal reliefs bigger than the min zone thickness"
@ -3408,11 +3412,11 @@ msgstr ""
"Erreur :\n" "Erreur :\n"
"vous devez choisir une valeur pour l'épaisseur de cuivre dans les freins thermiques plus grande que l'épaisseur de cuivre minimum des zones" "vous devez choisir une valeur pour l'épaisseur de cuivre dans les freins thermiques plus grande que l'épaisseur de cuivre minimum des zones"
#: pcbnew/dialog_copper_zones.cpp:325 #: pcbnew/dialog_copper_zones.cpp:320
msgid "Error : you must choose a layer" msgid "Error : you must choose a layer"
msgstr "Erreur. Vous devez choisir une couche" msgstr "Erreur. Vous devez choisir une couche"
#: pcbnew/dialog_copper_zones.cpp:337 #: pcbnew/dialog_copper_zones.cpp:332
msgid "Error : you must choose a net name" msgid "Error : you must choose a net name"
msgstr "Erreur. Vous devez choisir une équipotentielle" msgstr "Erreur. Vous devez choisir une équipotentielle"
@ -4072,7 +4076,7 @@ msgid "Pen Number"
msgstr "Numéro de plume" msgstr "Numéro de plume"
#: pcbnew/dialog_gendrill.cpp:239 #: pcbnew/dialog_gendrill.cpp:239
#: pcbnew/dialog_general_options.cpp:376 #: pcbnew/dialog_general_options.cpp:385
msgid "Options:" msgid "Options:"
msgstr "Options :" msgstr "Options :"
@ -4282,96 +4286,96 @@ msgstr "Larg. piste: %s Diam Vias : %s"
msgid "Drc error, cancelled" msgid "Drc error, cancelled"
msgstr "Erreur DRC, annulation" msgstr "Erreur DRC, annulation"
#: pcbnew/dialog_general_options.cpp:288 #: pcbnew/dialog_general_options.cpp:297
msgid "No Display" msgid "No Display"
msgstr "Pas d'affichage" msgstr "Pas d'affichage"
#: pcbnew/dialog_general_options.cpp:291 #: pcbnew/dialog_general_options.cpp:300
msgid "Display Polar Coord" msgid "Display Polar Coord"
msgstr "Affichage coord Polaires" msgstr "Affichage coord Polaires"
#: pcbnew/dialog_general_options.cpp:300 #: pcbnew/dialog_general_options.cpp:309
msgid "millimeters" msgid "millimeters"
msgstr "millimètres" msgstr "millimètres"
#: pcbnew/dialog_general_options.cpp:302 #: pcbnew/dialog_general_options.cpp:311
msgid "Units" msgid "Units"
msgstr "Unités" msgstr "Unités"
#: pcbnew/dialog_general_options.cpp:309 #: pcbnew/dialog_general_options.cpp:318
msgid "Small" msgid "Small"
msgstr "Petit" msgstr "Petit"
#: pcbnew/dialog_general_options.cpp:310 #: pcbnew/dialog_general_options.cpp:319
msgid "Big" msgid "Big"
msgstr "Grand" msgstr "Grand"
#: pcbnew/dialog_general_options.cpp:312 #: pcbnew/dialog_general_options.cpp:321
msgid "Cursor" msgid "Cursor"
msgstr "Curseur" msgstr "Curseur"
#: pcbnew/dialog_general_options.cpp:324 #: pcbnew/dialog_general_options.cpp:333
msgid "Number of Layers:" msgid "Number of Layers:"
msgstr "Nombre de Couches:" msgstr "Nombre de Couches:"
#: pcbnew/dialog_general_options.cpp:340 #: pcbnew/dialog_general_options.cpp:349
msgid "Max Links:" msgid "Max Links:"
msgstr "Liens max:" msgstr "Liens max:"
#: pcbnew/dialog_general_options.cpp:356 #: pcbnew/dialog_general_options.cpp:365
msgid "Auto Save (minuts):" msgid "Auto Save (minuts):"
msgstr "Sauveg. Auto (min)" msgstr "Sauveg. Auto (min)"
#: pcbnew/dialog_general_options.cpp:385 #: pcbnew/dialog_general_options.cpp:394
msgid "Drc ON" msgid "Drc ON"
msgstr "Drc ACTIVE" msgstr "Drc ACTIVE"
#: pcbnew/dialog_general_options.cpp:394 #: pcbnew/dialog_general_options.cpp:403
msgid "Show Ratsnest" msgid "Show Ratsnest"
msgstr "Montrer le chevelu général" msgstr "Montrer le chevelu général"
#: pcbnew/dialog_general_options.cpp:401 #: pcbnew/dialog_general_options.cpp:410
msgid "Show Mod Ratsnest" msgid "Show Mod Ratsnest"
msgstr "Montrer le chevelu du module" msgstr "Montrer le chevelu du module"
#: pcbnew/dialog_general_options.cpp:408 #: pcbnew/dialog_general_options.cpp:417
msgid "Tracks Auto Del" msgid "Tracks Auto Del"
msgstr "Auto Supp. Pistes" msgstr "Auto Supp. Pistes"
#: pcbnew/dialog_general_options.cpp:415 #: pcbnew/dialog_general_options.cpp:424
msgid "Track only 45 degrees" msgid "Track only 45 degrees"
msgstr "Piste à 45° seulement" msgstr "Piste à 45° seulement"
#: pcbnew/dialog_general_options.cpp:422 #: pcbnew/dialog_general_options.cpp:431
msgid "Segments 45 Only" msgid "Segments 45 Only"
msgstr "Segments 45 seulement" msgstr "Segments 45 seulement"
#: pcbnew/dialog_general_options.cpp:429 #: pcbnew/dialog_general_options.cpp:438
msgid "Auto PAN" msgid "Auto PAN"
msgstr "Auto PAN" msgstr "Auto PAN"
#: pcbnew/dialog_general_options.cpp:437 #: pcbnew/dialog_general_options.cpp:446
msgid "Double Segm Track" msgid "Double Segm Track"
msgstr "2 segments pour piste" msgstr "2 segments pour piste"
#: pcbnew/dialog_general_options.cpp:450 #: pcbnew/dialog_general_options.cpp:459
#: pcbnew/dialog_general_options.cpp:465 #: pcbnew/dialog_general_options.cpp:474
msgid "When creating tracks" msgid "When creating tracks"
msgstr "En creation de pistes" msgstr "En creation de pistes"
#: pcbnew/dialog_general_options.cpp:453 #: pcbnew/dialog_general_options.cpp:462
msgid "Magnetic Pads" msgid "Magnetic Pads"
msgstr " Pads magnétiques" msgstr " Pads magnétiques"
#: pcbnew/dialog_general_options.cpp:460 #: pcbnew/dialog_general_options.cpp:469
msgid "control the capture of the pcb cursor when the mouse cursor enters a pad area" msgid "control the capture of the pcb cursor when the mouse cursor enters a pad area"
msgstr "Contrôle la capture du curseur pcb quand le curseuir souris est sur un pad" msgstr "Contrôle la capture du curseur pcb quand le curseuir souris est sur un pad"
#: pcbnew/dialog_general_options.cpp:468 #: pcbnew/dialog_general_options.cpp:477
msgid "Magnetic Tracks" msgid "Magnetic Tracks"
msgstr "Pistes Magnétiques" msgstr "Pistes Magnétiques"
#: pcbnew/dialog_general_options.cpp:475 #: pcbnew/dialog_general_options.cpp:484
msgid "control the capture of the pcb cursor when the mouse cursor enters a track" msgid "control the capture of the pcb cursor when the mouse cursor enters a track"
msgstr "Contrôle la capture du curseur pcb quand le curseuir souris est sur une piste" msgstr "Contrôle la capture du curseur pcb quand le curseuir souris est sur une piste"
@ -4533,60 +4537,48 @@ msgid "Others Options:"
msgstr "Autres Options:" msgstr "Autres Options:"
#: pcbnew/dialog_copper_zones_base.cpp:118 #: pcbnew/dialog_copper_zones_base.cpp:118
msgid "Show filled areas in sketch mode"
msgstr "Afficher les surfaces remplies en mode contour"
#: pcbnew/dialog_copper_zones_base.cpp:120
msgid ""
"If enabled, filled areas in is this zone will be displayed as non filled polygons.\n"
"If disabled, filled areas in is this zone will be displayed as \"solid\" areas (normal mode)."
msgstr ""
"Si activé, les surfaces remplies dans cette zone seront affichées comme des polygones non remplis.\n"
"Si désactivé, les surfaces remplies dans cette zone seront affichées comme des surfaces \"solides\"."
#: pcbnew/dialog_copper_zones_base.cpp:124
msgid "Zone clearance value" msgid "Zone clearance value"
msgstr "Valeur isolation zone" msgstr "Valeur isolation zone"
#: pcbnew/dialog_copper_zones_base.cpp:131 #: pcbnew/dialog_copper_zones_base.cpp:125
msgid "Zone min thickness value" msgid "Zone min thickness value"
msgstr "Valeur épaisseur min pour zone" msgstr "Valeur épaisseur min pour zone"
#: pcbnew/dialog_copper_zones_base.cpp:136 #: pcbnew/dialog_copper_zones_base.cpp:130
msgid "Value of minimun thickness of filled areas" msgid "Value of minimun thickness of filled areas"
msgstr "Valeur de l'épaisseur minimum des zones remplies" msgstr "Valeur de l'épaisseur minimum des zones remplies"
#: pcbnew/dialog_copper_zones_base.cpp:156 #: pcbnew/dialog_copper_zones_base.cpp:150
msgid "Export Setup to others zones" msgid "Export Setup to others zones"
msgstr "Exporter options vers autres zones" msgstr "Exporter options vers autres zones"
#: pcbnew/dialog_copper_zones_base.cpp:157 #: pcbnew/dialog_copper_zones_base.cpp:152
msgid "Export this zone setup to all others copper zones" msgid "Export this zone setup to all others copper zones"
msgstr "Exporter ces options vers les autres zones de cuivre" msgstr "Exporter ces options vers les autres zones de cuivre"
#: pcbnew/dialog_copper_zones_base.cpp:161 #: pcbnew/dialog_copper_zones_base.cpp:156
#: pcbnew/dialog_pad_properties_base.cpp:91 #: pcbnew/dialog_pad_properties_base.cpp:91
#: pcbnew/zone_filling_deprecated_algorithm.cpp:310 #: pcbnew/zone_filling_deprecated_algorithm.cpp:310
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
#: pcbnew/dialog_copper_zones_base.cpp:172 #: pcbnew/dialog_copper_zones_base.cpp:171
msgid "Nets Display Options:" msgid "Nets Display Options:"
msgstr "Options d'Affichage des Nets" msgstr "Options d'Affichage des Nets"
#: pcbnew/dialog_copper_zones_base.cpp:174 #: pcbnew/dialog_copper_zones_base.cpp:173
msgid "Alphabetic" msgid "Alphabetic"
msgstr "Alphabetique" msgstr "Alphabetique"
#: pcbnew/dialog_copper_zones_base.cpp:174 #: pcbnew/dialog_copper_zones_base.cpp:173
msgid "Advanced" msgid "Advanced"
msgstr "Avancé" msgstr "Avancé"
#: pcbnew/dialog_copper_zones_base.cpp:176 #: pcbnew/dialog_copper_zones_base.cpp:175
msgid "Net sorting:" msgid "Net sorting:"
msgstr "Tri des Equipotentielles:" msgstr "Tri des Equipotentielles:"
#: pcbnew/dialog_copper_zones_base.cpp:178 #: pcbnew/dialog_copper_zones_base.cpp:177
msgid "" msgid ""
"Nets can be sorted:\n" "Nets can be sorted:\n"
"By alphabetic order\n" "By alphabetic order\n"
@ -4596,11 +4588,11 @@ msgstr ""
"Paur ordre alphabétique\n" "Paur ordre alphabétique\n"
"Par nombre de pads dans les équipotentielles (avancé)" "Par nombre de pads dans les équipotentielles (avancé)"
#: pcbnew/dialog_copper_zones_base.cpp:182 #: pcbnew/dialog_copper_zones_base.cpp:181
msgid "Filter" msgid "Filter"
msgstr "Filtre" msgstr "Filtre"
#: pcbnew/dialog_copper_zones_base.cpp:187 #: pcbnew/dialog_copper_zones_base.cpp:186
msgid "" msgid ""
"Pattern in advanced mode, to filter net names in list\n" "Pattern in advanced mode, to filter net names in list\n"
"Net names matching this pattern are not displayed" "Net names matching this pattern are not displayed"
@ -6402,11 +6394,11 @@ msgstr "Ajout Composant"
msgid "Add Wire" msgid "Add Wire"
msgstr "Ajouter Fils" msgstr "Ajouter Fils"
#: eeschema/libarch.cpp:66 #: eeschema/libarch.cpp:68
msgid "Failed to create archive lib file " msgid "Failed to create archive lib file "
msgstr "Impossible de créer le fichier librairie archive " msgstr "Impossible de créer le fichier librairie archive "
#: eeschema/libarch.cpp:73 #: eeschema/libarch.cpp:75
msgid "Failed to create doc lib file " msgid "Failed to create doc lib file "
msgstr "Impossible de créer le fichier lib document" msgstr "Impossible de créer le fichier lib document"
@ -6511,7 +6503,7 @@ msgstr "Oriente Composant"
msgid "Footprint " msgid "Footprint "
msgstr "Empreinte: " msgstr "Empreinte: "
#: eeschema/onrightclick.cpp:322 #: eeschema/onrightclick.cpp:323
#, c-format #, c-format
msgid "Unit %d %c" msgid "Unit %d %c"
msgstr "Unité %d %c" msgstr "Unité %d %c"
@ -10426,15 +10418,15 @@ msgstr "Texte Module invisible"
msgid "Anchors" msgid "Anchors"
msgstr "Ancres" msgstr "Ancres"
#: pcbnew/set_color.h:432 #: pcbnew/set_color.h:423
msgid "Show Noconnect" msgid "Show Noconnect"
msgstr "Montrer Non Conn" msgstr "Montrer Non Conn"
#: pcbnew/set_color.h:441 #: pcbnew/set_color.h:432
msgid "Show Modules Cmp" msgid "Show Modules Cmp"
msgstr "Afficher Modules Cmp" msgstr "Afficher Modules Cmp"
#: pcbnew/set_color.h:450 #: pcbnew/set_color.h:441
msgid "Show Modules Cu" msgid "Show Modules Cu"
msgstr "Afficher Modules Cu" msgstr "Afficher Modules Cu"
@ -10474,7 +10466,7 @@ msgstr "Type Err(%d): <b>%s</b><ul><li> %s: %s </li><li> %s: %s </li></ul>"
msgid "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>" msgid "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>"
msgstr "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>" msgstr "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>"
#: pcbnew/dialog_copper_zones_base.h:101 #: pcbnew/dialog_copper_zones_base.h:99
msgid "Fill Zones Options" msgid "Fill Zones Options"
msgstr "Options de Remplissage de Zone" msgstr "Options de Remplissage de Zone"
@ -10798,6 +10790,20 @@ msgstr "Imprimer"
msgid "Create SVG file" msgid "Create SVG file"
msgstr "Créer Fichier SVG" msgstr "Créer Fichier SVG"
#~ msgid "Do not Show Zones"
#~ msgstr "Ne pas montrer Zones"
#~ msgid "Show Zones"
#~ msgstr "Montrer Zones"
#~ msgid ""
#~ "If enabled, filled areas in is this zone will be displayed as non filled "
#~ "polygons.\n"
#~ "If disabled, filled areas in is this zone will be displayed as \"solid\" "
#~ "areas (normal mode)."
#~ msgstr ""
#~ "Si activé, les surfaces remplies dans cette zone seront affichées comme "
#~ "des polygones non remplis.\n"
#~ "Si désactivé, les surfaces remplies dans cette zone seront affichées "
#~ "comme des surfaces \"solides\"."
#~ msgid "grid user" #~ msgid "grid user"
#~ msgstr "grille user" #~ msgstr "grille user"

View File

@ -28,6 +28,7 @@ set(PCBNEW_SRCS
class_mire.cpp class_mire.cpp
class_module.cpp class_module.cpp
class_pad.cpp class_pad.cpp
class_pad_draw_functions.cpp
classpcb.cpp classpcb.cpp
class_pcb_text.cpp class_pcb_text.cpp
class_text_mod.cpp class_text_mod.cpp

View File

@ -32,7 +32,7 @@ void Affiche_Infos_Equipot( int netcode, WinEDA_BasePcbFrame* frame )
equipot = frame->m_Pcb->FindNet( netcode ); equipot = frame->m_Pcb->FindNet( netcode );
if( equipot ) if( equipot )
Affiche_1_Parametre( frame, 1, _( "Net Name" ), equipot->m_Netname, RED ); Affiche_1_Parametre( frame, 1, _( "Net Name" ), equipot->GetNetname(), RED );
else else
Affiche_1_Parametre( frame, 1, _( "No Net (not connected)" ), wxEmptyString, RED ); Affiche_1_Parametre( frame, 1, _( "No Net (not connected)" ), wxEmptyString, RED );

View File

@ -835,7 +835,7 @@ EQUIPOT* BOARD::FindNet( const wxString & aNetname ) const
{ {
for( EQUIPOT* net = m_Equipots; net; net=net->Next() ) for( EQUIPOT* net = m_Equipots; net; net=net->Next() )
{ {
if( net->m_Netname == aNetname ) if( net->GetNetname() == aNetname )
return net; return net;
} }
} }
@ -882,7 +882,7 @@ int s_SortByNames(const void * ptr1, const void * ptr2)
{ {
EQUIPOT* item1 = * (EQUIPOT**) ptr1; EQUIPOT* item1 = * (EQUIPOT**) ptr1;
EQUIPOT* item2 = * (EQUIPOT**) ptr2; EQUIPOT* item2 = * (EQUIPOT**) ptr2;
return item1->m_Netname.CmpNoCase(item2->m_Netname); return item1->GetNetname().CmpNoCase(item2->GetNetname());
} }
// Sort nets by decreasing pad count // Sort nets by decreasing pad count
@ -892,7 +892,7 @@ int s_SortByNodes(const void * ptr1, const void * ptr2)
EQUIPOT* item2 = * (EQUIPOT**) ptr2; EQUIPOT* item2 = * (EQUIPOT**) ptr2;
if ( (item1->m_NbNodes - item2->m_NbNodes) != 0 ) if ( (item1->m_NbNodes - item2->m_NbNodes) != 0 )
return - (item1->m_NbNodes - item2->m_NbNodes); return - (item1->m_NbNodes - item2->m_NbNodes);
return item1->m_Netname.CmpNoCase(item2->m_Netname); return item1->GetNetname().CmpNoCase(item2->GetNetname());
} }
@ -912,7 +912,7 @@ int BOARD::ReturnSortedNetnamesList( wxArrayString & aNames, const int aSort_Typ
/* count items to list and sort */ /* count items to list and sort */
for( net = m_Equipots; net; net=net->Next() ) for( net = m_Equipots; net; net=net->Next() )
{ {
if ( net->m_Netname.IsEmpty() ) continue; if ( net->GetNetname().IsEmpty() ) continue;
NetCount++; NetCount++;
} }
@ -922,7 +922,7 @@ int BOARD::ReturnSortedNetnamesList( wxArrayString & aNames, const int aSort_Typ
EQUIPOT* * net_ptr_list = (EQUIPOT* *) MyMalloc( NetCount * sizeof(* net_ptr_list) ); EQUIPOT* * net_ptr_list = (EQUIPOT* *) MyMalloc( NetCount * sizeof(* net_ptr_list) );
for( ii = 0, net = m_Equipots; net; net=net->Next() ) for( ii = 0, net = m_Equipots; net; net=net->Next() )
{ {
if ( net->m_Netname.IsEmpty() ) continue; if ( net->GetNetname().IsEmpty() ) continue;
net_ptr_list[ii] = net; net_ptr_list[ii] = net;
ii++; ii++;
} }
@ -945,7 +945,7 @@ int BOARD::ReturnSortedNetnamesList( wxArrayString & aNames, const int aSort_Typ
for( ii = 0; ii < NetCount; ii++ ) for( ii = 0; ii < NetCount; ii++ )
{ {
net = net_ptr_list[ii]; net = net_ptr_list[ii];
aNames.Add(net->m_Netname); aNames.Add(net->GetNetname());
} }
MyFree(net_ptr_list); MyFree(net_ptr_list);

View File

@ -56,7 +56,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
switch( item->Type() ) switch( item->Type() )
{ {
case TYPE_EQUIPOT: case TYPE_EQUIPOT:
text << _( "Net" ) << ( (EQUIPOT*) item )->m_Netname << wxT( " " ) << text << _( "Net" ) << ( (EQUIPOT*) item )->GetNetname() << wxT( " " ) <<
( (EQUIPOT*) item )->GetNet(); ( (EQUIPOT*) item )->GetNet();
break; break;
@ -130,7 +130,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
net = aPcb->FindNet( ((TRACK*)item)->GetNet() ); net = aPcb->FindNet( ((TRACK*)item)->GetNet() );
if( net ) if( net )
{ {
text << wxT( " [" ) << net->m_Netname << wxT( "]" ); text << wxT( " [" ) << net->GetNetname() << wxT( "]" );
} }
text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim() text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim()
<< wxT(" ") << _("Net:") << ((TRACK*)item)->GetNet() << wxT(" ") << _("Net:") << ((TRACK*)item)->GetNet()
@ -160,7 +160,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
net = aPcb->FindNet( ( (ZONE_CONTAINER*) item )->GetNet() ); net = aPcb->FindNet( ( (ZONE_CONTAINER*) item )->GetNet() );
if( net ) if( net )
{ {
text << wxT( " [" ) << net->m_Netname << wxT( "]" ); text << wxT( " [" ) << net->GetNetname() << wxT( "]" );
} }
} }
else // A netcode < 0 is an error flag (Netname not found or area not initialised) else // A netcode < 0 is an error flag (Netname not found or area not initialised)
@ -182,7 +182,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
net = aPcb->FindNet( ( (SEGZONE*) item )->GetNet() ); net = aPcb->FindNet( ( (SEGZONE*) item )->GetNet() );
if( net ) if( net )
{ {
text << wxT( " [" ) << net->m_Netname << wxT( "]" ); text << wxT( " [" ) << net->GetNetname() << wxT( "]" );
} }
text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim(); text << _( " on " ) << aPcb->GetLayerName( item->GetLayer() ).Trim();
break; break;
@ -202,7 +202,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
net = aPcb->FindNet( via->GetNet() ); net = aPcb->FindNet( via->GetNet() );
if( net ) if( net )
{ {
text << wxT( " [" ) << net->m_Netname << wxT( "]" ); text << wxT( " [" ) << net->GetNetname() << wxT( "]" );
} }
text << wxChar(' ') << _("Net:") << via->GetNet(); text << wxChar(' ') << _("Net:") << via->GetNet();

View File

@ -26,7 +26,7 @@ EQUIPOT::EQUIPOT( BOARD_ITEM* aParent ) :
BOARD_ITEM( aParent, TYPE_EQUIPOT ) BOARD_ITEM( aParent, TYPE_EQUIPOT )
{ {
SetNet( 0 ); SetNet( 0 );
m_NbNodes = m_NbLink = m_NbNoconn = 0; m_NbNodes = m_NbLink = m_NbNoconn = 0;
m_Masque_Layer = 0; m_Masque_Layer = 0;
m_Masque_Plan = 0; m_Masque_Plan = 0;
m_ForceWidth = 0; m_ForceWidth = 0;
@ -44,15 +44,16 @@ EQUIPOT::~EQUIPOT()
} }
wxPoint& EQUIPOT::GetPosition() wxPoint& EQUIPOT::GetPosition()
{ {
static wxPoint dummy; static wxPoint dummy;
return dummy; return dummy;
} }
/*********************************************************/ /*********************************************************/
int EQUIPOT:: ReadEquipotDescr( FILE* File, int* LineNum ) int EQUIPOT:: ReadDescr( FILE* File, int* LineNum )
/*********************************************************/ /*********************************************************/
/* Routine de lecture de 1 descr Equipotentielle. /* Routine de lecture de 1 descr Equipotentielle.
@ -90,31 +91,52 @@ int EQUIPOT:: ReadEquipotDescr( FILE* File, int* LineNum )
} }
/**************************************/
bool EQUIPOT::Save( FILE* aFile ) const bool EQUIPOT::Save( FILE* aFile ) const
/**************************************/
{ {
if( GetState( DELETED ) ) if( GetState( DELETED ) )
return true; return true;
bool rc = false; bool success = false;
fprintf( aFile, "$EQUIPOT\n" ); fprintf( aFile, "$EQUIPOT\n" );
fprintf( aFile, "Na %d \"%.16s\"\n", GetNet(), CONV_TO_UTF8( m_Netname ) ); fprintf( aFile, "Na %d \"%s\"\n", GetNet(), CONV_TO_UTF8( m_Netname ) );
fprintf( aFile, "St %s\n", "~" ); fprintf( aFile, "St %s\n", "~" );
if( m_ForceWidth ) if( m_ForceWidth )
fprintf( aFile, "Lw %d\n", m_ForceWidth ); fprintf( aFile, "Lw %d\n", m_ForceWidth );
if( fprintf( aFile, "$EndEQUIPOT\n" ) != sizeof("$EndEQUIPOT\n")-1 ) if( fprintf( aFile, "$EndEQUIPOT\n" ) != sizeof("$EndEQUIPOT\n") - 1 )
goto out; goto out;
rc = true; success = true;
out: out:
return rc; return success;
}
/**
* Function SetNetname
* @param const wxString : the new netname
*/
void EQUIPOT::SetNetname( const wxString & aNetname )
{
m_Netname = aNetname;
m_ShortNetname = m_Netname.AfterLast( '/' );
}
/** function Draw
* we actually could show a NET, simply show all the tracks and pads or net name on pad and vias
*/
void EQUIPOT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int aDrawMode, const wxPoint& offset )
{
} }
#if defined(DEBUG) #if defined(DEBUG)
/** /**
* Function Show * Function Show
* is used to output the object tree, currently for debugging only. * is used to output the object tree, currently for debugging only.
@ -126,9 +148,9 @@ void EQUIPOT::Show( int nestLevel, std::ostream& os )
{ {
// for now, make it look like XML: // for now, make it look like XML:
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
" name=\"" << m_Netname.mb_str() << '"' << " name=\"" << m_Netname.mb_str() << '"' <<
" netcode=\"" << GetNet() << "\"/>\n"; " netcode=\"" << GetNet() << "\"/>\n";
} }
#endif #endif

View File

@ -1,22 +1,21 @@
/*************************************************************************/ /*************************************************/
/* classe EQUIPOT: definition des elements relatifs aux equipotentielles */ /* classe EQUIPOT: Class to handle info on nets */
/*************************************************************************/ /*************************************************/
/* Representation des descriptions des equipotentielles */
class EQUIPOT : public BOARD_ITEM class EQUIPOT : public BOARD_ITEM
{ {
private: private:
int m_NetCode; // numero de code interne du net int m_NetCode; // this is a number equivalent to the net name
// Used for fast comparisons in rastnest and DRC computations.
wxString m_Netname; // Full net name like /mysheet/mysubsheet/vout used by eeschema
wxString m_ShortNetname; // short net name, like vout from /mysheet/mysubsheet/vout
public: public:
wxString m_Netname; // nom du net
int status; // no route, hight light... int status; // no route, hight light...
int m_NbNodes; // nombre de pads appartenant au net int m_NbNodes; // Pads count for this net
int m_NbLink; // nombre de chevelus int m_NbLink; // Ratsnets count for this net
int m_NbNoconn; // nombre de chevelus actifs int m_NbNoconn; // Ratsnets remaining to route count
int m_Masque_Layer; // couches interdites (bit 0 = layer 0...) int m_Masque_Layer; // couches interdites (bit 0 = layer 0...)
int m_Masque_Plan; // couches mises en plan de cuivre int m_Masque_Plan; // couches mises en plan de cuivre
int m_ForceWidth; // specific width (O = default width) int m_ForceWidth; // specific width (O = default width)
@ -41,7 +40,7 @@ public:
wxPoint& GetPosition(); wxPoint& GetPosition();
/* Readind and writing data on files */ /* Readind and writing data on files */
int ReadEquipotDescr( FILE* File, int* LineNum ); int ReadDescr( FILE* File, int* LineNum );
/** /**
* Function Save * Function Save
@ -52,11 +51,11 @@ public:
bool Save( FILE* aFile ) const; bool Save( FILE* aFile ) const;
/** function Draw
* @todo we actually could show a NET, simply show all the tracks and pads or net name on pad and vias
*/
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, void Draw( WinEDA_DrawPanel* panel, wxDC* DC,
int aDrawMode, const wxPoint& offset = ZeroOffset ) int aDrawMode, const wxPoint& offset = ZeroOffset );
{
// @todo we actually could show a NET, simply show all the tracks and pads
}
/** /**
@ -66,6 +65,23 @@ public:
int GetNet() const { return m_NetCode; } int GetNet() const { return m_NetCode; }
void SetNet( int aNetCode ) { m_NetCode = aNetCode; } void SetNet( int aNetCode ) { m_NetCode = aNetCode; }
/**
* Function GetNetname
* @return const wxString * , a pointer to the full netname
*/
wxString GetNetname() const { return m_Netname; }
/**
* Function GetShortNetname
* @return const wxString * , a pointer to the short netname
*/
wxString GetShortNetname() const { return m_ShortNetname; }
/**
* Function SetNetname
* @param const wxString : the new netname
*/
void SetNetname( const wxString & aNetname );
/** /**
* Function GetClass * Function GetClass

View File

@ -3,24 +3,12 @@
/************************************************/ /************************************************/
#include "fctsys.h" #include "fctsys.h"
#include "gr_basic.h"
#include "wxstruct.h"
#include "common.h" #include "common.h"
#include "pcbnew.h" #include "pcbnew.h"
#include "trigo.h" #include "trigo.h"
#include "id.h" // ID_TRACK_BUTT #include "id.h" // ID_TRACK_BUTT
#ifdef PCBNEW
#include "drag.h"
#endif
#ifdef CVPCB
#include "cvpcb.h"
#endif
#include "protos.h"
/*******************************/ /*******************************/
/* classe D_PAD : constructeur */ /* classe D_PAD : constructeur */
@ -30,7 +18,7 @@ D_PAD::D_PAD( MODULE* parent ) : BOARD_CONNECTED_ITEM( parent, TYPE_PAD )
{ {
m_NumPadName = 0; m_NumPadName = 0;
m_Masque_Layer = CUIVRE_LAYER; m_Masque_Layer = CUIVRE_LAYER;
m_DrillShape = PAD_CIRCLE; // Drill shape = circle m_DrillShape = PAD_CIRCLE; // Drill shape = circle
m_Size.x = m_Size.y = 500; m_Size.x = m_Size.y = 500;
@ -41,9 +29,9 @@ D_PAD::D_PAD( MODULE* parent ) : BOARD_CONNECTED_ITEM( parent, TYPE_PAD )
m_PadShape = PAD_CIRCLE; // forme CERCLE, PAD_RECT PAD_OVAL PAD_TRAPEZOID ou libre m_PadShape = PAD_CIRCLE; // forme CERCLE, PAD_RECT PAD_OVAL PAD_TRAPEZOID ou libre
m_Attribut = PAD_STANDARD; // NORMAL, PAD_SMD, PAD_CONN, Bit 7 = STACK m_Attribut = PAD_STANDARD; // NORMAL, PAD_SMD, PAD_CONN, Bit 7 = STACK
m_Orient = 0; // en 1/10 degres m_Orient = 0; // en 1/10 degres
SetSubRatsnest(0); SetSubRatsnest( 0 );
ComputeRayon(); ComputeRayon();
} }
@ -72,8 +60,8 @@ void D_PAD::ComputeRayon()
case PAD_RECT: case PAD_RECT:
case PAD_TRAPEZOID: case PAD_TRAPEZOID:
m_Rayon = (int) (sqrt( (double) m_Size.y * m_Size.y m_Rayon = (int) ( sqrt( (double) m_Size.y * m_Size.y
+ (double) m_Size.x * m_Size.x ) / 2); + (double) m_Size.x * m_Size.x ) / 2 );
break; break;
} }
} }
@ -87,10 +75,10 @@ void D_PAD::ComputeRayon()
EDA_Rect D_PAD::GetBoundingBox() EDA_Rect D_PAD::GetBoundingBox()
{ {
// Calculate area: // Calculate area:
ComputeRayon(); // calculate the radius of the area, considered as a circle ComputeRayon(); // calculate the radius of the area, considered as a circle
EDA_Rect area; EDA_Rect area;
area.SetOrigin(m_Pos); area.SetOrigin( m_Pos );
area.Inflate(m_Rayon, m_Rayon); area.Inflate( m_Rayon, m_Rayon );
return area; return area;
} }
@ -171,6 +159,18 @@ void D_PAD::SetPadName( const wxString& name )
m_Padname[ii] = 0; m_Padname[ii] = 0;
} }
/**************************************************/
void D_PAD::SetNetname( const wxString & aNetname )
/**************************************************/
/**
* Function SetNetname
* @param const wxString : the new netname
*/
{
m_Netname = aNetname;
m_ShortNetname = m_Netname.AfterLast( '/' );
}
/********************************/ /********************************/
void D_PAD::Copy( D_PAD* source ) void D_PAD::Copy( D_PAD* source )
@ -184,10 +184,10 @@ void D_PAD::Copy( D_PAD* source )
memcpy( m_Padname, source->m_Padname, sizeof(m_Padname) ); /* nom de la pastille */ memcpy( m_Padname, source->m_Padname, sizeof(m_Padname) ); /* nom de la pastille */
SetNet( source->GetNet() ); /* Numero de net pour comparaisons rapides */ SetNet( source->GetNet() ); /* Numero de net pour comparaisons rapides */
m_Drill = source->m_Drill; // Diametre de percage m_Drill = source->m_Drill; // Diametre de percage
m_DrillShape = source->m_DrillShape; m_DrillShape = source->m_DrillShape;
m_Offset = source->m_Offset; // Offset de la forme m_Offset = source->m_Offset; // Offset de la forme
m_Size = source->m_Size; // Dimension ( pour orient 0 ) m_Size = source->m_Size; // Dimension ( pour orient 0 )
m_DeltaSize = source->m_DeltaSize; // delta sur formes rectangle -> trapezes m_DeltaSize = source->m_DeltaSize; // delta sur formes rectangle -> trapezes
m_Pos0 = source->m_Pos0; // Coord relatives a l'ancre du pad en m_Pos0 = source->m_Pos0; // Coord relatives a l'ancre du pad en
// orientation 0 // orientation 0
@ -199,416 +199,7 @@ void D_PAD::Copy( D_PAD* source )
SetSubRatsnest( 0 ); SetSubRatsnest( 0 );
SetSubNet( 0 ); SetSubNet( 0 );
m_Netname = source->m_Netname; m_Netname = source->m_Netname;
} m_ShortNetname = source->m_ShortNetname;
/*******************************************************************************************/
void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& offset )
/*******************************************************************************************/
/** Draw a pad:
* @param DC = device context
* @param offset = draw offset
* @param draw_mode = mode: GR_OR, GR_XOR, GR_AND...
*/
{
int ii;
int color = 0;
int ux0, uy0,
dx, dx0, dy, dy0,
rotdx,
delta_cx, delta_cy,
xc, yc;
int angle;
wxPoint coord[4];
int zoom;
int fillpad = 0;
wxPoint shape_pos;
if ( m_Flags & DO_NOT_DRAW )
return;
wxASSERT( panel );
WinEDA_BasePcbFrame* frame = (WinEDA_BasePcbFrame*) panel->m_Parent;
PCB_SCREEN* screen = frame->GetScreen();
zoom = screen->GetZoom();
if( frame->m_DisplayPadFill == FILLED )
fillpad = 1;
#ifdef PCBNEW
if( m_Flags & IS_MOVED )
fillpad = 0;
#endif
if( m_Masque_Layer & CMP_LAYER )
color = g_PadCMPColor;
if( m_Masque_Layer & CUIVRE_LAYER )
color |= g_PadCUColor;
if( color == 0 ) /* Not on copper layer */
{
switch( m_Masque_Layer & ~ALL_CU_LAYERS )
{
case ADHESIVE_LAYER_CU:
color = g_DesignSettings.m_LayerColor[ADHESIVE_N_CU];
break;
case ADHESIVE_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[ADHESIVE_N_CMP];
break;
case SOLDERPASTE_LAYER_CU:
color = g_DesignSettings.m_LayerColor[SOLDERPASTE_N_CU];
break;
case SOLDERPASTE_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[SOLDERPASTE_N_CMP];
break;
case SILKSCREEN_LAYER_CU:
color = g_DesignSettings.m_LayerColor[SILKSCREEN_N_CU];
break;
case SILKSCREEN_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[SILKSCREEN_N_CMP];
break;
case SOLDERMASK_LAYER_CU:
color = g_DesignSettings.m_LayerColor[SOLDERMASK_N_CU];
break;
case SOLDERMASK_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[SOLDERMASK_N_CMP];
break;
case DRAW_LAYER:
color = g_DesignSettings.m_LayerColor[DRAW_N];
break;
case COMMENT_LAYER:
color = g_DesignSettings.m_LayerColor[COMMENT_N];
break;
case ECO1_LAYER:
color = g_DesignSettings.m_LayerColor[ECO1_N];
break;
case ECO2_LAYER:
color = g_DesignSettings.m_LayerColor[ECO2_N];
break;
case EDGE_LAYER:
color = g_DesignSettings.m_LayerColor[EDGE_N];
break;
default:
color = DARKGRAY;
break;
}
}
// if PAD_SMD pad and high contrast mode
if( (m_Attribut==PAD_SMD || m_Attribut==PAD_CONN) && DisplayOpt.ContrastModeDisplay )
{
// when routing tracks
if( frame && frame->m_ID_current_state == ID_TRACK_BUTT )
{
int routeTop = screen->m_Route_Layer_TOP;
int routeBot = screen->m_Route_Layer_BOTTOM;
// if routing between copper and component layers,
// or the current layer is one of said 2 external copper layers,
// then highlight only the current layer.
if( ((1<<routeTop) | (1<<routeBot)) == (CUIVRE_LAYER | CMP_LAYER)
|| ((1<<screen->m_Active_Layer) & (CUIVRE_LAYER | CMP_LAYER)) )
{
if( !IsOnLayer( screen->m_Active_Layer ) )
{
color &= ~MASKCOLOR;
color |= DARKDARKGRAY;
}
}
// else routing between an internal signal layer and some other layer.
// grey out all PAD_SMD pads not on current or the single selected
// external layer.
else if( !IsOnLayer( screen->m_Active_Layer )
&& !IsOnLayer( routeTop )
&& !IsOnLayer( routeBot ) )
{
color &= ~MASKCOLOR;
color |= DARKDARKGRAY;
}
}
// when not edting tracks, show PAD_SMD components not on active layer as greyed out
else
{
if( !IsOnLayer( screen->m_Active_Layer ) )
{
color &= ~MASKCOLOR;
color |= DARKDARKGRAY;
}
}
}
if( draw_mode & GR_SURBRILL )
{
if( draw_mode & GR_AND )
color &= ~HIGHT_LIGHT_FLAG;
else
color |= HIGHT_LIGHT_FLAG;
}
if( color & HIGHT_LIGHT_FLAG )
color = ColorRefs[color & MASKCOLOR].m_LightColor;
GRSetDrawMode( DC, draw_mode ); /* mode de trace */
/* calcul du centre des pads en coordonnees Ecran : */
shape_pos = ReturnShapePos();
ux0 = shape_pos.x - offset.x;
uy0 = shape_pos.y - offset.y;
xc = ux0;
yc = uy0;
/* le trace depend de la rotation de l'empreinte */
dx = dx0 = m_Size.x >> 1;
dy = dy0 = m_Size.y >> 1; /* demi dim dx et dy */
angle = m_Orient;
bool DisplayIsol = DisplayOpt.DisplayPadIsol;
if( ( m_Masque_Layer & ALL_CU_LAYERS ) == 0 )
DisplayIsol = FALSE;
switch( m_PadShape & 0x7F )
{
case PAD_CIRCLE:
if( fillpad )
GRFilledCircle( &panel->m_ClipBox, DC, xc, yc, dx, 0, color, color );
else
GRCircle( &panel->m_ClipBox, DC, xc, yc, dx, 0, color );
if( DisplayIsol )
{
GRCircle( &panel->m_ClipBox,
DC,
xc,
yc,
dx + g_DesignSettings.m_TrackClearence,
0,
color );
}
break;
case PAD_OVAL:
/* calcul de l'entraxe de l'ellipse */
if( dx > dy ) /* ellipse horizontale */
{
delta_cx = dx - dy;
delta_cy = 0;
rotdx = m_Size.y;
}
else /* ellipse verticale */
{
delta_cx = 0;
delta_cy = dy - dx;
rotdx = m_Size.x;
}
RotatePoint( &delta_cx, &delta_cy, angle );
if( fillpad )
{
GRFillCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
}
else
{
GRCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
}
/* Trace de la marge d'isolement */
if( DisplayIsol )
{
rotdx = rotdx + g_DesignSettings.m_TrackClearence + g_DesignSettings.m_TrackClearence;
GRCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
}
break;
case PAD_RECT:
case PAD_TRAPEZOID:
{
int ddx, ddy;
ddx = m_DeltaSize.x >> 1;
ddy = m_DeltaSize.y >> 1; /* demi dim dx et dy */
coord[0].x = -dx - ddy;
coord[0].y = +dy + ddx;
coord[1].x = -dx + ddy;
coord[1].y = -dy - ddx;
coord[2].x = +dx - ddy;
coord[2].y = -dy + ddx;
coord[3].x = +dx + ddy;
coord[3].y = +dy - ddx;
for( ii = 0; ii < 4; ii++ )
{
RotatePoint( &coord[ii].x, &coord[ii].y, angle );
coord[ii].x = coord[ii].x + ux0;
coord[ii].y = coord[ii].y + uy0;
}
GRClosedPoly( &panel->m_ClipBox, DC, 4, (int*) coord, fillpad, color, color );
if( DisplayIsol )
{
dx += g_DesignSettings.m_TrackClearence;
dy += g_DesignSettings.m_TrackClearence;
coord[0].x = -dx - ddy;
coord[0].y = dy + ddx;
coord[1].x = -dx + ddy;
coord[1].y = -dy - ddx;
coord[2].x = dx - ddy;
coord[2].y = -dy + ddx;
coord[3].x = dx + ddy;
coord[3].y = dy - ddx;
for( ii = 0; ii < 4; ii++ )
{
RotatePoint( &coord[ii].x, &coord[ii].y, angle );
coord[ii].x = coord[ii].x + ux0;
coord[ii].y = coord[ii].y + uy0;
}
GRClosedPoly( &panel->m_ClipBox, DC, 4, (int*) coord, 0, color, color );
}
}
break;
default:
break;
}
/* Draw the pad hole */
int cx0 = m_Pos.x - offset.x;
int cy0 = m_Pos.y - offset.y;
int hole = m_Drill.x >> 1;
if( fillpad && hole )
{
bool blackpenstate = false;
if ( g_IsPrinting )
{
blackpenstate = GetGRForceBlackPenState( );
GRForceBlackPen( false );
color = WHITE;
}
else
color = BLACK; // or DARKGRAY;
if( draw_mode != GR_XOR )
GRSetDrawMode( DC, GR_COPY );
else
GRSetDrawMode( DC, GR_XOR );
switch( m_DrillShape )
{
case PAD_CIRCLE:
if( (hole / zoom) > 1 ) /* draw hole if its size is enought */
GRFilledCircle( &panel->m_ClipBox, DC, cx0, cy0, hole, 0, color, color );
break;
case PAD_OVAL:
dx = m_Drill.x >> 1;
dy = m_Drill.y >> 1; /* demi dim dx et dy */
/* calcul de l'entraxe de l'ellipse */
if( m_Drill.x > m_Drill.y ) /* ellipse horizontale */
{
delta_cx = dx - dy; delta_cy = 0;
rotdx = m_Drill.y;
}
else /* ellipse verticale */
{
delta_cx = 0; delta_cy = dy - dx;
rotdx = m_Drill.x;
}
RotatePoint( &delta_cx, &delta_cy, angle );
GRFillCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
break;
default:
break;
}
if ( g_IsPrinting )
GRForceBlackPen( blackpenstate );
}
GRSetDrawMode( DC, draw_mode );
/* Trace du symbole "No connect" ( / ou \ ou croix en X) si necessaire : */
if( m_Netname.IsEmpty() && DisplayOpt.DisplayPadNoConn )
{
dx0 = MIN( dx0, dy0 );
int nc_color = BLUE;
if( m_Masque_Layer & CMP_LAYER ) /* Trace forme \ */
GRLine( &panel->m_ClipBox, DC, cx0 - dx0, cy0 - dx0,
cx0 + dx0, cy0 + dx0, 0, nc_color );
if( m_Masque_Layer & CUIVRE_LAYER ) /* Trace forme / */
GRLine( &panel->m_ClipBox, DC, cx0 + dx0, cy0 - dx0,
cx0 - dx0, cy0 + dx0, 0, nc_color );
}
/* Draw the pad number */
if( frame && !frame->m_DisplayPadNum )
return;
dx = MIN( m_Size.x, m_Size.y ); /* dx = text size */
if( (dx / zoom) > 12 ) /* size must be enought to draw 2 chars */
{
wxString buffer;
ReturnStringPadName( buffer );
dy = buffer.Len();
/* Draw text with an angle between -90 deg and + 90 deg */
NORMALIZE_ANGLE_90( angle );
if( dy < 2 )
dy = 2; /* text min size is 2 char */
dx = (dx * 9 ) / (dy * 13 ); /* Text size ajusted to pad size */
DrawGraphicText( panel, DC, wxPoint( ux0, uy0 ),
WHITE, buffer, angle, wxSize( dx, dx ),
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
}
} }
@ -668,9 +259,9 @@ int D_PAD::ReadDescr( FILE* File, int* LineNum )
PtLine++; PtLine++;
nn = sscanf( PtLine, " %s %d %d %d %d %d", nn = sscanf( PtLine, " %s %d %d %d %d %d",
BufCar, &m_Size.x, &m_Size.y, BufCar, &m_Size.x, &m_Size.y,
&m_DeltaSize.x, &m_DeltaSize.y, &m_DeltaSize.x, &m_DeltaSize.y,
&m_Orient ); &m_Orient );
ll = 0xFF & BufCar[0]; ll = 0xFF & BufCar[0];
@ -698,7 +289,7 @@ int D_PAD::ReadDescr( FILE* File, int* LineNum )
case 'D': case 'D':
BufCar[0] = 0; BufCar[0] = 0;
nn = sscanf( PtLine, "%d %d %d %s %d %d", &m_Drill.x, nn = sscanf( PtLine, "%d %d %d %s %d %d", &m_Drill.x,
&m_Offset.x, &m_Offset.y, BufCar, &dx, &dy ); &m_Offset.x, &m_Offset.y, BufCar, &dx, &dy );
m_Drill.y = m_Drill.x; m_Drill.y = m_Drill.x;
m_DrillShape = PAD_CIRCLE; m_DrillShape = PAD_CIRCLE;
@ -714,7 +305,7 @@ int D_PAD::ReadDescr( FILE* File, int* LineNum )
case 'A': case 'A':
nn = sscanf( PtLine, "%s %s %X", BufLine, BufCar, nn = sscanf( PtLine, "%s %s %X", BufLine, BufCar,
&m_Masque_Layer ); &m_Masque_Layer );
/* Contenu de BufCar non encore utilise ( reserve pour evolutions /* Contenu de BufCar non encore utilise ( reserve pour evolutions
* ulterieures */ * ulterieures */
@ -735,7 +326,7 @@ int D_PAD::ReadDescr( FILE* File, int* LineNum )
/* Lecture du netname */ /* Lecture du netname */
ReadDelimitedText( BufLine, PtLine, sizeof(BufLine) ); ReadDelimitedText( BufLine, PtLine, sizeof(BufLine) );
m_Netname = CONV_FROM_UTF8( StrPurge( BufLine ) ); SetNetname(CONV_FROM_UTF8( StrPurge( BufLine ) ));
break; break;
case 'P': case 'P':
@ -763,10 +354,10 @@ bool D_PAD::Save( FILE* aFile ) const
if( GetState( DELETED ) ) if( GetState( DELETED ) )
return true; return true;
bool rc = false; bool rc = false;
// check the return values for first and last fprints() in this function // check the return values for first and last fprints() in this function
if( fprintf( aFile, "$PAD\n" ) != sizeof("$PAD\n")-1 ) if( fprintf( aFile, "$PAD\n" ) != sizeof("$PAD\n") - 1 )
goto out; goto out;
switch( m_PadShape ) switch( m_PadShape )
@ -790,8 +381,8 @@ bool D_PAD::Save( FILE* aFile ) const
} }
fprintf( aFile, "Sh \"%.4s\" %c %d %d %d %d %d\n", fprintf( aFile, "Sh \"%.4s\" %c %d %d %d %d %d\n",
m_Padname, cshape, m_Size.x, m_Size.y, m_Padname, cshape, m_Size.x, m_Size.y,
m_DeltaSize.x, m_DeltaSize.y, m_Orient ); m_DeltaSize.x, m_DeltaSize.y, m_Orient );
fprintf( aFile, "Dr %d %d %d", m_Drill.x, m_Offset.x, m_Offset.y ); fprintf( aFile, "Dr %d %d %d", m_Drill.x, m_Offset.x, m_Offset.y );
if( m_DrillShape == PAD_OVAL ) if( m_DrillShape == PAD_OVAL )
@ -826,7 +417,7 @@ bool D_PAD::Save( FILE* aFile ) const
fprintf( aFile, "Po %d %d\n", m_Pos0.x, m_Pos0.y ); fprintf( aFile, "Po %d %d\n", m_Pos0.x, m_Pos0.y );
if( fprintf( aFile, "$EndPAD\n" ) != sizeof("$EndPAD\n")-1 ) if( fprintf( aFile, "$EndPAD\n" ) != sizeof("$EndPAD\n") - 1 )
goto out; goto out;
rc = true; rc = true;
@ -836,7 +427,6 @@ out:
} }
/******************************************************/ /******************************************************/
void D_PAD::Display_Infos( WinEDA_DrawFrame* frame ) void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
/******************************************************/ /******************************************************/
@ -853,7 +443,8 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
static const wxString Msg_Pad_Layer[9] = static const wxString Msg_Pad_Layer[9] =
{ {
wxT( "??? " ), wxT( "cmp " ), wxT( "cu " ), wxT( "cmp+cu " ), wxT( "int " ), wxT( "??? " ), wxT( "cmp " ), wxT( "cu " ), wxT( "cmp+cu " ), wxT(
"int " ),
wxT( "cmp+int " ), wxT( "cu+int " ), wxT( "all " ), wxT( "No copp" ) wxT( "cmp+int " ), wxT( "cu+int " ), wxT( "all " ), wxT( "No copp" )
}; };
@ -880,7 +471,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
pos += 10; pos += 10;
#if 1 // Used only to debug connectivity calculations #if 1 // Used only to debug connectivity calculations
Line.Printf( wxT( "%d-%d-%d " ), GetSubRatsnest(), GetSubNet(), m_ZoneSubnet ); Line.Printf( wxT( "%d-%d-%d " ), GetSubRatsnest(), GetSubNet(), m_ZoneSubnet );
Affiche_1_Parametre( frame, pos, wxT("L-P-Z"), Line, DARKGREEN ); Affiche_1_Parametre( frame, pos, wxT( "L-P-Z" ), Line, DARKGREEN );
#endif #endif
wxString LayerInfo; wxString LayerInfo;
@ -962,8 +553,13 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
pos += 6; pos += 6;
int attribut = m_Attribut & 15; int attribut = m_Attribut & 15;
if ( attribut > 3 ) attribut = 3; if( attribut > 3 )
Affiche_1_Parametre( frame, pos, Msg_Pad_Shape[m_PadShape],Msg_Pad_Attribut[attribut], DARKGREEN ); attribut = 3;
Affiche_1_Parametre( frame,
pos,
Msg_Pad_Shape[m_PadShape],
Msg_Pad_Attribut[attribut],
DARKGREEN );
valeur_param( m_Size.x, Line ); valeur_param( m_Size.x, Line );
pos += 6; pos += 6;
@ -992,7 +588,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
int module_orient = module ? module->m_Orient : 0; int module_orient = module ? module->m_Orient : 0;
if( module_orient ) if( module_orient )
Line.Printf( wxT( "%3.1f(+%3.1f)" ), Line.Printf( wxT( "%3.1f(+%3.1f)" ),
(float) (m_Orient - module_orient) / 10, (float) module_orient / 10 ); (float) ( m_Orient - module_orient ) / 10, (float) module_orient / 10 );
else else
Line.Printf( wxT( "%3.1f" ), (float) m_Orient / 10 ); Line.Printf( wxT( "%3.1f" ), (float) m_Orient / 10 );
pos += 8; pos += 8;
@ -1011,7 +607,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
// see class_pad.h // see class_pad.h
bool D_PAD::IsOnLayer( int aLayer ) const bool D_PAD::IsOnLayer( int aLayer ) const
{ {
return (1<<aLayer) & m_Masque_Layer; return (1 << aLayer) & m_Masque_Layer;
} }
@ -1066,7 +662,7 @@ bool D_PAD::HitTest( const wxPoint& ref_pos )
int D_PAD::Compare( const D_PAD* padref, const D_PAD* padcmp ) int D_PAD::Compare( const D_PAD* padref, const D_PAD* padcmp )
/************************************************************/ /************************************************************/
{ {
int diff; int diff;
if( (diff = padref->m_PadShape - padcmp->m_PadShape) ) if( (diff = padref->m_PadShape - padcmp->m_PadShape) )
return diff; return diff;
@ -1099,11 +695,20 @@ static const char* ShowPadType( int aPadType )
{ {
switch( aPadType ) switch( aPadType )
{ {
case PAD_CIRCLE: return "circle"; case PAD_CIRCLE:
case PAD_OVAL: return "oval"; return "circle";
case PAD_RECT: return "rect";
case PAD_TRAPEZOID: return "trap"; case PAD_OVAL:
default: return "??unknown??"; return "oval";
case PAD_RECT:
return "rect";
case PAD_TRAPEZOID:
return "trap";
default:
return "??unknown??";
} }
} }
@ -1112,11 +717,20 @@ static const char* ShowPadAttr( int aPadAttr )
{ {
switch( aPadAttr ) switch( aPadAttr )
{ {
case PAD_STANDARD: return "STD"; case PAD_STANDARD:
case PAD_SMD: return "SMD"; return "STD";
case PAD_CONN: return "CONN";
case PAD_HOLE_NOT_PLATED: return "HOLE"; case PAD_SMD:
default: return "??unkown??"; return "SMD";
case PAD_CONN:
return "CONN";
case PAD_HOLE_NOT_PLATED:
return "HOLE";
default:
return "??unkown??";
} }
} }
@ -1138,11 +752,11 @@ void D_PAD::Show( int nestLevel, std::ostream& os )
// for now, make it look like XML: // for now, make it look like XML:
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
" shape=\"" << ShowPadType( m_PadShape ) << '"' << " shape=\"" << ShowPadType( m_PadShape ) << '"' <<
" attr=\"" << ShowPadAttr( m_Attribut ) << '"' << " attr=\"" << ShowPadAttr( m_Attribut ) << '"' <<
" num=\"" << padname << '"' << " num=\"" << padname << '"' <<
" net=\"" << m_Netname.mb_str() << '"' << " net=\"" << m_Netname.mb_str() << '"' <<
" netcode=\"" << GetNet() << '"' << " netcode=\"" << GetNet() << '"' <<
" layerMask=\"" << layerMask << '"' << m_Pos << "/>\n"; " layerMask=\"" << layerMask << '"' << m_Pos << "/>\n";
// NestedSpace( nestLevel+1, os ) << m_Text.mb_str() << '\n'; // NestedSpace( nestLevel+1, os ) << m_Text.mb_str() << '\n';
@ -1150,4 +764,5 @@ void D_PAD::Show( int nestLevel, std::ostream& os )
// NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n"; // NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
} }
#endif #endif

View File

@ -12,6 +12,8 @@ class D_PAD : public BOARD_CONNECTED_ITEM
{ {
private: private:
int m_NetCode; // Net number for fast comparisons int m_NetCode; // Net number for fast comparisons
wxString m_Netname; // Full net name like /mysheet/mysubsheet/vout used by eeschema
wxString m_ShortNetname; // short net name, like vout from /mysheet/mysubsheet/vout
public: public:
@ -25,8 +27,6 @@ public:
*/ */
}; };
wxString m_Netname; /* Net Name */
int m_Masque_Layer; // Bitwise layer :1= copper layer, 15= cmp, int m_Masque_Layer; // Bitwise layer :1= copper layer, 15= cmp,
// 2..14 = internal layers // 2..14 = internal layers
// 16 .. 31 = technical layers // 16 .. 31 = technical layers
@ -73,6 +73,30 @@ public:
D_PAD* Next() { return (D_PAD*) Pnext; } D_PAD* Next() { return (D_PAD*) Pnext; }
/**
* Function GetNetname
* @return const wxString * , a pointer to the full netname
*/
wxString GetNetname() const { return m_Netname; }
/**
* Function GetShortNetname
* @return const wxString * , a pointer to the short netname
*/
wxString GetShortNetname() const { return m_ShortNetname; }
/**
* Function SetNetname
* @param const wxString : the new netname
*/
void SetNetname( const wxString & aNetname );
/**
* Function GetShape
* @return the shape of this pad.
*/
int GetShape( ) { return (m_PadShape & 0xFF); }
/** /**
* Function GetPosition * Function GetPosition
* returns the position of this object. * returns the position of this object.

View File

@ -0,0 +1,466 @@
/*******************************************************/
/* class_pad_draw_function.cpp : functionsto draw pads */
/*******************************************************/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "pcbnew.h"
#include "trigo.h"
#include "id.h" // ID_TRACK_BUTT
/*******************************************************************************************/
void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& offset )
/*******************************************************************************************/
/** Draw a pad:
* @param DC = device context
* @param offset = draw offset
* @param draw_mode = mode: GR_OR, GR_XOR, GR_AND...
*/
{
int ii;
int color = 0;
int ux0, uy0,
dx, dx0, dy, dy0,
rotdx,
delta_cx, delta_cy,
xc, yc;
int angle;
wxPoint coord[4];
int zoom;
int fillpad = 0;
wxPoint shape_pos;
if( m_Flags & DO_NOT_DRAW )
return;
wxASSERT( panel );
zoom = panel->GetZoom();
WinEDA_BasePcbFrame* frame = (WinEDA_BasePcbFrame*) panel->m_Parent;
PCB_SCREEN* screen = frame->GetScreen();
if( frame->m_DisplayPadFill == FILLED )
fillpad = 1;
#ifdef PCBNEW
if( m_Flags & IS_MOVED )
fillpad = 0;
#endif
if( m_Masque_Layer & CMP_LAYER )
color = g_PadCMPColor;
if( m_Masque_Layer & CUIVRE_LAYER )
color |= g_PadCUColor;
if( color == 0 ) /* Not on copper layer */
{
switch( m_Masque_Layer & ~ALL_CU_LAYERS )
{
case ADHESIVE_LAYER_CU:
color = g_DesignSettings.m_LayerColor[ADHESIVE_N_CU];
break;
case ADHESIVE_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[ADHESIVE_N_CMP];
break;
case SOLDERPASTE_LAYER_CU:
color = g_DesignSettings.m_LayerColor[SOLDERPASTE_N_CU];
break;
case SOLDERPASTE_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[SOLDERPASTE_N_CMP];
break;
case SILKSCREEN_LAYER_CU:
color = g_DesignSettings.m_LayerColor[SILKSCREEN_N_CU];
break;
case SILKSCREEN_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[SILKSCREEN_N_CMP];
break;
case SOLDERMASK_LAYER_CU:
color = g_DesignSettings.m_LayerColor[SOLDERMASK_N_CU];
break;
case SOLDERMASK_LAYER_CMP:
color = g_DesignSettings.m_LayerColor[SOLDERMASK_N_CMP];
break;
case DRAW_LAYER:
color = g_DesignSettings.m_LayerColor[DRAW_N];
break;
case COMMENT_LAYER:
color = g_DesignSettings.m_LayerColor[COMMENT_N];
break;
case ECO1_LAYER:
color = g_DesignSettings.m_LayerColor[ECO1_N];
break;
case ECO2_LAYER:
color = g_DesignSettings.m_LayerColor[ECO2_N];
break;
case EDGE_LAYER:
color = g_DesignSettings.m_LayerColor[EDGE_N];
break;
default:
color = DARKGRAY;
break;
}
}
// if PAD_SMD pad and high contrast mode
if( (m_Attribut==PAD_SMD || m_Attribut==PAD_CONN) && DisplayOpt.ContrastModeDisplay )
{
// when routing tracks
if( frame && frame->m_ID_current_state == ID_TRACK_BUTT )
{
int routeTop = screen->m_Route_Layer_TOP;
int routeBot = screen->m_Route_Layer_BOTTOM;
// if routing between copper and component layers,
// or the current layer is one of said 2 external copper layers,
// then highlight only the current layer.
if( ( (1 << routeTop) | (1 << routeBot) ) == (CUIVRE_LAYER | CMP_LAYER)
|| ( (1 << screen->m_Active_Layer) & (CUIVRE_LAYER | CMP_LAYER) ) )
{
if( !IsOnLayer( screen->m_Active_Layer ) )
{
color &= ~MASKCOLOR;
color |= DARKDARKGRAY;
}
}
// else routing between an internal signal layer and some other layer.
// grey out all PAD_SMD pads not on current or the single selected
// external layer.
else if( !IsOnLayer( screen->m_Active_Layer )
&& !IsOnLayer( routeTop )
&& !IsOnLayer( routeBot ) )
{
color &= ~MASKCOLOR;
color |= DARKDARKGRAY;
}
}
// when not edting tracks, show PAD_SMD components not on active layer as greyed out
else
{
if( !IsOnLayer( screen->m_Active_Layer ) )
{
color &= ~MASKCOLOR;
color |= DARKDARKGRAY;
}
}
}
if( draw_mode & GR_SURBRILL )
{
if( draw_mode & GR_AND )
color &= ~HIGHT_LIGHT_FLAG;
else
color |= HIGHT_LIGHT_FLAG;
}
if( color & HIGHT_LIGHT_FLAG )
color = ColorRefs[color & MASKCOLOR].m_LightColor;
GRSetDrawMode( DC, draw_mode ); /* mode de trace */
/* calcul du centre des pads en coordonnees Ecran : */
shape_pos = ReturnShapePos();
ux0 = shape_pos.x - offset.x;
uy0 = shape_pos.y - offset.y;
xc = ux0;
yc = uy0;
/* le trace depend de la rotation de l'empreinte */
dx = dx0 = m_Size.x >> 1;
dy = dy0 = m_Size.y >> 1; /* demi dim dx et dy */
angle = m_Orient;
bool DisplayIsol = DisplayOpt.DisplayPadIsol;
if( ( m_Masque_Layer & ALL_CU_LAYERS ) == 0 )
DisplayIsol = FALSE;
switch( GetShape() )
{
case PAD_CIRCLE:
if( fillpad )
GRFilledCircle( &panel->m_ClipBox, DC, xc, yc, dx, 0, color, color );
else
GRCircle( &panel->m_ClipBox, DC, xc, yc, dx, 0, color );
if( DisplayIsol )
{
GRCircle( &panel->m_ClipBox,
DC,
xc,
yc,
dx + g_DesignSettings.m_TrackClearence,
0,
color );
}
break;
case PAD_OVAL:
/* calcul de l'entraxe de l'ellipse */
if( dx > dy ) /* ellipse horizontale */
{
delta_cx = dx - dy;
delta_cy = 0;
rotdx = m_Size.y;
}
else /* ellipse verticale */
{
delta_cx = 0;
delta_cy = dy - dx;
rotdx = m_Size.x;
}
RotatePoint( &delta_cx, &delta_cy, angle );
if( fillpad )
{
GRFillCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
}
else
{
GRCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
}
/* Trace de la marge d'isolement */
if( DisplayIsol )
{
rotdx = rotdx + g_DesignSettings.m_TrackClearence + g_DesignSettings.m_TrackClearence;
GRCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
}
break;
case PAD_RECT:
case PAD_TRAPEZOID:
{
int ddx, ddy;
ddx = m_DeltaSize.x >> 1;
ddy = m_DeltaSize.y >> 1; /* demi dim dx et dy */
coord[0].x = -dx - ddy;
coord[0].y = +dy + ddx;
coord[1].x = -dx + ddy;
coord[1].y = -dy - ddx;
coord[2].x = +dx - ddy;
coord[2].y = -dy + ddx;
coord[3].x = +dx + ddy;
coord[3].y = +dy - ddx;
for( ii = 0; ii < 4; ii++ )
{
RotatePoint( &coord[ii].x, &coord[ii].y, angle );
coord[ii].x = coord[ii].x + ux0;
coord[ii].y = coord[ii].y + uy0;
}
GRClosedPoly( &panel->m_ClipBox, DC, 4, (int*) coord, fillpad, color, color );
if( DisplayIsol )
{
dx += g_DesignSettings.m_TrackClearence;
dy += g_DesignSettings.m_TrackClearence;
coord[0].x = -dx - ddy;
coord[0].y = dy + ddx;
coord[1].x = -dx + ddy;
coord[1].y = -dy - ddx;
coord[2].x = dx - ddy;
coord[2].y = -dy + ddx;
coord[3].x = dx + ddy;
coord[3].y = dy - ddx;
for( ii = 0; ii < 4; ii++ )
{
RotatePoint( &coord[ii].x, &coord[ii].y, angle );
coord[ii].x = coord[ii].x + ux0;
coord[ii].y = coord[ii].y + uy0;
}
GRClosedPoly( &panel->m_ClipBox, DC, 4, (int*) coord, 0, color, color );
}
}
break;
default:
break;
}
/* Draw the pad hole */
int cx0 = m_Pos.x - offset.x;
int cy0 = m_Pos.y - offset.y;
int hole = m_Drill.x >> 1;
if( fillpad && hole )
{
bool blackpenstate = false;
if( g_IsPrinting )
{
blackpenstate = GetGRForceBlackPenState();
GRForceBlackPen( false );
color = WHITE;
}
else
color = BLACK; // or DARKGRAY;
if( draw_mode != GR_XOR )
GRSetDrawMode( DC, GR_COPY );
else
GRSetDrawMode( DC, GR_XOR );
switch( m_DrillShape )
{
case PAD_CIRCLE:
if( (hole / zoom) > 1 ) /* draw hole if its size is enought */
GRFilledCircle( &panel->m_ClipBox, DC, cx0, cy0, hole, 0, color, color );
break;
case PAD_OVAL:
dx = m_Drill.x >> 1;
dy = m_Drill.y >> 1; /* demi dim dx et dy */
/* calcul de l'entraxe de l'ellipse */
if( m_Drill.x > m_Drill.y ) /* ellipse horizontale */
{
delta_cx = dx - dy; delta_cy = 0;
rotdx = m_Drill.y;
}
else /* ellipse verticale */
{
delta_cx = 0; delta_cy = dy - dx;
rotdx = m_Drill.x;
}
RotatePoint( &delta_cx, &delta_cy, angle );
GRFillCSegm( &panel->m_ClipBox, DC, ux0 + delta_cx, uy0 + delta_cy,
ux0 - delta_cx, uy0 - delta_cy,
rotdx, color );
break;
default:
break;
}
if( g_IsPrinting )
GRForceBlackPen( blackpenstate );
}
GRSetDrawMode( DC, draw_mode );
/* Trace du symbole "No connect" ( / ou \ ou croix en X) si necessaire : */
if( m_Netname.IsEmpty() && DisplayOpt.DisplayPadNoConn )
{
dx0 = MIN( dx0, dy0 );
int nc_color = BLUE;
if( m_Masque_Layer & CMP_LAYER ) /* Trace forme \ */
GRLine( &panel->m_ClipBox, DC, cx0 - dx0, cy0 - dx0,
cx0 + dx0, cy0 + dx0, 0, nc_color );
if( m_Masque_Layer & CUIVRE_LAYER ) /* Trace forme / */
GRLine( &panel->m_ClipBox, DC, cx0 + dx0, cy0 - dx0,
cx0 - dx0, cy0 + dx0, 0, nc_color );
}
/* Draw the pad number */
if( frame && !frame->m_DisplayPadNum )
return;
wxPoint tpos0 = wxPoint( ux0, uy0 ); // Position of the centre of text
wxPoint tpos = tpos0;
wxSize AreaSize; // size of text area, normalized to AreaSize.y < AreaSize.x
int len;
if( GetShape() == PAD_CIRCLE )
angle = 0;
AreaSize = m_Size;
if( m_Size.y > m_Size.x )
{
angle += 900;
AreaSize.x = m_Size.y;
AreaSize.y = m_Size.x;
}
if( !m_Netname.IsEmpty() ) // if there is a netname, provides room to display this netname
{
AreaSize.y /= 2; // Text used only the upper area of the pad. The lower area displays the net name
tpos.y -= AreaSize.y / 2;
}
// Calculate the position of text, that is the middle point of the upper area of the pad
RotatePoint( &tpos, wxPoint( ux0, uy0 ), angle );
/* Draw text with an angle between -90 deg and + 90 deg */
int t_angle = angle;
NORMALIZE_ANGLE_90( t_angle );
/* Note: in next calculations, texte size is calculated for 3 or more chars.
Of course, pads nimbers and nets names can have less than 3 chars.
but after some tries, i found this is gives the best look
*/
#define MIN_CHAR_COUNT 3
wxString buffer;
ReturnStringPadName( buffer );
len = buffer.Len();
len = MAX( len, MIN_CHAR_COUNT);
int tsize = min( AreaSize.y, AreaSize.x / len );
#define CHAR_SIZE_MIN 5
if( (tsize / zoom) >= CHAR_SIZE_MIN ) // Not drawable in size too small.
{
tsize = (int) (tsize * 0.8); // reserve room for marges and segments thickness
DrawGraphicText( panel, DC, tpos,
WHITE, buffer, t_angle, wxSize( tsize, tsize ),
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, tsize / 8 );
}
// display the short netname
len = m_ShortNetname.Len();
if (len == 0 )
return;
len = MAX( len, MIN_CHAR_COUNT);
tsize = min( AreaSize.y, AreaSize.x / len );
if( (tsize / zoom) >= CHAR_SIZE_MIN ) // Not drawable in size too small.
{
tpos = tpos0;
tpos.y += AreaSize.y / 2;
RotatePoint( &tpos, wxPoint( ux0, uy0 ), angle );
tsize = (int) (tsize * 0.8); // reserve room for marges and segments thickness
DrawGraphicText( panel, DC, tpos,
WHITE, m_ShortNetname, t_angle, wxSize( tsize, tsize ),
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, tsize / 8 );
}
}

View File

@ -411,7 +411,7 @@ void TEXTE_MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const
size.x = -size.x; size.x = -size.x;
/* Trace du texte */ /* Trace du texte */
DrawGraphicText( panel, DC, pos, color, m_Text, DrawGraphicText( panel, DC, pos, (enum EDA_Colors) color, m_Text,
orient, size, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width ); orient, size, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, width );
} }

View File

@ -38,6 +38,7 @@ void DbgDisplayTrackInfos( TRACK* track )
wxMessageBox( msg ); wxMessageBox( msg );
} }
#endif #endif
@ -50,13 +51,12 @@ static bool ShowClearance( const TRACK* aTrack )
{ {
// maybe return true for tracks and vias, not for zone segments // maybe return true for tracks and vias, not for zone segments
return !(aTrack->m_Flags & DRAW_ERASED) return !(aTrack->m_Flags & DRAW_ERASED)
&& DisplayOpt.DisplayTrackIsol && DisplayOpt.DisplayTrackIsol
&& aTrack->GetLayer() <= LAST_COPPER_LAYER && aTrack->GetLayer() <= LAST_COPPER_LAYER
&& ( aTrack->Type() == TYPE_TRACK || aTrack->Type() == TYPE_VIA ); && ( aTrack->Type() == TYPE_TRACK || aTrack->Type() == TYPE_VIA );
} }
/**********************************************************/ /**********************************************************/
TRACK::TRACK( BOARD_ITEM* aParent, KICAD_T idtype ) : TRACK::TRACK( BOARD_ITEM* aParent, KICAD_T idtype ) :
BOARD_CONNECTED_ITEM( aParent, idtype ) BOARD_CONNECTED_ITEM( aParent, idtype )
@ -138,16 +138,16 @@ TRACK* TRACK::Copy() const
* Function GetDrillValue * Function GetDrillValue
* calculate the drill value for vias (m-Drill if > 0, or default drill value for the board * calculate the drill value for vias (m-Drill if > 0, or default drill value for the board
* @return real drill_value * @return real drill_value
*/ */
int TRACK::GetDrillValue() const int TRACK::GetDrillValue() const
{ {
if ( Type() != TYPE_VIA ) if( Type() != TYPE_VIA )
return 0; return 0;
if ( m_Drill >= 0 ) if( m_Drill >= 0 )
return m_Drill; return m_Drill;
if ( m_Shape == VIA_MICROVIA ) if( m_Shape == VIA_MICROVIA )
return g_DesignSettings.m_MicroViaDrill; return g_DesignSettings.m_MicroViaDrill;
return g_DesignSettings.m_ViaDrill; return g_DesignSettings.m_ViaDrill;
@ -222,7 +222,7 @@ int TRACK::IsPointOnEnds( const wxPoint& point, int min_dist )
EDA_Rect TRACK::GetBoundingBox() EDA_Rect TRACK::GetBoundingBox()
{ {
// end of track is round, this is its radius, rounded up // end of track is round, this is its radius, rounded up
int radius = ( m_Width+1 )/2; int radius = ( m_Width + 1 ) / 2;
int ymax; int ymax;
int xmax; int xmax;
@ -247,7 +247,7 @@ EDA_Rect TRACK::GetBoundingBox()
} }
else else
{ {
radius = ( m_Width+1 )/2; radius = ( m_Width + 1 ) / 2;
ymax = MAX( m_Start.y, m_End.y ); ymax = MAX( m_Start.y, m_End.y );
xmax = MAX( m_Start.x, m_End.x ); xmax = MAX( m_Start.x, m_End.x );
@ -269,7 +269,7 @@ EDA_Rect TRACK::GetBoundingBox()
xmin -= radius; xmin -= radius;
// return a rectangle which is [pos,dim) in nature. therefore the +1 // return a rectangle which is [pos,dim) in nature. therefore the +1
EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( xmax-xmin+1, ymax-ymin+1 ) ); EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( xmax - xmin + 1, ymax - ymin + 1 ) );
return ret; return ret;
} }
@ -416,14 +416,14 @@ TRACK* TRACK::GetBestInsertPoint( BOARD* Pcb )
* @return the item found in the linked list (or NULL if no track) * @return the item found in the linked list (or NULL if no track)
*/ */
{ {
TRACK* track; TRACK* track;
if( Type() == TYPE_ZONE ) if( Type() == TYPE_ZONE )
track = Pcb->m_Zone; track = Pcb->m_Zone;
else else
track = Pcb->m_Track; track = Pcb->m_Track;
for( ; track; track = track->Next() ) for( ; track; track = track->Next() )
{ {
if( GetNet() <= track->GetNet() ) if( GetNet() <= track->GetNet() )
return track; return track;
@ -509,7 +509,7 @@ TRACK* TRACK::GetEndNetCode( int NetCode )
bool TRACK::Save( FILE* aFile ) const bool TRACK::Save( FILE* aFile ) const
{ {
int type = 0; int type = 0;
if( Type() == TYPE_VIA ) if( Type() == TYPE_VIA )
type = 1; type = 1;
@ -518,17 +518,16 @@ bool TRACK::Save( FILE* aFile ) const
return true; return true;
fprintf( aFile, "Po %d %d %d %d %d %d %d\n", m_Shape, fprintf( aFile, "Po %d %d %d %d %d %d %d\n", m_Shape,
m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width, m_Drill ); m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width, m_Drill );
fprintf( aFile, "De %d %d %d %lX %X\n", fprintf( aFile, "De %d %d %d %lX %X\n",
m_Layer, type, GetNet(), m_Layer, type, GetNet(),
m_TimeStamp, ReturnStatus() ); m_TimeStamp, ReturnStatus() );
return true; return true;
} }
/*********************************************************************/ /*********************************************************************/
void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed ) void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed )
/*********************************************************************/ /*********************************************************************/
@ -545,9 +544,8 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
if( m_Flags & DRAW_ERASED ) // draw in background color, used by classs TRACK in gerbview if( m_Flags & DRAW_ERASED ) // draw in background color, used by classs TRACK in gerbview
{ {
color = g_DrawBgColor; color = g_DrawBgColor;
D(printf("DRAW_ERASED in Track::Draw, g_DrawBgColor=%04X\n", g_DrawBgColor );) D( printf( "DRAW_ERASED in Track::Draw, g_DrawBgColor=%04X\n", g_DrawBgColor ); )
} }
else else
{ {
color = g_DesignSettings.m_LayerColor[m_Layer]; color = g_DesignSettings.m_LayerColor[m_Layer];
@ -586,8 +584,8 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
if( m_Shape == S_CIRCLE ) if( m_Shape == S_CIRCLE )
{ {
rayon = (int) hypot( (double) (m_End.x - m_Start.x), rayon = (int) hypot( (double) ( m_End.x - m_Start.x ),
(double) (m_End.y - m_Start.y) ); (double) ( m_End.y - m_Start.y ) );
if( (l_piste / zoom) < L_MIN_DESSIN ) if( (l_piste / zoom) < L_MIN_DESSIN )
{ {
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color ); GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
@ -606,7 +604,7 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
else else
{ {
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon,
m_Width, color ); m_Width, color );
} }
} }
return; return;
@ -615,27 +613,27 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
if( (l_piste / zoom) < L_MIN_DESSIN ) if( (l_piste / zoom) < L_MIN_DESSIN )
{ {
GRLine( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, GRLine( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
m_End.x, m_End.y, 0, color ); m_End.x, m_End.y, 0, color );
return; return;
} }
if( !DisplayOpt.DisplayPcbTrackFill || GetState( FORCE_SKETCH ) ) if( !DisplayOpt.DisplayPcbTrackFill || GetState( FORCE_SKETCH ) )
{ {
GRCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, GRCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
m_End.x, m_End.y, m_Width, color ); m_End.x, m_End.y, m_Width, color );
} }
else else
{ {
GRFillCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, GRFillCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
m_End.x, m_End.y, m_Width, color ); m_End.x, m_End.y, m_Width, color );
} }
// Show clearance for tracks, not for zone segments // Show clearance for tracks, not for zone segments
if( ShowClearance( this ) ) if( ShowClearance( this ) )
{ {
GRCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, GRCSegm( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
m_End.x, m_End.y, m_End.x, m_End.y,
m_Width + (g_DesignSettings.m_TrackClearence * 2), color ); m_Width + (g_DesignSettings.m_TrackClearence * 2), color );
} }
} }
@ -685,97 +683,115 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi
rayon = zoom; rayon = zoom;
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color ); GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
if( rayon > (4 * zoom) ) if( rayon <= (4 * zoom) ) // Size too small: cannot be drawn
return;
int drill_rayon = GetDrillValue() / 2;
int inner_rayon = rayon - (2 * zoom);
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
inner_rayon, color );
// Draw the via hole if the display option allows it
if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW )
{ {
int drill_rayon = GetDrillValue() / 2; if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) // Display all drill holes requested
int inner_rayon = rayon - (2 * zoom); || ( (drill_rayon > 0 ) && !IsDrillDefault() ) ) // Or Display non default holes requested
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
inner_rayon, color );
// Draw the via hole if the display option allows it
if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW )
{ {
if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) || // Display all drill holes requested if( drill_rayon < inner_rayon ) // We can show the via hole
( (drill_rayon > 0 ) && ! IsDrillDefault() ) ) // Or Display non default holes requested
{ {
if( drill_rayon < inner_rayon ) // We can show the via hole GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
{ drill_rayon, color );
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
drill_rayon, color );
}
} }
} }
if( DisplayOpt.DisplayTrackIsol )
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
rayon + g_DesignSettings.m_TrackClearence, color );
// for Micro Vias, draw a partial cross :
// X on component layer, or + on copper layer
// (so we can see 2 superimposed microvias ):
if( Shape() == VIA_MICROVIA )
{
int ax, ay, bx, by;
if( IsOnLayer(COPPER_LAYER_N) )
{
ax = rayon; ay = 0;
bx = drill_rayon; by = 0;
}
else
{
ax = ay = (rayon * 707) / 1000;
bx = by = (drill_rayon * 707) / 1000;
}
/* lines | or \ */
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
m_Start.x - bx , m_Start.y - by, 0, color );
GRLine( &panel->m_ClipBox, DC, m_Start.x + bx , m_Start.y + by,
m_Start.x + ax , m_Start.y + ay, 0, color );
/* lines - or / */
GRLine( &panel->m_ClipBox, DC, m_Start.x + ay, m_Start.y - ax ,
m_Start.x + by, m_Start.y - bx, 0, color );
GRLine( &panel->m_ClipBox, DC, m_Start.x - by, m_Start.y + bx ,
m_Start.x - ay, m_Start.y + ax, 0, color );
}
// for Buried Vias, draw a partial line :
// orient depending on layer pair
// (so we can see superimposed buried vias ):
if( Shape() == VIA_BLIND_BURIED )
{
int ax = 0, ay = rayon, bx = 0, by = drill_rayon;
int layer_top, layer_bottom;
((SEGVIA*)this)->ReturnLayerPair(&layer_top, &layer_bottom);
/* lines for the top layer */
RotatePoint( &ax, &ay, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount);
RotatePoint( &bx, &by, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount);
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
m_Start.x - bx , m_Start.y - by, 0, color );
/* lines for the bottom layer */
ax = 0; ay = rayon; bx = 0; by = drill_rayon;
RotatePoint( &ax, &ay, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount);
RotatePoint( &bx, &by, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount);
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
m_Start.x - bx , m_Start.y - by, 0, color );
}
} }
}
if( DisplayOpt.DisplayTrackIsol )
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
rayon + g_DesignSettings.m_TrackClearence, color );
// for Micro Vias, draw a partial cross :
// X on component layer, or + on copper layer
// (so we can see 2 superimposed microvias ):
if( Shape() == VIA_MICROVIA )
{
int ax, ay, bx, by;
if( IsOnLayer( COPPER_LAYER_N ) )
{
ax = rayon; ay = 0;
bx = drill_rayon; by = 0;
}
else
{
ax = ay = (rayon * 707) / 1000;
bx = by = (drill_rayon * 707) / 1000;
}
/* lines | or \ */
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax, m_Start.y - ay,
m_Start.x - bx, m_Start.y - by, 0, color );
GRLine( &panel->m_ClipBox, DC, m_Start.x + bx, m_Start.y + by,
m_Start.x + ax, m_Start.y + ay, 0, color );
/* lines - or / */
GRLine( &panel->m_ClipBox, DC, m_Start.x + ay, m_Start.y - ax,
m_Start.x + by, m_Start.y - bx, 0, color );
GRLine( &panel->m_ClipBox, DC, m_Start.x - by, m_Start.y + bx,
m_Start.x - ay, m_Start.y + ax, 0, color );
}
// for Buried Vias, draw a partial line :
// orient depending on layer pair
// (so we can see superimposed buried vias ):
if( Shape() == VIA_BLIND_BURIED )
{
int ax = 0, ay = rayon, bx = 0, by = drill_rayon;
int layer_top, layer_bottom;
( (SEGVIA*) this )->ReturnLayerPair( &layer_top, &layer_bottom );
/* lines for the top layer */
RotatePoint( &ax, &ay, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount );
RotatePoint( &bx, &by, layer_top * 3600 / g_DesignSettings.m_CopperLayerCount );
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax, m_Start.y - ay,
m_Start.x - bx, m_Start.y - by, 0, color );
/* lines for the bottom layer */
ax = 0; ay = rayon; bx = 0; by = drill_rayon;
RotatePoint( &ax, &ay, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount );
RotatePoint( &bx, &by, layer_bottom * 3600 / g_DesignSettings.m_CopperLayerCount );
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax, m_Start.y - ay,
m_Start.x - bx, m_Start.y - by, 0, color );
}
// Display the short netname:
if( GetNet() == 0 )
return;
EQUIPOT* net = ((BOARD*)GetParent())->FindNet( GetNet() );
if( net == NULL )
return;
int len = net->GetShortNetname().Len();
// calculate a good size for the text (fixed to 9 pixels, if possible)
int tsize = m_Width / len;
if( ( tsize / zoom) >= 6 )
{
tsize = (tsize * 8) / 10; // small reduction to give a better look, inside via
DrawGraphicText( panel, DC, m_Start,
WHITE, net->GetShortNetname(), 0, wxSize( tsize, tsize ),
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER, tsize / 8 );
}
}
// see class_track.h // see class_track.h
void TRACK::Display_Infos( WinEDA_DrawFrame* frame ) void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
{ {
wxString msg; wxString msg;
int text_pos; int text_pos;
BOARD* board = ((WinEDA_PcbFrame*)frame)->m_Pcb; BOARD* board = ( (WinEDA_PcbFrame*) frame )->m_Pcb;
#ifdef RATSNET_DEBUG #ifdef RATSNET_DEBUG
DbgDisplayTrackInfos( this ); DbgDisplayTrackInfos( this );
@ -807,15 +823,15 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
if( Type() == TYPE_TRACK if( Type() == TYPE_TRACK
|| Type() == TYPE_ZONE || Type() == TYPE_ZONE
|| Type() == TYPE_VIA ) || Type() == TYPE_VIA )
{ {
/* Display NetName pour les segments de piste type cuivre */ /* Display NetName pour les segments de piste type cuivre */
EQUIPOT* equipot = board->FindNet( GetNet() ); EQUIPOT* equipot = board->FindNet( GetNet() );
if( equipot ) if( equipot )
msg = equipot->m_Netname; msg = equipot->GetNetname();
else else
msg = wxT( "<noname>" ); msg = wxT( "<noname>" );
@ -841,7 +857,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
#if defined(DEBUG) #if defined(DEBUG)
/* Display the flags */ /* Display the flags */
msg.Printf( wxT("0x%08X"), m_Flags ); msg.Printf( wxT( "0x%08X" ), m_Flags );
Affiche_1_Parametre( frame, text_pos, _( "Flags" ), msg, BLUE ); Affiche_1_Parametre( frame, text_pos, _( "Flags" ), msg, BLUE );
text_pos += 8; text_pos += 8;
@ -919,7 +935,7 @@ bool TRACK::HitTest( const wxPoint& ref_pos )
if( Type() == TYPE_VIA ) /* VIA rencontree */ if( Type() == TYPE_VIA ) /* VIA rencontree */
{ {
return (double) spot_cX * spot_cX + (double) spot_cY * spot_cY <= return (double) spot_cX * spot_cX + (double) spot_cY * spot_cY <=
(double) radius * radius; (double) radius * radius;
} }
else else
{ {
@ -930,6 +946,7 @@ bool TRACK::HitTest( const wxPoint& ref_pos )
return false; return false;
} }
/** /**
* Function HitTest (overlayed) * Function HitTest (overlayed)
* tests if the given EDA_Rect intersect this object. * tests if the given EDA_Rect intersect this object.
@ -937,7 +954,7 @@ bool TRACK::HitTest( const wxPoint& ref_pos )
* @param refArea : the given EDA_Rect * @param refArea : the given EDA_Rect
* @return bool - true if a hit, else false * @return bool - true if a hit, else false
*/ */
bool TRACK::HitTest( EDA_Rect& refArea ) bool TRACK::HitTest( EDA_Rect& refArea )
{ {
if( refArea.Inside( m_Start ) ) if( refArea.Inside( m_Start ) )
return true; return true;
@ -965,7 +982,7 @@ void TRACK::Show( int nestLevel, std::ostream& os )
" layer=\"" << m_Layer << '"' << " layer=\"" << m_Layer << '"' <<
" width=\"" << m_Width << '"' << " width=\"" << m_Width << '"' <<
" flags=\"" << m_Flags << '"' << " flags=\"" << m_Flags << '"' <<
" status=\"" << GetState(-1) << '"' << " status=\"" << GetState( -1 ) << '"' <<
// " drill=\"" << GetDrillValue() << '"' << // " drill=\"" << GetDrillValue() << '"' <<
" netcode=\"" << GetNet() << "\">" << " netcode=\"" << GetNet() << "\">" <<
@ -1007,9 +1024,9 @@ void SEGVIA::Show( int nestLevel, std::ostream& os )
break; break;
} }
int topLayer; int topLayer;
int botLayer; int botLayer;
BOARD* board = (BOARD*) m_Parent; BOARD* board = (BOARD*) m_Parent;
ReturnLayerPair( &topLayer, &botLayer ); ReturnLayerPair( &topLayer, &botLayer );
@ -1019,7 +1036,7 @@ void SEGVIA::Show( int nestLevel, std::ostream& os )
if( board ) if( board )
os << " layers=\"" << board->GetLayerName( topLayer ).Trim().mb_str() << "," os << " layers=\"" << board->GetLayerName( topLayer ).Trim().mb_str() << ","
<< board->GetLayerName( botLayer ).Trim().mb_str() << '"'; << board->GetLayerName( botLayer ).Trim().mb_str() << '"';
os << os <<
" width=\"" << m_Width << '"' << " width=\"" << m_Width << '"' <<
" drill=\"" << GetDrillValue() << '"' << " drill=\"" << GetDrillValue() << '"' <<
@ -1035,33 +1052,34 @@ wxString TRACK::ShowState( int stateBits )
wxString ret; wxString ret;
if( stateBits & CHAIN ) if( stateBits & CHAIN )
ret << wxT(" | CHAIN"); ret << wxT( " | CHAIN" );
if( stateBits & SEGM_AR ) if( stateBits & SEGM_AR )
ret << wxT(" | SEGM_AR"); ret << wxT( " | SEGM_AR" );
if( stateBits & SEGM_FIXE ) if( stateBits & SEGM_FIXE )
ret << wxT(" | SEGM_FIXE"); ret << wxT( " | SEGM_FIXE" );
if( stateBits & EDIT ) if( stateBits & EDIT )
ret << wxT(" | EDIT"); ret << wxT( " | EDIT" );
if( stateBits & DRAG ) if( stateBits & DRAG )
ret << wxT(" | DRAG"); ret << wxT( " | DRAG" );
if( stateBits & SURBRILL ) if( stateBits & SURBRILL )
ret << wxT(" | SURBRILL"); ret << wxT( " | SURBRILL" );
if( stateBits & NO_TRACE ) if( stateBits & NO_TRACE )
ret << wxT(" | NO_TRACE"); ret << wxT( " | NO_TRACE" );
if( stateBits & DELETED ) if( stateBits & DELETED )
ret << wxT(" | DELETED"); ret << wxT( " | DELETED" );
if( stateBits & BUSY ) if( stateBits & BUSY )
ret << wxT(" | BUSY"); ret << wxT( " | BUSY" );
if( stateBits & END_ONPAD) if( stateBits & END_ONPAD )
ret << wxT(" | END_ONPAD"); ret << wxT( " | END_ONPAD" );
if( stateBits & BEGIN_ONPAD) if( stateBits & BEGIN_ONPAD )
ret << wxT(" | BEGIN_ONPAD"); ret << wxT( " | BEGIN_ONPAD" );
if( stateBits & FLAG0) if( stateBits & FLAG0 )
ret << wxT(" | FLAG0"); ret << wxT( " | FLAG0" );
if( stateBits & FLAG1 ) if( stateBits & FLAG1 )
ret << wxT(" | FLAG1"); ret << wxT( " | FLAG1" );
return ret; return ret;
} }
#endif #endif

View File

@ -26,7 +26,7 @@ private:
public: public:
int m_Width; // 0 = line, > 0 = tracks, bus ... int m_Width; // Thickness of track, or via diameter
wxPoint m_Start; // Line start point wxPoint m_Start; // Line start point
wxPoint m_End; // Line end point wxPoint m_End; // Line end point
int m_Shape; // vias: shape and type, Track = shape.. int m_Shape; // vias: shape and type, Track = shape..

View File

@ -71,7 +71,7 @@ void ZONE_CONTAINER::SetNet( int anet_code )
{ {
EQUIPOT* net = ( (BOARD*) m_Parent )->FindNet( anet_code ); EQUIPOT* net = ( (BOARD*) m_Parent )->FindNet( anet_code );
if( net ) if( net )
m_Netname = net->m_Netname; m_Netname = net->GetNetname();
else else
m_Netname.Empty(); m_Netname.Empty();
} }
@ -875,7 +875,7 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame )
EQUIPOT* equipot = ( (WinEDA_PcbFrame*) frame )->m_Pcb->FindNet( GetNet() ); EQUIPOT* equipot = ( (WinEDA_PcbFrame*) frame )->m_Pcb->FindNet( GetNet() );
if( equipot ) if( equipot )
msg = equipot->m_Netname; msg = equipot->GetNetname();
else else
msg = wxT( "<noname>" ); msg = wxT( "<noname>" );
} }
@ -1047,7 +1047,7 @@ bool ZONE_CONTAINER::SetNetNameFromNetCode( void )
EQUIPOT* net; EQUIPOT* net;
if ( m_Parent && (net = ((BOARD*)m_Parent)->FindNet( GetNet()) ) ) if ( m_Parent && (net = ((BOARD*)m_Parent)->FindNet( GetNet()) ) )
{ {
m_Netname = net->m_Netname; m_Netname = net->GetNetname();
return true; return true;
} }

View File

@ -195,7 +195,7 @@ void dialog_copper_zone::OnInitDialog( wxInitDialogEvent& event )
{ {
for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ ) for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ )
{ {
if( ListNetName[ii] == equipot->m_Netname ) if( ListNetName[ii] == equipot->GetNetname() )
{ {
m_ListNetNameSelection->SetSelection( ii ); m_ListNetNameSelection->SetSelection( ii );
m_ListNetNameSelection->EnsureVisible( ii ); m_ListNetNameSelection->EnsureVisible( ii );
@ -340,7 +340,7 @@ bool dialog_copper_zone::AcceptOptions( bool aPromptForErrors, bool aUseExportab
g_Zone_Default_Setting.m_NetcodeSelection = 0; g_Zone_Default_Setting.m_NetcodeSelection = 0;
for( net = m_Parent->m_Pcb->m_Equipots; net; net = net->Next() ) for( net = m_Parent->m_Pcb->m_Equipots; net; net = net->Next() )
{ {
if( net->m_Netname == net_name ) if( net->GetNetname() == net_name )
{ {
g_Zone_Default_Setting.m_NetcodeSelection = net->GetNet(); g_Zone_Default_Setting.m_NetcodeSelection = net->GetNet();
break; break;
@ -392,7 +392,7 @@ void dialog_copper_zone::OnNetSortingOptionSelected( wxCommandEvent& event )
{ {
for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ ) for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ )
{ {
if( ListNetName[ii] == equipot->m_Netname ) if( ListNetName[ii] == equipot->GetNetname() )
{ {
m_ListNetNameSelection->SetSelection( ii ); m_ListNetNameSelection->SetSelection( ii );
m_ListNetNameSelection->EnsureVisible( ii ); m_ListNetNameSelection->EnsureVisible( ii );

View File

@ -84,7 +84,7 @@ DialogPadProperties::DialogPadProperties( WinEDA_BasePcbFrame* parent, D_PAD* Pa
if( m_CurrentPad ) if( m_CurrentPad )
{ {
Current_PadNetName = m_CurrentPad->m_Netname; Current_PadNetName = m_CurrentPad->GetNetname();
g_Current_PadName = m_CurrentPad->ReturnStringPadName(); g_Current_PadName = m_CurrentPad->ReturnStringPadName();
} }
} }
@ -511,7 +511,7 @@ void DialogPadProperties::PadPropertiesAccept( wxCommandEvent& event )
} }
m_CurrentPad->SetPadName( g_Current_PadName ); m_CurrentPad->SetPadName( g_Current_PadName );
if( m_CurrentPad->m_Netname != Current_PadNetName ) if( m_CurrentPad->GetNetname() != Current_PadNetName )
{ {
if( Current_PadNetName.IsEmpty() ) if( Current_PadNetName.IsEmpty() )
m_CurrentPad->SetNet( 0 ); m_CurrentPad->SetNet( 0 );
@ -521,7 +521,7 @@ void DialogPadProperties::PadPropertiesAccept( wxCommandEvent& event )
if( net ) if( net )
{ {
RastnestIsChanged = true; RastnestIsChanged = true;
m_CurrentPad->m_Netname = Current_PadNetName; m_CurrentPad->SetNetname( Current_PadNetName );
m_CurrentPad->SetNet( net->GetNet() ); m_CurrentPad->SetNet( net->GetNet() );
} }
else else

View File

@ -442,15 +442,16 @@ void CreateSignalsSection( FILE* file, BOARD* pcb )
for( equipot = pcb->m_Equipots; equipot != NULL; equipot = equipot->Next() ) for( equipot = pcb->m_Equipots; equipot != NULL; equipot = equipot->Next() )
{ {
if( equipot->m_Netname == wxEmptyString ) // dummy equipot (non connexion) if( equipot->GetNetname() == wxEmptyString ) // dummy equipot (non connexion)
{ {
equipot->m_Netname << wxT( "NoConnection" ) << NbNoConn++; wxString msg; msg << wxT( "NoConnection" ) << NbNoConn++;
equipot->SetNetname(msg); ;
} }
if( equipot->GetNet() <= 0 ) // dummy equipot (non connexion) if( equipot->GetNet() <= 0 ) // dummy equipot (non connexion)
continue; continue;
msg = wxT( "\nSIGNAL " ) + equipot->m_Netname; msg = wxT( "\nSIGNAL " ) + equipot->GetNetname();
fputs( CONV_TO_UTF8( msg ), file ); fputs( CONV_TO_UTF8( msg ), file );
fputs( "\n", file ); fputs( "\n", file );
@ -587,8 +588,8 @@ void CreateRoutesSection( FILE* file, BOARD* pcb )
old_netcode = track->GetNet(); old_netcode = track->GetNet();
EQUIPOT* equipot = pcb->FindNet( track->GetNet() ); EQUIPOT* equipot = pcb->FindNet( track->GetNet() );
wxString netname; wxString netname;
if( equipot && (equipot->m_Netname != wxEmptyString) ) if( equipot && (equipot->GetNetname() != wxEmptyString) )
netname = equipot->m_Netname; netname = equipot->GetNetname();
else else
netname = wxT( "_noname_" ); netname = wxT( "_noname_" );
fprintf( file, "\nROUTE %s\n", CONV_TO_UTF8( netname ) ); fprintf( file, "\nROUTE %s\n", CONV_TO_UTF8( netname ) );
@ -649,7 +650,7 @@ void CreateDevicesSection( FILE* file, BOARD* pcb )
for( pad = module->m_Pads; pad != NULL; pad = pad->Next() ) for( pad = module->m_Pads; pad != NULL; pad = pad->Next() )
{ {
fprintf( file, "PINDESCR %.4s", pad->m_Padname ); fprintf( file, "PINDESCR %.4s", pad->m_Padname );
if( pad->m_Netname == wxEmptyString ) if( pad->GetNetname() == wxEmptyString )
fputs( " NoConn\n", file ); fputs( " NoConn\n", file );
else else
fprintf( file, " %.4s\n", pad->m_Padname ); fprintf( file, " %.4s\n", pad->m_Padname );

View File

@ -808,7 +808,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
{ {
EQUIPOT* Equipot = new EQUIPOT( m_Pcb ); EQUIPOT* Equipot = new EQUIPOT( m_Pcb );
m_Pcb->m_Equipots.PushBack( Equipot ); m_Pcb->m_Equipots.PushBack( Equipot );
Equipot->ReadEquipotDescr( File, &LineNum ); Equipot->ReadDescr( File, &LineNum );
continue; continue;
} }

View File

@ -49,6 +49,7 @@ OBJECTS= $(TARGET).o classpcb.o\
class_mire.o\ class_mire.o\
class_cotation.o\ class_cotation.o\
class_pad.o \ class_pad.o \
class_pad_draw_functions.o\
class_equipot.o \ class_equipot.o \
class_module.o \ class_module.o \
class_edge_mod.o \ class_edge_mod.o \

View File

@ -206,7 +206,7 @@ void WinEDA_BasePcbFrame::AddPad( MODULE* Module, bool draw )
/* Mise a jour des caract de la pastille : */ /* Mise a jour des caract de la pastille : */
Import_Pad_Settings( Pad, false ); Import_Pad_Settings( Pad, false );
Pad->m_Netname.Empty(); Pad->SetNetname(wxEmptyString);
Pad->m_Pos = GetScreen()->m_Curseur; Pad->m_Pos = GetScreen()->m_Curseur;

View File

@ -296,7 +296,7 @@ void ReadPcbNetlist( WinEDA_PcbFrame* aFrame,
PtPad = Module->m_Pads; PtPad = Module->m_Pads;
for( ; PtPad != NULL; PtPad = (D_PAD*) PtPad->Next() ) for( ; PtPad != NULL; PtPad = (D_PAD*) PtPad->Next() )
{ {
PtPad->m_Netname = wxEmptyString; PtPad->SetNetname( wxEmptyString );
} }
} }
continue; continue;
@ -597,9 +597,9 @@ int SetPadNetName( wxWindow* frame, char* Text, MODULE* Module )
{ /* trouve */ { /* trouve */
trouve = TRUE; trouve = TRUE;
if( *TextNetName != '?' ) if( *TextNetName != '?' )
pad->m_Netname = CONV_FROM_UTF8( TextNetName ); pad->SetNetname( CONV_FROM_UTF8( TextNetName ) );
else else
pad->m_Netname.Empty(); pad->SetNetname( wxEmptyString);
} }
} }

View File

@ -880,7 +880,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
pad_courant = &m_Pcb->m_Pads[0]; pad_courant = &m_Pcb->m_Pads[0];
for( ; ii > 0; pad_courant++, ii-- ) for( ; ii > 0; pad_courant++, ii-- )
{ {
if( (*pad_courant)->m_Netname.IsEmpty() ) // pad not connected if( (*pad_courant)->GetNetname().IsEmpty() ) // pad not connected
{ {
(*pad_courant)->SetNet( 0 ); (*pad_courant)->SetNet( 0 );
continue; continue;
@ -892,7 +892,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
pad_ref = &m_Pcb->m_Pads[0]; pad_ref = &m_Pcb->m_Pads[0];
while( pad_ref < pad_courant ) while( pad_ref < pad_courant )
{ {
if( (*pad_ref)->m_Netname == (*pad_courant)->m_Netname ) if( (*pad_ref)->GetNetname() == (*pad_courant)->GetNetname() )
break; // sont du meme met break; // sont du meme met
pad_ref++; pad_ref++;
@ -926,7 +926,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
// Set the net_code for this equipot and reset other values // Set the net_code for this equipot and reset other values
equipot->SetNet(ii); equipot->SetNet(ii);
equipot->m_NbNodes = 0; equipot->m_NbNodes = 0;
equipot->m_Netname.Empty(); equipot->SetNetname(wxEmptyString);
BufPtEquipot[ii] = equipot; BufPtEquipot[ii] = equipot;
} }
@ -950,9 +950,9 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
equipot = BufPtEquipot[net]; equipot = BufPtEquipot[net];
equipot->m_NbNodes++; equipot->m_NbNodes++;
if( equipot->m_Netname.IsEmpty() ) if( equipot->GetNetname().IsEmpty() )
{ {
equipot->m_Netname = (*pad_courant)->m_Netname; equipot->SetNetname((*pad_courant)->GetNetname());
} }
} }

View File

@ -189,7 +189,7 @@ void Out_Pads( BOARD* Pcb, FILE* outfile )
wxString Line; wxString Line;
EQUIPOT* equipot = Pcb->FindNet( netcode ); EQUIPOT* equipot = Pcb->FindNet( netcode );
Line.Printf( wxT( "Warning: %d pad, net %s" ), Line.Printf( wxT( "Warning: %d pad, net %s" ),
nb_pads, equipot->m_Netname.GetData() ); nb_pads, equipot->GetNetname().GetData() );
DisplayError( NULL, Line, 20 ); DisplayError( NULL, Line, 20 );
} }
fprintf( outfile, "r %d %d %d %d %d %d 1 1\n", fprintf( outfile, "r %d %d %d %d %d %d 1 1\n",

View File

@ -245,7 +245,7 @@ int WinEDA_PcbFrame::Solve( wxDC* DC, int two_sides )
pt_equipot = m_Pcb->FindNet( current_net_code ); pt_equipot = m_Pcb->FindNet( current_net_code );
if( pt_equipot ) if( pt_equipot )
{ {
msg.Printf( wxT( "[%8.8s]" ), pt_equipot->m_Netname.GetData() ); msg.Printf( wxT( "[%8.8s]" ), pt_equipot->GetNetname().GetData() );
Affiche_1_Parametre( this, 1, wxT( "Net route" ), msg, BROWN ); Affiche_1_Parametre( this, 1, wxT( "Net route" ), msg, BROWN );
msg.Printf( wxT( "%d / %d" ), Ncurrent, Ntotal ); msg.Printf( wxT( "%d / %d" ), Ncurrent, Ntotal );
Affiche_1_Parametre( this, 12, wxT( "Activity" ), msg, BROWN ); Affiche_1_Parametre( this, 12, wxT( "Activity" ), msg, BROWN );

View File

@ -1076,7 +1076,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
{ {
int netcode = equipot->GetNet(); int netcode = equipot->GetNet();
if( netcode > 0 ) if( netcode > 0 )
nets[ netcode ]->net_id = CONV_TO_UTF8( equipot->m_Netname ); nets[ netcode ]->net_id = CONV_TO_UTF8( equipot->GetNetname() );
} }
items.Collect( aBoard, scanMODULEs ); items.Collect( aBoard, scanMODULEs );
@ -1253,7 +1253,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
old_netcode = netcode; old_netcode = netcode;
EQUIPOT* equipot = aBoard->FindNet( netcode ); EQUIPOT* equipot = aBoard->FindNet( netcode );
wxASSERT( equipot ); wxASSERT( equipot );
netname = CONV_TO_UTF8( equipot->m_Netname ); netname = CONV_TO_UTF8( equipot->GetNetname() );
} }
WIRE* wire = new WIRE( wiring ); WIRE* wire = new WIRE( wiring );
@ -1315,7 +1315,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) throw( IOError )
EQUIPOT* equipot = aBoard->FindNet( netcode ); EQUIPOT* equipot = aBoard->FindNet( netcode );
wxASSERT( equipot ); wxASSERT( equipot );
dsnVia->net_id = CONV_TO_UTF8( equipot->m_Netname ); dsnVia->net_id = CONV_TO_UTF8( equipot->GetNetname() );
dsnVia->via_type = T_protect; // @todo, this should be configurable dsnVia->via_type = T_protect; // @todo, this should be configurable
} }

View File

@ -45,11 +45,11 @@ void WinEDA_PcbFrame::Liste_Equipot( wxCommandEvent& event )
{ {
wxString Line; wxString Line;
/* calcul adr relative du nom de la pastille reference de la piste */ /* calcul adr relative du nom de la pastille reference de la piste */
if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) ) if( !WildCompareString( msg, Equipot->GetNetname(), FALSE ) )
continue; continue;
Line.Printf( wxT( "net_code = %3.3d [%.16s] " ), Equipot->GetNet(), Line.Printf( wxT( "net_code = %3.3d [%.16s] " ), Equipot->GetNet(),
Equipot->m_Netname.GetData() ); Equipot->GetNetname().GetData() );
List->Append( Line ); List->Append( Line );
} }
@ -65,7 +65,7 @@ void WinEDA_PcbFrame::Liste_Equipot( wxCommandEvent& event )
for( jj = 0; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Next() ) for( jj = 0; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Next() )
{ {
/* calcul adr relative du nom de la pastille reference de la piste */ /* calcul adr relative du nom de la pastille reference de la piste */
if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) ) if( !WildCompareString( msg, Equipot->GetNetname(), FALSE ) )
continue; continue;
if( ii == jj ) if( ii == jj )

View File

@ -190,6 +190,13 @@ void BOARD::Draw( WinEDA_DrawPanel* aPanel, wxDC* DC,
{ {
m_markers[i]->Draw( aPanel, DC, aDrawMode ); m_markers[i]->Draw( aPanel, DC, aDrawMode );
} }
// Draw equipots info
for( EQUIPOT* net = m_Equipots; net; net = net->Next() )
{
if ( net->GetNet() != 0 ) // no net if 0
net->Draw( aPanel, DC, aDrawMode );
}
} }

View File

@ -516,7 +516,7 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff,
*/ */
{ {
wxPoint oldpos;/* memorisation temporaire pos curseur */ wxPoint oldpos;/* memorisation temporaire pos curseur */
D_PAD* pt_pad, * pt_old_pad; D_PAD* pad, * old_pad;
if( (OldModule->Type() != TYPE_MODULE) || (NewModule->Type() != TYPE_MODULE) ) if( (OldModule->Type() != TYPE_MODULE) || (NewModule->Type() != TYPE_MODULE) )
@ -553,19 +553,19 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff,
NewModule->m_Path = OldModule->m_Path; NewModule->m_Path = OldModule->m_Path;
/* mise a jour des netnames ( lorsque c'est possible) */ /* mise a jour des netnames ( lorsque c'est possible) */
pt_pad = NewModule->m_Pads; pad = NewModule->m_Pads;
for( ; pt_pad != NULL; pt_pad = pt_pad->Next() ) for( ; pad != NULL; pad = pad->Next() )
{ {
pt_pad->m_Netname = wxEmptyString; pad->SetNetname( wxEmptyString );
pt_pad->SetNet( 0 ); pad->SetNet( 0 );
pt_old_pad = OldModule->m_Pads; old_pad = OldModule->m_Pads;
for( ; pt_old_pad != NULL; pt_old_pad = pt_old_pad->Next() ) for( ; old_pad != NULL; old_pad = old_pad->Next() )
{ {
if( strnicmp( pt_pad->m_Padname, pt_old_pad->m_Padname, if( strnicmp( pad->m_Padname, old_pad->m_Padname,
sizeof(pt_pad->m_Padname) ) == 0 ) sizeof(pad->m_Padname) ) == 0 )
{ {
pt_pad->m_Netname = pt_old_pad->m_Netname; pad->SetNetname(old_pad->GetNetname() );
pt_pad->SetNet( pt_old_pad->GetNet() ); pad->SetNet( old_pad->GetNet() );
} }
} }
} }

View File

@ -801,7 +801,7 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container
g_Zone_Default_Setting.ExportSetting( *zone_container); g_Zone_Default_Setting.ExportSetting( *zone_container);
EQUIPOT* net = m_Pcb->FindNet( g_Zone_Default_Setting.m_NetcodeSelection ); EQUIPOT* net = m_Pcb->FindNet( g_Zone_Default_Setting.m_NetcodeSelection );
if( net ) // net === NULL should not occur if( net ) // net === NULL should not occur
zone_container->m_Netname = net->m_Netname; zone_container->m_Netname = net->GetNetname();
// Combine zones if possible : // Combine zones if possible :
@ -897,7 +897,7 @@ int WinEDA_PcbFrame::Fill_Zone( wxDC* DC, ZONE_CONTAINER* zone_container, bool v
} }
} }
else else
msg = net->m_Netname; msg = net->GetNetname();
} }
else else
msg = _( "No Net" ); msg = _( "No Net" );