pcbnew: better look of the drill map, in PS format

This commit is contained in:
charras 2009-03-19 10:54:53 +00:00
parent 9fb53f0c4f
commit df3939f894
1 changed files with 58 additions and 60 deletions

View File

@ -39,7 +39,7 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
{
unsigned ii;
int x, y;
int plotX, plotY, TextWidth;
int plotX, plotY, TextWidth, LineWidth;
int intervalle = 0, CharSize = 0;
EDA_BaseStruct* PtStruct;
int old_g_PlotOrient = g_PlotOrient;
@ -161,45 +161,26 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
}
}
TextWidth = 50; // Set Drill Symbols width in 1/10000 mils
if( IsPostScript( format ) )
// Set Drill Symbols width in 1/10000 mils
LineWidth = 50 / scale_x; // real scale will be CharScale * scale_x
int tmpPlotLineWidth = g_PlotLine_Width;
// Plot board outlines and drill map
if ( format == PLOT_FORMAT_POST)
{
sprintf( line, "%d setlinewidth\n", TextWidth );
fputs( line, aFile );
SetDefaultLineWidthPS( LineWidth );
SetCurrentLineWidthPS( LineWidth );
g_PlotLine_Width = LineWidth; // Default line width in FILAIRE mode, used to plot drill symbols
}
Gen_Drill_PcbMap( aPcb, aFile, aHoleListBuffer, aToolListBuffer, format );
/* Impression de la liste des symboles utilises */
CharSize = 800; /* text size in 1/10000 mils */
float CharScale = 1.0 / scale_x; /* real scale will be CharScale * scale_x,
* because the global plot scale is scale_x */
TextWidth = (int) (50 * CharScale); // Set text width
TextWidth = (int) ((CharSize * CharScale) / 10); // Set text width (thickness)
intervalle = (int) (CharSize * CharScale) + TextWidth;
switch( format )
{
case PLOT_FORMAT_HPGL:
{
/* generation des dim: commande SI x,y; x et y = dim en cm */
char csize[256];
sprintf( csize, "%2.3f", (float) CharSize * CharScale * 0.000254 );
sprintf( line, "SI %s, %s;\n", csize, csize );
break;
}
case PLOT_FORMAT_POST:
/* Reglage de l'epaisseur de traits des textes */
sprintf( line, "%d setlinewidth\n", TextWidth );
break;
default:
*line = 0;
break;
}
fputs( line, aFile );
switch( format )
{
@ -208,44 +189,27 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
g_PlotOffset.x = 0;
g_PlotOffset.y = 0;
InitPlotParametresPS( g_PlotOffset, SheetPS, scale_x, scale_x );
SetDefaultLineWidthPS( LineWidth );
SetCurrentLineWidthPS( LineWidth );
break;
case PLOT_FORMAT_HPGL:
InitPlotParametresHPGL( g_PlotOffset, scale_x, scale_x );
break;
}
/* Trace des informations */
/* Trace de "Infos" */
plotX = marge + 1000;
plotY = CharSize + 1000;
x = plotX; y = plotY;
x = +g_PlotOffset.x + (int) (x * fTextScale);
y = g_PlotOffset.y - (int) (y * fTextScale);
plotY += (int) ( intervalle * 1.2) + 200;
switch( format )
{
case PLOT_FORMAT_HPGL:
sprintf( line, "PU %d, %d; LBInfos\03;\n",
x + (int) (intervalle * CharScale * fTextScale),
y - (int) (CharSize / 2 * CharScale * fTextScale) );
InitPlotParametresHPGL( g_PlotOffset, scale_x, scale_x );
/* generation des dim: commande SI x,y; x et y = dim en cm */
char csize[256];
sprintf( csize, "%2.3f", (float) CharSize * CharScale * 0.000254 );
sprintf( line, "SI %s, %s;\n", csize, csize );
fputs( line, aFile );
break;
case PLOT_FORMAT_POST:
wxString Text = wxT( "Infos" );
PlotGraphicText( format, wxPoint(x,y), BLACK,
Text,
0, wxSize((int)(CharSize * CharScale), (int)(CharSize * CharScale)),
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
TextWidth );
break;
}
}
/* Trace des informations */
plotX = marge + 1000;
plotY = CharSize + 1000;
for( ii = 0; ii < aToolListBuffer.size(); ii++ )
{
int plot_diam;
@ -256,6 +220,9 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
x = plotX; y = plotY;
x = -g_PlotOffset.x + (int) (x * fTextScale);
y = g_PlotOffset.y - (int) (y * fTextScale);
sprintf( line, "%d setlinewidth\n", LineWidth );
SetDefaultLineWidthPS( LineWidth );
SetCurrentLineWidthPS( LineWidth );
PlotDrillSymbol( wxPoint( x, y ), plot_diam, ii, format );
intervalle = (int) (CharSize * CharScale) + TextWidth;
@ -265,7 +232,8 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
intervalle = plot_diam + 200 + TextWidth;
int rayon = plot_diam / 2;
x = plotX + rayon + (int) (CharSize * CharScale); y = plotY;
x = plotX + rayon + (int) (CharSize * CharScale);
y = plotY;
x = -g_PlotOffset.x + (int) (x * fTextScale);
y = g_PlotOffset.y - (int) (y * fTextScale);
@ -341,6 +309,8 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
aToolListBuffer[ii].m_TotalCount,
aToolListBuffer[ii].m_OvalCount );
msg += CONV_FROM_UTF8( line );
SetDefaultLineWidthPS( TextWidth );
SetCurrentLineWidthPS( TextWidth );
PlotGraphicText( format, wxPoint(x,y), BLACK,
msg,
0, wxSize((int)(CharSize * CharScale), (int)(CharSize * CharScale)),
@ -352,6 +322,32 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
plotY += intervalle;
}
/* Plot title "Info" */
plotY += (int) ( intervalle * 0.2); // Add exta line separation
x = plotX; y = plotY;
x = +g_PlotOffset.x + (int) (x * fTextScale);
y = g_PlotOffset.y - (int) (y * fTextScale);
switch( format )
{
case PLOT_FORMAT_HPGL:
sprintf( line, "PU %d, %d; LBInfo:\03;\n",
x + (int) (intervalle * CharScale * fTextScale),
y - (int) (CharSize / 2 * CharScale * fTextScale) );
fputs( line, aFile );
break;
case PLOT_FORMAT_POST:
SetDefaultLineWidthPS( TextWidth );
SetCurrentLineWidthPS( TextWidth );
wxString Text = wxT( "Info:" );
PlotGraphicText( format, wxPoint(x,y), BLACK,
Text,
0, wxSize((int)(CharSize * CharScale), (int)(CharSize * CharScale)),
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER,
TextWidth );
break;
}
switch( format )
{
case PLOT_FORMAT_HPGL:
@ -365,7 +361,9 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, w
SetLocaleTo_Default( ); // Revert to local notation for float numbers
// Retrieve setup values, changed for plotting drill map
g_PlotOrient = old_g_PlotOrient;
g_PlotLine_Width = tmpPlotLineWidth;
}