Finishing code cleaning in plot functions.
This commit is contained in:
parent
2d49ced742
commit
5fa61ecd25
|
@ -90,7 +90,15 @@ public:
|
||||||
void PlotDrawSegment( DRAWSEGMENT* PtSegm );
|
void PlotDrawSegment( DRAWSEGMENT* PtSegm );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lot items like text and graphics,
|
* Plot a pad.
|
||||||
|
* unlike other items, a pad had not a specific color,
|
||||||
|
* and be drawn as a non filled item although the plot mode is filled
|
||||||
|
* color and plot mode are needed by this function
|
||||||
|
*/
|
||||||
|
void PlotPad( D_PAD* aPad, EDA_COLOR_T aColor, EDA_DRAW_MODE_T aPlotMode );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* plot items like text and graphics,
|
||||||
* but not tracks and modules
|
* but not tracks and modules
|
||||||
*/
|
*/
|
||||||
void PlotBoardGraphicItems();
|
void PlotBoardGraphicItems();
|
||||||
|
|
|
@ -85,8 +85,6 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask,
|
||||||
if( (masklayer & layersmask_plotpads) == 0 )
|
if( (masklayer & layersmask_plotpads) == 0 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
wxPoint shape_pos = pad->ReturnShapePos();
|
|
||||||
|
|
||||||
EDA_COLOR_T color = ColorFromInt(0);
|
EDA_COLOR_T color = ColorFromInt(0);
|
||||||
if( (layersmask_plotpads & SILKSCREEN_LAYER_BACK) )
|
if( (layersmask_plotpads & SILKSCREEN_LAYER_BACK) )
|
||||||
color = aBoard->GetLayerColor( SILKSCREEN_N_BACK );
|
color = aBoard->GetLayerColor( SILKSCREEN_N_BACK );
|
||||||
|
@ -94,36 +92,7 @@ void PlotSilkScreen( BOARD *aBoard, PLOTTER* aPlotter, long aLayerMask,
|
||||||
if((layersmask_plotpads & SILKSCREEN_LAYER_FRONT ) )
|
if((layersmask_plotpads & SILKSCREEN_LAYER_FRONT ) )
|
||||||
color = ColorFromInt( color | aBoard->GetLayerColor( SILKSCREEN_N_FRONT ) );
|
color = ColorFromInt( color | aBoard->GetLayerColor( SILKSCREEN_N_FRONT ) );
|
||||||
|
|
||||||
// Set plot color (change WHITE to LIGHTGRAY because
|
itemplotter.PlotPad( pad, color, LINE );
|
||||||
// the white items are not seen on a white paper or screen
|
|
||||||
aPlotter->SetColor( color != WHITE ? color : LIGHTGRAY);
|
|
||||||
|
|
||||||
switch( pad->GetShape() )
|
|
||||||
{
|
|
||||||
case PAD_CIRCLE:
|
|
||||||
aPlotter->FlashPadCircle( shape_pos, pad->GetSize().x, LINE );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PAD_OVAL:
|
|
||||||
aPlotter->FlashPadOval( shape_pos, pad->GetSize(),
|
|
||||||
pad->GetOrientation(), LINE );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PAD_TRAPEZOID:
|
|
||||||
{
|
|
||||||
wxPoint coord[4];
|
|
||||||
pad->BuildPadPolygon( coord, wxSize(0,0), 0 );
|
|
||||||
aPlotter->FlashPadTrapez( shape_pos, coord,
|
|
||||||
pad->GetOrientation(), LINE );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PAD_RECT:
|
|
||||||
default:
|
|
||||||
aPlotter->FlashPadRect( shape_pos, pad->GetSize(),
|
|
||||||
pad->GetOrientation(), LINE );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,15 +271,11 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
|
||||||
if( (pad->GetLayerMask() & aLayerMask) == 0 )
|
if( (pad->GetLayerMask() & aLayerMask) == 0 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
wxPoint shape_pos = pad->ReturnShapePos();
|
|
||||||
|
|
||||||
wxSize margin;
|
wxSize margin;
|
||||||
double width_adj = 0;
|
double width_adj = 0;
|
||||||
|
|
||||||
if( aLayerMask & ALL_CU_LAYERS )
|
if( aLayerMask & ALL_CU_LAYERS )
|
||||||
{
|
|
||||||
width_adj = itemplotter.getFineWidthAdj();
|
width_adj = itemplotter.getFineWidthAdj();
|
||||||
}
|
|
||||||
|
|
||||||
switch( aLayerMask &
|
switch( aLayerMask &
|
||||||
( SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT |
|
( SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT |
|
||||||
|
@ -330,12 +295,12 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxSize size;
|
wxSize padPlotsSize;
|
||||||
size.x = pad->GetSize().x + ( 2 * margin.x ) + width_adj;
|
padPlotsSize.x = pad->GetSize().x + ( 2 * margin.x ) + width_adj;
|
||||||
size.y = pad->GetSize().y + ( 2 * margin.y ) + width_adj;
|
padPlotsSize.y = pad->GetSize().y + ( 2 * margin.y ) + width_adj;
|
||||||
|
|
||||||
// Don't draw a null size item :
|
// Don't draw a null size item :
|
||||||
if( size.x <= 0 || size.y <= 0 )
|
if( padPlotsSize.x <= 0 || padPlotsSize.y <= 0 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
EDA_COLOR_T color = BLACK;
|
EDA_COLOR_T color = BLACK;
|
||||||
|
@ -346,43 +311,27 @@ void PlotStandardLayer( BOARD *aBoard, PLOTTER* aPlotter,
|
||||||
if((pad->GetLayerMask() & LAYER_FRONT ) )
|
if((pad->GetLayerMask() & LAYER_FRONT ) )
|
||||||
color = ColorFromInt( color | aBoard->GetVisibleElementColor( PAD_FR_VISIBLE ) );
|
color = ColorFromInt( color | aBoard->GetVisibleElementColor( PAD_FR_VISIBLE ) );
|
||||||
|
|
||||||
// Set plot color (change WHITE to LIGHTGRAY because
|
// Temporary set the pad size to the required plot size:
|
||||||
// the white items are not seen on a white paper or screen
|
wxSize tmppadsize = pad->GetSize();
|
||||||
aPlotter->SetColor( color != WHITE ? color : LIGHTGRAY);
|
pad->SetSize( padPlotsSize );
|
||||||
|
|
||||||
switch( pad->GetShape() )
|
switch( pad->GetShape() )
|
||||||
{
|
{
|
||||||
case PAD_CIRCLE:
|
case PAD_CIRCLE:
|
||||||
if( aPlotOpt.GetSkipPlotNPTH_Pads() &&
|
|
||||||
(pad->GetSize() == pad->GetDrillSize()) &&
|
|
||||||
(pad->GetAttribute() == PAD_HOLE_NOT_PLATED) )
|
|
||||||
break;
|
|
||||||
|
|
||||||
aPlotter->FlashPadCircle( shape_pos, size.x, plotMode );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PAD_OVAL:
|
case PAD_OVAL:
|
||||||
if( aPlotOpt.GetSkipPlotNPTH_Pads() &&
|
if( aPlotOpt.GetSkipPlotNPTH_Pads() &&
|
||||||
(pad->GetSize() == pad->GetDrillSize()) &&
|
(pad->GetSize() == pad->GetDrillSize()) &&
|
||||||
(pad->GetAttribute() == PAD_HOLE_NOT_PLATED) )
|
(pad->GetAttribute() == PAD_HOLE_NOT_PLATED) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
aPlotter->FlashPadOval( shape_pos, size, pad->GetOrientation(), plotMode );
|
// Fall through:
|
||||||
break;
|
|
||||||
|
|
||||||
case PAD_TRAPEZOID:
|
case PAD_TRAPEZOID:
|
||||||
{
|
|
||||||
wxPoint coord[4];
|
|
||||||
pad->BuildPadPolygon( coord, margin, 0 );
|
|
||||||
aPlotter->FlashPadTrapez( shape_pos, coord, pad->GetOrientation(), plotMode );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PAD_RECT:
|
case PAD_RECT:
|
||||||
default:
|
default:
|
||||||
aPlotter->FlashPadRect( shape_pos, size, pad->GetOrientation(), plotMode );
|
itemplotter.PlotPad( pad, color, plotMode );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pad->SetSize( tmppadsize ); // Restore the pad size
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -663,8 +612,6 @@ PLOTTER *StartPlotBoard( BOARD *aBoard, PCB_PLOT_PARAMS *aPlotOpts,
|
||||||
wxASSERT( false );
|
wxASSERT( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( the_plotter )
|
|
||||||
{
|
|
||||||
the_plotter->SetFilename( aFullFileName );
|
the_plotter->SetFilename( aFullFileName );
|
||||||
|
|
||||||
// Compute the viewport and set the other options
|
// Compute the viewport and set the other options
|
||||||
|
@ -691,10 +638,8 @@ PLOTTER *StartPlotBoard( BOARD *aBoard, PCB_PLOT_PARAMS *aPlotOpts,
|
||||||
|
|
||||||
return the_plotter;
|
return the_plotter;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// error in start_plot( ) or before
|
// error in start_plot( )
|
||||||
wxMessageBox( _("Error creating plot file") );
|
delete the_plotter; // will close also output_file
|
||||||
delete the_plotter;
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,6 +68,55 @@ EDA_COLOR_T BRDITEMS_PLOTTER::getColor( int aLayer )
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Plot a pad.
|
||||||
|
* unlike other items, a pad had not a specific color,
|
||||||
|
* and be drawn as a non filled item although the plot mode is filled
|
||||||
|
* color and plot mode are needed by this function
|
||||||
|
*/
|
||||||
|
void BRDITEMS_PLOTTER::PlotPad( D_PAD* aPad, EDA_COLOR_T aColor, EDA_DRAW_MODE_T aPlotMode )
|
||||||
|
{
|
||||||
|
wxPoint shape_pos = aPad->ReturnShapePos();
|
||||||
|
|
||||||
|
// Set plot color (change WHITE to LIGHTGRAY because
|
||||||
|
// the white items are not seen on a white paper or screen
|
||||||
|
m_plotter->SetColor( aColor != WHITE ? aColor : LIGHTGRAY);
|
||||||
|
|
||||||
|
switch( aPad->GetShape() )
|
||||||
|
{
|
||||||
|
case PAD_CIRCLE:
|
||||||
|
m_plotter->FlashPadCircle( shape_pos, aPad->GetSize().x, aPlotMode );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PAD_OVAL:
|
||||||
|
m_plotter->FlashPadOval( shape_pos, aPad->GetSize(),
|
||||||
|
aPad->GetOrientation(), aPlotMode );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PAD_TRAPEZOID:
|
||||||
|
{
|
||||||
|
wxPoint coord[4];
|
||||||
|
aPad->BuildPadPolygon( coord, wxSize(0,0), 0 );
|
||||||
|
m_plotter->FlashPadTrapez( shape_pos, coord,
|
||||||
|
aPad->GetOrientation(), aPlotMode );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PAD_RECT:
|
||||||
|
default:
|
||||||
|
m_plotter->FlashPadRect( shape_pos, aPad->GetSize(),
|
||||||
|
aPad->GetOrientation(), aPlotMode );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Plot field of a module (footprint)
|
||||||
|
* Reference, Value, and other fields are plotted only if
|
||||||
|
* the corresponding option is enabled
|
||||||
|
* Invisible text fields are plotted only if PlotInvisibleText option is set
|
||||||
|
* usually they are not plotted.
|
||||||
|
*/
|
||||||
bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
|
bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
|
||||||
{
|
{
|
||||||
// see if we want to plot VALUE and REF fields
|
// see if we want to plot VALUE and REF fields
|
||||||
|
@ -77,7 +126,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
|
||||||
TEXTE_MODULE* textModule = aModule->m_Reference;
|
TEXTE_MODULE* textModule = aModule->m_Reference;
|
||||||
unsigned textLayer = textModule->GetLayer();
|
unsigned textLayer = textModule->GetLayer();
|
||||||
|
|
||||||
if( textLayer >= 32 )
|
if( textLayer >= LAYER_COUNT )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if( ( ( 1 << textLayer ) & m_layerMask ) == 0 )
|
if( ( ( 1 << textLayer ) & m_layerMask ) == 0 )
|
||||||
|
@ -89,7 +138,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
|
||||||
textModule = aModule->m_Value;
|
textModule = aModule->m_Value;
|
||||||
textLayer = textModule->GetLayer();
|
textLayer = textModule->GetLayer();
|
||||||
|
|
||||||
if( textLayer > 32 )
|
if( textLayer > LAYER_COUNT )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if( ( (1 << textLayer) & m_layerMask ) == 0 )
|
if( ( (1 << textLayer) & m_layerMask ) == 0 )
|
||||||
|
@ -129,7 +178,7 @@ bool BRDITEMS_PLOTTER::PlotAllTextsModule( MODULE* aModule )
|
||||||
|
|
||||||
textLayer = textModule->GetLayer();
|
textLayer = textModule->GetLayer();
|
||||||
|
|
||||||
if( textLayer >= 32 )
|
if( textLayer >= LAYER_COUNT )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if( !( ( 1 << textLayer ) & m_layerMask ) )
|
if( !( ( 1 << textLayer ) & m_layerMask ) )
|
||||||
|
|
Loading…
Reference in New Issue