Commit e9f557e6 authored by jean-pierre charras's avatar jean-pierre charras

Pcbnew plot functions: code cleanup, coding policy fixes and minor enhancements

parent dd5386db
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#endif #endif
#ifndef KICAD_BUILD_VERSION #ifndef KICAD_BUILD_VERSION
#define KICAD_BUILD_VERSION "(2010-04-19 BZR 23xx)" #define KICAD_BUILD_VERSION "(2010-12-10 BZR 26xx)"
#endif #endif
//#define VERSION_STABILITY "stable" //#define VERSION_STABILITY "stable"
......
...@@ -28,7 +28,7 @@ PLOTTER::PLOTTER( PlotFormat aPlotType ) ...@@ -28,7 +28,7 @@ PLOTTER::PLOTTER( PlotFormat aPlotType )
default_pen_width = 0; default_pen_width = 0;
current_pen_width = -1; /* To-be-set marker */ current_pen_width = -1; /* To-be-set marker */
pen_state = 'Z'; /* End-of-path idle */ pen_state = 'Z'; /* End-of-path idle */
plot_orient_options = 0; /* Mirror flag */ plotMirror = 0; /* Mirror flag */
output_file = 0; output_file = 0;
color_mode = false; /* Start as a BW plot */ color_mode = false; /* Start as a BW plot */
negative_mode = false; negative_mode = false;
...@@ -43,7 +43,7 @@ void PLOTTER::user_to_device_coordinates( wxPoint& pos ) ...@@ -43,7 +43,7 @@ void PLOTTER::user_to_device_coordinates( wxPoint& pos )
{ {
pos.x = (int) ( (pos.x - plot_offset.x) * plot_scale * device_scale ); pos.x = (int) ( (pos.x - plot_offset.x) * plot_scale * device_scale );
if( plot_orient_options == PLOT_MIROIR ) if( plotMirror )
pos.y = (int) ( ( pos.y - plot_offset.y ) * plot_scale * device_scale ); pos.y = (int) ( ( pos.y - plot_offset.y ) * plot_scale * device_scale );
else else
pos.y = (int) ( ( paper_size.y - ( pos.y - plot_offset.y ) pos.y = (int) ( ( paper_size.y - ( pos.y - plot_offset.y )
......
...@@ -14,15 +14,14 @@ ...@@ -14,15 +14,14 @@
/* Set the plot offset for the current plotting /* Set the plot offset for the current plotting
*/ */
void DXF_PLOTTER::set_viewport( wxPoint offset, void DXF_PLOTTER::set_viewport( wxPoint aOffset, double aScale, bool aMirror )
double aScale, int orient )
{ {
wxASSERT( !output_file ); wxASSERT( !output_file );
plot_offset = offset; plot_offset = aOffset;
plot_scale = aScale; plot_scale = aScale;
device_scale = 1; device_scale = 1;
set_default_line_width( 0 ); /* No line width on DXF */ set_default_line_width( 0 ); /* No line width on DXF */
plot_orient_options = 0; /* No mirroring on DXF */ plotMirror = false; /* No mirroring on DXF */
current_color = BLACK; current_color = BLACK;
} }
......
...@@ -21,13 +21,12 @@ ...@@ -21,13 +21,12 @@
* @param aOffset = plot offset * @param aOffset = plot offset
* @param aScale = coordinate scale (scale coefficient for coordinates) * @param aScale = coordinate scale (scale coefficient for coordinates)
*/ */
void GERBER_PLOTTER::set_viewport( wxPoint offset, void GERBER_PLOTTER::set_viewport( wxPoint aOffset, double aScale, bool aMirror )
double aScale, int orient )
{ {
wxASSERT( !output_file ); wxASSERT( !output_file );
wxASSERT( orient == 0 ); wxASSERT( aMirror == false );
plot_orient_options = 0; plotMirror = false;
plot_offset = offset; plot_offset = aOffset;
wxASSERT( aScale == 1 ); wxASSERT( aScale == 1 );
plot_scale = 1; plot_scale = 1;
device_scale = 1; device_scale = 1;
......
...@@ -17,14 +17,14 @@ const double SCALE_HPGL = 0.102041; ...@@ -17,14 +17,14 @@ const double SCALE_HPGL = 0.102041;
/* Set the plot offset for the current plotting /* Set the plot offset for the current plotting
*/ */
void HPGL_PLOTTER::set_viewport( wxPoint offset, double aScale, int orient ) void HPGL_PLOTTER::set_viewport( wxPoint aOffset, double aScale, bool aMirror )
{ {
wxASSERT( !output_file ); wxASSERT( !output_file );
plot_offset = offset; plot_offset = aOffset;
plot_scale = aScale; plot_scale = aScale;
device_scale = SCALE_HPGL; device_scale = SCALE_HPGL;
set_default_line_width( 100 ); /* default line width in 1 / 1000 inch */ set_default_line_width( 100 ); /* default line width in 1 / 1000 inch */
plot_orient_options = orient; plotMirror = aMirror;
} }
...@@ -213,7 +213,7 @@ void HPGL_PLOTTER::arc( wxPoint centre, int StAngle, int EndAngle, int rayon, ...@@ -213,7 +213,7 @@ void HPGL_PLOTTER::arc( wxPoint centre, int StAngle, int EndAngle, int rayon,
cpos = centre; cpos = centre;
user_to_device_coordinates( cpos ); user_to_device_coordinates( cpos );
if( plot_orient_options == PLOT_MIROIR ) if( plotMirror )
angle = (StAngle - EndAngle) / 10.0; angle = (StAngle - EndAngle) / 10.0;
else else
angle = (EndAngle - StAngle) / 10.0; angle = (EndAngle - StAngle) / 10.0;
......
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
/* Set the plot offset for the current plotting */ /* Set the plot offset for the current plotting */
void PS_PLOTTER::set_viewport( wxPoint offset, double aScale, int orient ) void PS_PLOTTER::set_viewport( wxPoint aOffset, double aScale, bool aMirror )
{ {
wxASSERT( !output_file ); wxASSERT( !output_file );
plot_orient_options = orient; plotMirror = aMirror;
plot_offset = offset; plot_offset = aOffset;
plot_scale = aScale; plot_scale = aScale;
device_scale = 1; /* PS references in decimals */ device_scale = 1; /* PS references in decimals */
set_default_line_width( 100 ); /* default line width in 1/1000 inch */ set_default_line_width( 100 ); /* default line width in 1/1000 inch */
...@@ -157,7 +157,7 @@ void PS_PLOTTER::arc( wxPoint centre, int StAngle, int EndAngle, int radius, ...@@ -157,7 +157,7 @@ void PS_PLOTTER::arc( wxPoint centre, int StAngle, int EndAngle, int radius,
// Calculate start point. // Calculate start point.
user_to_device_coordinates( centre ); user_to_device_coordinates( centre );
radius = wxRound( user_to_device_size( radius ) ); radius = wxRound( user_to_device_size( radius ) );
if( plot_orient_options == PLOT_MIROIR ) if( plotMirror )
fprintf( output_file, "%d %d %d %g %g arc%d\n", centre.x, centre.y, fprintf( output_file, "%d %d %d %g %g arc%d\n", centre.x, centre.y,
radius, (double) -EndAngle / 10, (double) -StAngle / 10, radius, (double) -EndAngle / 10, (double) -StAngle / 10,
fill ); fill );
......
...@@ -26,14 +26,11 @@ enum PlotFormat { ...@@ -26,14 +26,11 @@ enum PlotFormat {
PLOT_FORMAT_DXF PLOT_FORMAT_DXF
}; };
const int PLOT_MIROIR = 1;
class PLOTTER class PLOTTER
{ {
public: public:
PlotFormat m_PlotType; // type of plot PlotFormat m_PlotType; // type of plot
public: public: PLOTTER( PlotFormat aPlotType );
PLOTTER( PlotFormat aPlotType );
virtual ~PLOTTER() virtual ~PLOTTER()
{ {
...@@ -91,8 +88,7 @@ public: ...@@ -91,8 +88,7 @@ public:
} }
virtual void set_viewport( wxPoint offset, virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror ) = 0;
double scale, int orient ) = 0;
/* Standard primitives */ /* Standard primitives */
virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill,
...@@ -120,6 +116,7 @@ public: ...@@ -120,6 +116,7 @@ public:
GRTraceMode trace_mode ) = 0; GRTraceMode trace_mode ) = 0;
virtual void flash_pad_rect( wxPoint pos, wxSize size, virtual void flash_pad_rect( wxPoint pos, wxSize size,
int orient, GRTraceMode trace_mode ) = 0; int orient, GRTraceMode trace_mode ) = 0;
/** virtual function flash_pad_trapez /** virtual function flash_pad_trapez
* flash a trapezoidal pad * flash a trapezoidal pad
* @param aPadPos = the position of the shape * @param aPadPos = the position of the shape
...@@ -206,7 +203,7 @@ protected: ...@@ -206,7 +203,7 @@ protected:
char pen_state; char pen_state;
wxPoint pen_lastpos; wxPoint pen_lastpos;
/* Other stuff */ /* Other stuff */
int plot_orient_options; /* For now, mirror plot */ bool plotMirror;
wxString creator; wxString creator;
wxString filename; wxString filename;
Ki_PageDescr* sheet; Ki_PageDescr* sheet;
...@@ -215,11 +212,11 @@ protected: ...@@ -215,11 +212,11 @@ protected:
class HPGL_PLOTTER : public PLOTTER class HPGL_PLOTTER : public PLOTTER
{ {
public: public: HPGL_PLOTTER() : PLOTTER( PLOT_FORMAT_HPGL )
HPGL_PLOTTER() : PLOTTER(PLOT_FORMAT_HPGL)
{ {
} }
virtual bool start_plot( FILE* fout ); virtual bool start_plot( FILE* fout );
virtual bool end_plot(); virtual bool end_plot();
...@@ -261,8 +258,7 @@ public: ...@@ -261,8 +258,7 @@ public:
} }
virtual void set_viewport( wxPoint offset, virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
double scale, int orient );
virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 ); virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 );
virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 ); virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 );
virtual void poly( int nb_segm, int* coord, FILL_T fill, int width = -1 ); virtual void poly( int nb_segm, int* coord, FILL_T fill, int width = -1 );
...@@ -277,6 +273,7 @@ public: ...@@ -277,6 +273,7 @@ public:
GRTraceMode trace_mode ); GRTraceMode trace_mode );
virtual void flash_pad_rect( wxPoint pos, wxSize size, virtual void flash_pad_rect( wxPoint pos, wxSize size,
int orient, GRTraceMode trace_mode ); int orient, GRTraceMode trace_mode );
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
int aPadOrient, GRTraceMode aTrace_Mode ); int aPadOrient, GRTraceMode aTrace_Mode );
...@@ -293,13 +290,13 @@ protected: ...@@ -293,13 +290,13 @@ protected:
class PS_PLOTTER : public PLOTTER class PS_PLOTTER : public PLOTTER
{ {
public: public: PS_PLOTTER() : PLOTTER( PLOT_FORMAT_POST )
PS_PLOTTER() : PLOTTER(PLOT_FORMAT_POST)
{ {
plot_scale_adjX = 1; plot_scale_adjX = 1;
plot_scale_adjY = 1; plot_scale_adjY = 1;
} }
virtual bool start_plot( FILE* fout ); virtual bool start_plot( FILE* fout );
virtual bool end_plot(); virtual bool end_plot();
virtual void set_current_line_width( int width ); virtual void set_current_line_width( int width );
...@@ -314,8 +311,7 @@ public: ...@@ -314,8 +311,7 @@ public:
} }
virtual void set_viewport( wxPoint offset, virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
double scale, int orient );
virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 ); virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 );
virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 ); virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 );
virtual void arc( wxPoint centre, int StAngle, int EndAngle, int rayon, virtual void arc( wxPoint centre, int StAngle, int EndAngle, int rayon,
...@@ -328,6 +324,7 @@ public: ...@@ -328,6 +324,7 @@ public:
GRTraceMode trace_mode ); GRTraceMode trace_mode );
virtual void flash_pad_rect( wxPoint pos, wxSize size, virtual void flash_pad_rect( wxPoint pos, wxSize size,
int orient, GRTraceMode trace_mode ); int orient, GRTraceMode trace_mode );
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
int aPadOrient, GRTraceMode aTrace_Mode ); int aPadOrient, GRTraceMode aTrace_Mode );
...@@ -359,8 +356,7 @@ struct APERTURE ...@@ -359,8 +356,7 @@ struct APERTURE
class GERBER_PLOTTER : public PLOTTER class GERBER_PLOTTER : public PLOTTER
{ {
public: public: GERBER_PLOTTER() : PLOTTER( PLOT_FORMAT_GERBER )
GERBER_PLOTTER() : PLOTTER(PLOT_FORMAT_GERBER)
{ {
work_file = 0; work_file = 0;
final_file = 0; final_file = 0;
...@@ -376,8 +372,7 @@ public: ...@@ -376,8 +372,7 @@ public:
/* RS274X has no dashing, nor colours */ /* RS274X has no dashing, nor colours */
virtual void set_dash( bool dashed ) {}; virtual void set_dash( bool dashed ) {};
virtual void set_color( int color ) {}; virtual void set_color( int color ) {};
virtual void set_viewport( wxPoint offset, virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
double scale, int orient );
virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 ); virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 );
virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 ); virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 );
virtual void poly( int nb_segm, int* coord, FILL_T fill, int width = -1 ); virtual void poly( int nb_segm, int* coord, FILL_T fill, int width = -1 );
...@@ -388,6 +383,7 @@ public: ...@@ -388,6 +383,7 @@ public:
GRTraceMode trace_mode ); GRTraceMode trace_mode );
virtual void flash_pad_rect( wxPoint pos, wxSize size, virtual void flash_pad_rect( wxPoint pos, wxSize size,
int orient, GRTraceMode trace_mode ); int orient, GRTraceMode trace_mode );
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
int aPadOrient, GRTraceMode aTrace_Mode ); int aPadOrient, GRTraceMode aTrace_Mode );
...@@ -411,11 +407,11 @@ protected: ...@@ -411,11 +407,11 @@ protected:
class DXF_PLOTTER : public PLOTTER class DXF_PLOTTER : public PLOTTER
{ {
public: public: DXF_PLOTTER() : PLOTTER( PLOT_FORMAT_DXF )
DXF_PLOTTER() : PLOTTER(PLOT_FORMAT_DXF)
{ {
} }
virtual bool start_plot( FILE* fout ); virtual bool start_plot( FILE* fout );
virtual bool end_plot(); virtual bool end_plot();
...@@ -434,8 +430,7 @@ public: ...@@ -434,8 +430,7 @@ public:
virtual void set_color( int color ); virtual void set_color( int color );
virtual void set_viewport( wxPoint offset, virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
double scale, int orient );
virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 ); virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill, int width = -1 );
virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 ); virtual void circle( wxPoint pos, int diametre, FILL_T fill, int width = -1 );
virtual void poly( int nb_segm, int* coord, FILL_T fill, int width = -1 ); virtual void poly( int nb_segm, int* coord, FILL_T fill, int width = -1 );
...@@ -450,6 +445,7 @@ public: ...@@ -450,6 +445,7 @@ public:
GRTraceMode trace_mode ); GRTraceMode trace_mode );
virtual void flash_pad_rect( wxPoint pos, wxSize size, virtual void flash_pad_rect( wxPoint pos, wxSize size,
int orient, GRTraceMode trace_mode ); int orient, GRTraceMode trace_mode );
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
int aPadOrient, GRTraceMode aTrace_Mode ); int aPadOrient, GRTraceMode aTrace_Mode );
......
...@@ -133,11 +133,11 @@ void DIALOG_GENDRILL::InitDisplayParams( void ) ...@@ -133,11 +133,11 @@ void DIALOG_GENDRILL::InitDisplayParams( void )
m_MicroViaDrillValue->SetLabel( _( "Use Netclasses values" ) ); m_MicroViaDrillValue->SetLabel( _( "Use Netclasses values" ) );
msg.Empty(); msg.Empty();
msg << g_pcb_plot_options.HPGL_Pen_Num; msg << g_PcbPlotOptions.m_HPGLPenNum;
m_PenNum->SetValue( msg ); m_PenNum->SetValue( msg );
msg.Empty(); msg.Empty();
msg << g_pcb_plot_options.HPGL_Pen_Speed; msg << g_PcbPlotOptions.m_HPGLPenSpeed;
m_PenSpeed->SetValue( msg ); m_PenSpeed->SetValue( msg );
// See if we have some buried vias or/and microvias, and display // See if we have some buried vias or/and microvias, and display
...@@ -290,11 +290,11 @@ void DIALOG_GENDRILL::SetParams( void ) ...@@ -290,11 +290,11 @@ void DIALOG_GENDRILL::SetParams( void )
msg = m_PenSpeed->GetValue(); msg = m_PenSpeed->GetValue();
if( msg.ToLong( &ltmp ) ) if( msg.ToLong( &ltmp ) )
g_pcb_plot_options.HPGL_Pen_Speed = ltmp; g_PcbPlotOptions.m_HPGLPenSpeed = ltmp;
msg = m_PenNum->GetValue(); msg = m_PenNum->GetValue();
if( msg.ToLong( &ltmp ) ) if( msg.ToLong( &ltmp ) )
g_pcb_plot_options.HPGL_Pen_Num = ltmp; g_PcbPlotOptions.m_HPGLPenNum = ltmp;
if( m_Choice_Drill_Offset->GetSelection() == 0 ) if( m_Choice_Drill_Offset->GetSelection() == 0 )
m_FileDrillOffset = wxPoint( 0, 0 ); m_FileDrillOffset = wxPoint( 0, 0 );
else else
......
...@@ -40,10 +40,10 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr ...@@ -40,10 +40,10 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr
bLeftSizer->Add( m_Use_Gerber_Extensions, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); bLeftSizer->Add( m_Use_Gerber_Extensions, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_Exclude_Edges_Pcb = new wxCheckBox( this, wxID_ANY, _("Exclude pcb edge layer"), wxDefaultPosition, wxDefaultSize, 0 ); m_excludeEdgeLayerOpt = new wxCheckBox( this, wxID_ANY, _("Exclude pcb edge layer"), wxDefaultPosition, wxDefaultSize, 0 );
m_Exclude_Edges_Pcb->SetToolTip( _("Exclude contents of the pcb edge layer from all other layers") ); m_excludeEdgeLayerOpt->SetToolTip( _("Exclude contents of the pcb edge layer from all other layers") );
bLeftSizer->Add( m_Exclude_Edges_Pcb, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); bLeftSizer->Add( m_excludeEdgeLayerOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_SubtractMaskFromSilk = new wxCheckBox( this, wxID_ANY, _("Subtract mask from silk"), wxDefaultPosition, wxDefaultSize, 0 ); m_SubtractMaskFromSilk = new wxCheckBox( this, wxID_ANY, _("Subtract mask from silk"), wxDefaultPosition, wxDefaultSize, 0 );
m_SubtractMaskFromSilk->SetToolTip( _("Remove silkscreen from areas without soldermask") ); m_SubtractMaskFromSilk->SetToolTip( _("Remove silkscreen from areas without soldermask") );
...@@ -147,8 +147,8 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr ...@@ -147,8 +147,8 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr
wxStaticBoxSizer* sbSizerPSOpt; wxStaticBoxSizer* sbSizerPSOpt;
sbSizerPSOpt = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("PS Options:") ), wxVERTICAL ); sbSizerPSOpt = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("PS Options:") ), wxVERTICAL );
m_Plot_PS_Negative = new wxCheckBox( this, wxID_ANY, _("Plot negative"), wxDefaultPosition, wxDefaultSize, 0 ); m_plotPSNegativeOpt = new wxCheckBox( this, wxID_ANY, _("Plot negative"), wxDefaultPosition, wxDefaultSize, 0 );
sbSizerPSOpt->Add( m_Plot_PS_Negative, 0, wxALL, 5 ); sbSizerPSOpt->Add( m_plotPSNegativeOpt, 0, wxALL, 5 );
bSizerFmtPlot->Add( sbSizerPSOpt, 0, wxEXPAND, 5 ); bSizerFmtPlot->Add( sbSizerPSOpt, 0, wxEXPAND, 5 );
......
...@@ -218,7 +218,7 @@ ...@@ -218,7 +218,7 @@
<property name="label">Exclude pcb edge layer</property> <property name="label">Exclude pcb edge layer</property>
<property name="maximum_size"></property> <property name="maximum_size"></property>
<property name="minimum_size"></property> <property name="minimum_size"></property>
<property name="name">m_Exclude_Edges_Pcb</property> <property name="name">m_excludeEdgeLayerOpt</property>
<property name="permission">protected</property> <property name="permission">protected</property>
<property name="pos"></property> <property name="pos"></property>
<property name="size"></property> <property name="size"></property>
...@@ -1365,7 +1365,7 @@ ...@@ -1365,7 +1365,7 @@
<property name="label">Plot negative</property> <property name="label">Plot negative</property>
<property name="maximum_size"></property> <property name="maximum_size"></property>
<property name="minimum_size"></property> <property name="minimum_size"></property>
<property name="name">m_Plot_PS_Negative</property> <property name="name">m_plotPSNegativeOpt</property>
<property name="permission">protected</property> <property name="permission">protected</property>
<property name="pos"></property> <property name="pos"></property>
<property name="size"></property> <property name="size"></property>
......
...@@ -54,7 +54,7 @@ class DIALOG_PLOT_BASE : public wxDialog ...@@ -54,7 +54,7 @@ class DIALOG_PLOT_BASE : public wxDialog
wxStaticBoxSizer* m_CopperLayersBoxSizer; wxStaticBoxSizer* m_CopperLayersBoxSizer;
wxStaticBoxSizer* m_TechnicalLayersBoxSizer; wxStaticBoxSizer* m_TechnicalLayersBoxSizer;
wxCheckBox* m_Use_Gerber_Extensions; wxCheckBox* m_Use_Gerber_Extensions;
wxCheckBox* m_Exclude_Edges_Pcb; wxCheckBox* m_excludeEdgeLayerOpt;
wxCheckBox* m_SubtractMaskFromSilk; wxCheckBox* m_SubtractMaskFromSilk;
wxCheckBox* m_Plot_Sheet_Ref; wxCheckBox* m_Plot_Sheet_Ref;
wxCheckBox* m_Plot_Pads_on_Silkscreen; wxCheckBox* m_Plot_Pads_on_Silkscreen;
...@@ -73,7 +73,7 @@ class DIALOG_PLOT_BASE : public wxDialog ...@@ -73,7 +73,7 @@ class DIALOG_PLOT_BASE : public wxDialog
wxTextCtrl* m_HPGLPenSpeedOpt; wxTextCtrl* m_HPGLPenSpeedOpt;
wxStaticText* m_textPenOvr; wxStaticText* m_textPenOvr;
wxTextCtrl* m_HPGLPenOverlayOpt; wxTextCtrl* m_HPGLPenOverlayOpt;
wxCheckBox* m_Plot_PS_Negative; wxCheckBox* m_plotPSNegativeOpt;
wxTextCtrl* m_OutputDirectory; wxTextCtrl* m_OutputDirectory;
wxButton* m_BrowseButton; wxButton* m_BrowseButton;
wxCheckBox* m_PlotMirorOpt; wxCheckBox* m_PlotMirorOpt;
......
...@@ -194,9 +194,9 @@ void DIALOG_PRINT_FOR_MODEDIT::OnPrintButtonClick( wxCommandEvent& event ) ...@@ -194,9 +194,9 @@ void DIALOG_PRINT_FOR_MODEDIT::OnPrintButtonClick( wxCommandEvent& event )
s_Parameters.m_Print_Black_and_White = m_ModeColorOption->GetSelection(); s_Parameters.m_Print_Black_and_White = m_ModeColorOption->GetSelection();
s_Parameters.m_PrintScale = s_ScaleList[m_ScaleOption->GetSelection()]; s_Parameters.m_PrintScale = s_ScaleList[m_ScaleOption->GetSelection()];
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_XScaleAdjust; g_PcbPlotOptions.m_FineScaleAdjustX = s_Parameters.m_XScaleAdjust;
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_YScaleAdjust; g_PcbPlotOptions.m_FineScaleAdjustY = s_Parameters.m_YScaleAdjust;
g_pcb_plot_options.Scale = s_Parameters.m_PrintScale; g_PcbPlotOptions.m_PlotScale = s_Parameters.m_PrintScale;
wxPrintDialogData printDialogData( *g_PrintData ); wxPrintDialogData printDialogData( *g_PrintData );
wxPrinter printer( &printDialogData ); wxPrinter printer( &printDialogData );
......
...@@ -383,7 +383,7 @@ void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( ) ...@@ -383,7 +383,7 @@ void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( )
int idx = m_ScaleOption->GetSelection(); int idx = m_ScaleOption->GetSelection();
s_Parameters.m_PrintScale = s_ScaleList[idx]; s_Parameters.m_PrintScale = s_ScaleList[idx];
g_pcb_plot_options.Scale = s_Parameters.m_PrintScale; g_PcbPlotOptions.m_PlotScale = s_Parameters.m_PrintScale;
if( m_FineAdjustXscaleOpt ) if( m_FineAdjustXscaleOpt )
{ {
...@@ -400,8 +400,8 @@ void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( ) ...@@ -400,8 +400,8 @@ void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( )
DisplayInfoMessage( NULL, _( "Warning: Scale option set to a very small value" ) ); DisplayInfoMessage( NULL, _( "Warning: Scale option set to a very small value" ) );
m_FineAdjustYscaleOpt->GetValue().ToDouble( &s_Parameters.m_YScaleAdjust ); m_FineAdjustYscaleOpt->GetValue().ToDouble( &s_Parameters.m_YScaleAdjust );
} }
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_XScaleAdjust; g_PcbPlotOptions.m_FineScaleAdjustX = s_Parameters.m_XScaleAdjust;
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_YScaleAdjust; g_PcbPlotOptions.m_FineScaleAdjustY = s_Parameters.m_YScaleAdjust;
SetPenWidth(); SetPenWidth();
} }
......
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
#include "fctsys.h" #include "fctsys.h"
using namespace std;
#include <vector> #include <vector>
#include "common.h" #include "common.h"
...@@ -67,8 +65,8 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName, ...@@ -67,8 +65,8 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName,
scale = 1; scale = 1;
HPGL_PLOTTER* hpgl_plotter = new HPGL_PLOTTER; HPGL_PLOTTER* hpgl_plotter = new HPGL_PLOTTER;
plotter = hpgl_plotter; plotter = hpgl_plotter;
hpgl_plotter->set_pen_number( g_pcb_plot_options.HPGL_Pen_Num ); hpgl_plotter->set_pen_number( g_PcbPlotOptions.m_HPGLPenNum );
hpgl_plotter->set_pen_speed( g_pcb_plot_options.HPGL_Pen_Speed ); hpgl_plotter->set_pen_speed( g_PcbPlotOptions.m_HPGLPenSpeed );
hpgl_plotter->set_pen_overlap( 0 ); hpgl_plotter->set_pen_overlap( 0 );
plotter->set_paper_size( aSheet ); plotter->set_paper_size( aSheet );
plotter->set_viewport( offset, scale, 0 ); plotter->set_viewport( offset, scale, 0 );
......
...@@ -388,18 +388,6 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetConfigurationSettings() ...@@ -388,18 +388,6 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetConfigurationSettings()
m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoRatsN" ), m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoRatsN" ),
ITEM_COLOR( RATSNEST_VISIBLE ), ITEM_COLOR( RATSNEST_VISIBLE ),
WHITE ) ); WHITE ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGLnum" ),
&g_pcb_plot_options.HPGL_Pen_Num,
1, 1, 16 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGdiam" ),
&g_pcb_plot_options.HPGL_Pen_Diam,
15, 0, 100 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGLSpd" ),
&g_pcb_plot_options.HPGL_Pen_Speed,
20, 0, 1000 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGLrec" ),
&g_pcb_plot_options.HPGL_Pen_Recouvrement,
2, 0, 0x100 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "TimeOut" ), &g_TimeOut, m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "TimeOut" ), &g_TimeOut,
600, 0, 60000 ) ); 600, 0, 60000 ) );
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DPolair" ), m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DPolair" ),
...@@ -411,14 +399,33 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetConfigurationSettings() ...@@ -411,14 +399,33 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetConfigurationSettings()
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "TwoSegT" ), m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "TwoSegT" ),
&g_TwoSegmentTrackBuild, TRUE ) ); &g_TwoSegmentTrackBuild, TRUE ) );
// Plot options: // Plot options:
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGLnum" ),
&g_PcbPlotOptions.m_HPGLPenNum,
1, 1, 16 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGdiam" ),
&g_PcbPlotOptions.m_HPGLPenDiam,
15, 0, 100 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGLSpd" ),
&g_PcbPlotOptions.m_HPGLPenSpeed,
20, 0, 1000 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "HPGLrec" ),
&g_PcbPlotOptions.m_HPGLPenOvr,
2, 0, 0x100 ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "PlotOutputFormat" ), m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "PlotOutputFormat" ),
&g_pcb_plot_options.PlotFormat, PLOT_FORMAT_GERBER ) ); &g_PcbPlotOptions.m_PlotFormat, PLOT_FORMAT_GERBER ) );
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "EdgeLayerGerberOpt" ), m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "EdgeLayerGerberOpt" ),
&g_pcb_plot_options.Exclude_Edges_Pcb, true ) ); &g_PcbPlotOptions.m_ExcludeEdgeLayer, true ) );
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "SubstractMasktoSilk" ), m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "SubstractMasktoSilk" ),
&g_pcb_plot_options.m_SubtractMaskFromSilk, false ) ); &g_PcbPlotOptions.m_SubtractMaskFromSilk, false ) );
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PlotPadsOnSilkscreen" ), m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PlotPadsOnSilkscreen" ),
&g_pcb_plot_options.PlotPadsOnSilkLayer, false ) ); &g_PcbPlotOptions.m_PlotPadsOnSilkLayer, false ) );
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PlotFrameRef" ),
&g_PcbPlotOptions.m_PlotFrameRef, false ) );
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "PlotViasOnMask" ),
&g_PcbPlotOptions.m_PlotViaOnMaskLayer, false ) );
m_configSettings.push_back( new PARAM_CFG_INT( true, wxT( "PlotHolesOpt" ),
(int*)&g_PcbPlotOptions.m_DrillShapeOpt,
PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE ) );
return m_configSettings; return m_configSettings;
} }
This diff is collapsed.
...@@ -25,58 +25,64 @@ ...@@ -25,58 +25,64 @@
// Small drill marks diameter value (in internal value = 1/10000 inch) // Small drill marks diameter value (in internal value = 1/10000 inch)
#define SMALL_DRILL 150 #define SMALL_DRILL 150
/* Plot Options : */ /* a helper class to handle plot parameters and options when plotting/printing a board
class PCB_Plot_Options */
class PCB_PLOT_PARAMS
{ {
public: public:
bool Exclude_Edges_Pcb; bool m_ExcludeEdgeLayer; // True: do not plot edge layer when plotting other layers
int PlotLine_Width; // False: Edge layer always plotted (merged) when plotting other layers
bool Plot_Frame_Ref; // True to plot/print frame references int m_PlotLineWidth;
bool DrawViaOnMaskLayer; // True if vias are drawn on Mask layer bool m_PlotFrameRef; // True to plot/print frame references
bool m_PlotViaOnMaskLayer; // True if vias are drawn on Mask layer
// (ie protected by mask) // (ie protected by mask)
GRTraceMode Trace_Mode; GRTraceMode Trace_Mode;
bool Plot_Set_MIROIR; int m_HPGLPenNum;
int HPGL_Pen_Num; int m_HPGLPenSpeed;
int HPGL_Pen_Speed; int m_HPGLPenDiam;
int HPGL_Pen_Diam; int m_HPGLPenOvr;
int HPGL_Pen_Recouvrement; int m_PlotPSColorOpt; // True for color Postscript output
int PlotPSColorOpt; // True for color Postscript output bool m_PlotPSNegative; // True to create a negative board ps plot
bool Plot_PS_Negative; // True to create a negative board ps plot
/* Flags to enable or disable ploting of various PCB elements. */ /* Flags to enable or disable ploting of various PCB elements. */
bool Sel_Texte_Reference; bool m_PlotReference;
bool Sel_Texte_Valeur; bool m_PlotValue;
bool Sel_Texte_Divers; bool m_PlotTextOther;
bool Sel_Texte_Invisible; bool m_PlotInvisibleTexts;
bool PlotPadsOnSilkLayer; /* allows pads on silkscreen */ bool m_PlotPadsOnSilkLayer; // allows pads outlines on silkscreen layer (when pads are also o, silk screen
bool m_SubtractMaskFromSilk; bool m_SubtractMaskFromSilk;
/* id for plot format (see enum PlotFormat in plot_common.h) */ /* id for plot format (see enum PlotFormat in plot_common.h) */
int PlotFormat; int m_PlotFormat; // Gerber, HPGL ...
int PlotOrient; bool m_PlotMirror;
int PlotScaleOpt;
enum DrillShapeOptT { enum DrillShapeOptT {
NO_DRILL_SHAPE = 0, NO_DRILL_SHAPE = 0,
SMALL_DRILL_SHAPE = 1, SMALL_DRILL_SHAPE = 1,
FULL_DRILL_SHAPE = 2 FULL_DRILL_SHAPE = 2
}; };
DrillShapeOptT DrillShapeOpt; DrillShapeOptT m_DrillShapeOpt; // For postscript output: holes can be not plotted,
double Scale; // or have a small size or plotted with their actual size
double ScaleAdjX; bool m_AutoScale; // If true, use the better scale to fit in page
double ScaleAdjY; double m_PlotScale; // The global scale factor. a 1.0 scale factor plot a board
// with its actual size.
// These next two scale factors are intended to compensable plotters (and mainly printers) X and Y scale error.
// Therefore they are expected very near 1.0
// Only X and Y dimensions are adjusted: circles are plotted as circle, even if X and Y fine scale differ.
double m_FineScaleAdjustX; // fine scale adjust X axis
double m_FineScaleAdjustY; // dine scale adjust Y axis
private: private:
wxString outputDirectory; wxString outputDirectory;
public: public: PCB_PLOT_PARAMS();
PCB_Plot_Options();
void SetOutputDirectory( wxString aDir ) { outputDirectory = aDir; }; void SetOutputDirectory( wxString aDir ) { outputDirectory = aDir; };
wxString GetOutputDirectory() { return outputDirectory; }; wxString GetOutputDirectory() { return outputDirectory; };
void SetSubtractMaskFromSilk( bool aSubtract ) { m_SubtractMaskFromSilk = aSubtract; }; void SetSubtractMaskFromSilk( bool aSubtract ) { m_SubtractMaskFromSilk = aSubtract; };
bool GetSubtractMaskFromSilk() { return m_SubtractMaskFromSilk; }; bool GetSubtractMaskFromSilk() { return m_SubtractMaskFromSilk; };
}; };
extern PCB_Plot_Options g_pcb_plot_options; extern PCB_PLOT_PARAMS g_PcbPlotOptions;
void PlotTextePcb( PLOTTER* plotter, TEXTE_PCB* pt_texte, int masque_layer, void PlotTextePcb( PLOTTER* plotter, TEXTE_PCB* pt_texte, int masque_layer,
......
...@@ -67,7 +67,7 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter, ...@@ -67,7 +67,7 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
/* Plot pads (creates pads outlines, for pads on silkscreen layers) */ /* Plot pads (creates pads outlines, for pads on silkscreen layers) */
int layersmask_plotpads = masque_layer; int layersmask_plotpads = masque_layer;
// Calculate the mask layers of allowed layers for pads // Calculate the mask layers of allowed layers for pads
if( !g_pcb_plot_options.PlotPadsOnSilkLayer ) // Do not plot pads on silk screen layers if( !g_PcbPlotOptions.m_PlotPadsOnSilkLayer ) // Do not plot pads on silk screen layers
layersmask_plotpads &= ~(SILKSCREEN_LAYER_BACK | SILKSCREEN_LAYER_FRONT ); layersmask_plotpads &= ~(SILKSCREEN_LAYER_BACK | SILKSCREEN_LAYER_FRONT );
if( layersmask_plotpads ) if( layersmask_plotpads )
{ {
...@@ -112,8 +112,8 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter, ...@@ -112,8 +112,8 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
for( MODULE* Module = m_Pcb->m_Modules; Module; Module = Module->Next() ) for( MODULE* Module = m_Pcb->m_Modules; Module; Module = Module->Next() )
{ {
/* see if we want to plot VALUE and REF fields */ /* see if we want to plot VALUE and REF fields */
trace_val = g_pcb_plot_options.Sel_Texte_Valeur; trace_val = g_PcbPlotOptions.m_PlotValue;
trace_ref = g_pcb_plot_options.Sel_Texte_Reference; trace_ref = g_PcbPlotOptions.m_PlotReference;
TEXTE_MODULE* text = Module->m_Reference; TEXTE_MODULE* text = Module->m_Reference;
unsigned textLayer = text->GetLayer(); unsigned textLayer = text->GetLayer();
...@@ -132,7 +132,7 @@ module\n %s's \"reference\" text." ), ...@@ -132,7 +132,7 @@ module\n %s's \"reference\" text." ),
if( ( ( 1 << textLayer ) & masque_layer ) == 0 ) if( ( ( 1 << textLayer ) & masque_layer ) == 0 )
trace_ref = FALSE; trace_ref = FALSE;
if( text->m_NoShow && !g_pcb_plot_options.Sel_Texte_Invisible ) if( text->m_NoShow && !g_PcbPlotOptions.m_PlotInvisibleTexts )
trace_ref = FALSE; trace_ref = FALSE;
text = Module->m_Value; text = Module->m_Value;
...@@ -152,7 +152,7 @@ module\n %s's \"value\" text." ), ...@@ -152,7 +152,7 @@ module\n %s's \"value\" text." ),
if( ( (1 << textLayer) & masque_layer ) == 0 ) if( ( (1 << textLayer) & masque_layer ) == 0 )
trace_val = FALSE; trace_val = FALSE;
if( text->m_NoShow && !g_pcb_plot_options.Sel_Texte_Invisible ) if( text->m_NoShow && !g_PcbPlotOptions.m_PlotInvisibleTexts )
trace_val = FALSE; trace_val = FALSE;
/* Plot text fields, if allowed */ /* Plot text fields, if allowed */
...@@ -169,10 +169,10 @@ module\n %s's \"value\" text." ), ...@@ -169,10 +169,10 @@ module\n %s's \"value\" text." ),
if( pt_texte->Type() != TYPE_TEXTE_MODULE ) if( pt_texte->Type() != TYPE_TEXTE_MODULE )
continue; continue;
if( !g_pcb_plot_options.Sel_Texte_Divers ) if( !g_PcbPlotOptions.m_PlotTextOther )
continue; continue;
if( (pt_texte->m_NoShow) if( (pt_texte->m_NoShow)
&& !g_pcb_plot_options.Sel_Texte_Invisible ) && !g_PcbPlotOptions.m_PlotInvisibleTexts )
continue; continue;
textLayer = pt_texte->GetLayer(); textLayer = pt_texte->GetLayer();
...@@ -644,7 +644,7 @@ void PlotDrawSegment( PLOTTER* plotter, DRAWSEGMENT* pt_segm, int masque_layer, ...@@ -644,7 +644,7 @@ void PlotDrawSegment( PLOTTER* plotter, DRAWSEGMENT* pt_segm, int masque_layer,
return; return;
if( trace_mode == FILAIRE ) if( trace_mode == FILAIRE )
thickness = g_pcb_plot_options.PlotLine_Width; thickness = g_PcbPlotOptions.m_PlotLineWidth;
else else
thickness = pt_segm->m_Width; thickness = pt_segm->m_Width;
...@@ -697,7 +697,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer, ...@@ -697,7 +697,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer,
// in addition to the contents of the currently specified layer. // in addition to the contents of the currently specified layer.
int layer_mask = g_TabOneLayerMask[Layer]; int layer_mask = g_TabOneLayerMask[Layer];
if( !g_pcb_plot_options.Exclude_Edges_Pcb ) if( !g_PcbPlotOptions.m_ExcludeEdgeLayer )
layer_mask |= EDGE_LAYER; layer_mask |= EDGE_LAYER;
switch( Layer ) switch( Layer )
...@@ -722,21 +722,19 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer, ...@@ -722,21 +722,19 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer,
// Adding drill marks, if required and if the plotter is able to plot // Adding drill marks, if required and if the plotter is able to plot
// them: // them:
if( g_pcb_plot_options.DrillShapeOpt != if( g_PcbPlotOptions.m_DrillShapeOpt != PCB_PLOT_PARAMS::NO_DRILL_SHAPE )
PCB_Plot_Options::NO_DRILL_SHAPE )
{ {
if( plotter->GetPlotterType() == PLOT_FORMAT_POST ) if( plotter->GetPlotterType() == PLOT_FORMAT_POST )
PlotDrillMark( plotter, PlotDrillMark( plotter, trace_mode,
trace_mode, g_PcbPlotOptions.m_DrillShapeOpt ==
g_pcb_plot_options.DrillShapeOpt == PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE );
PCB_Plot_Options::SMALL_DRILL_SHAPE );
} }
break; break;
case SOLDERMASK_N_BACK: case SOLDERMASK_N_BACK:
case SOLDERMASK_N_FRONT: case SOLDERMASK_N_FRONT:
Plot_Standard_Layer( plotter, layer_mask, Plot_Standard_Layer( plotter, layer_mask,
g_pcb_plot_options.DrawViaOnMaskLayer, trace_mode ); g_PcbPlotOptions.m_PlotViaOnMaskLayer, trace_mode );
break; break;
case SOLDERPASTE_N_BACK: case SOLDERPASTE_N_BACK:
...@@ -749,7 +747,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer, ...@@ -749,7 +747,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer,
// Gerber: Subtract soldermask from silkscreen if enabled // Gerber: Subtract soldermask from silkscreen if enabled
if( plotter->GetPlotterType() == PLOT_FORMAT_GERBER if( plotter->GetPlotterType() == PLOT_FORMAT_GERBER
&& g_pcb_plot_options.GetSubtractMaskFromSilk() ) && g_PcbPlotOptions.GetSubtractMaskFromSilk() )
{ {
if( Layer == SILKSCREEN_N_FRONT ) if( Layer == SILKSCREEN_N_FRONT )
{ {
...@@ -763,7 +761,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer, ...@@ -763,7 +761,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer,
// Set layer polarity to negative // Set layer polarity to negative
plotter->SetLayerPolarity( false ); plotter->SetLayerPolarity( false );
Plot_Standard_Layer( plotter, layer_mask, Plot_Standard_Layer( plotter, layer_mask,
g_pcb_plot_options.DrawViaOnMaskLayer, g_PcbPlotOptions.m_PlotViaOnMaskLayer,
trace_mode ); trace_mode );
} }
break; break;
...@@ -1013,8 +1011,7 @@ void WinEDA_BasePcbFrame::PlotDrillMark( PLOTTER* aPlotter, ...@@ -1013,8 +1011,7 @@ void WinEDA_BasePcbFrame::PlotDrillMark( PLOTTER* aPlotter,
if( pts->Type() != TYPE_VIA ) if( pts->Type() != TYPE_VIA )
continue; continue;
pos = pts->m_Start; pos = pts->m_Start;
if( g_pcb_plot_options.DrillShapeOpt == if( g_PcbPlotOptions.m_DrillShapeOpt == PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE )
PCB_Plot_Options::SMALL_DRILL_SHAPE )
diam.x = diam.y = SMALL_DRILL; diam.x = diam.y = SMALL_DRILL;
else else
diam.x = diam.y = pts->GetDrillValue(); diam.x = diam.y = pts->GetDrillValue();
......
...@@ -32,7 +32,7 @@ bool WinEDA_BasePcbFrame::Genere_DXF( const wxString& FullFileName, int Layer, ...@@ -32,7 +32,7 @@ bool WinEDA_BasePcbFrame::Genere_DXF( const wxString& FullFileName, int Layer,
plotter->set_filename( FullFileName ); plotter->set_filename( FullFileName );
plotter->start_plot( output_file ); plotter->start_plot( output_file );
if( g_pcb_plot_options.Plot_Frame_Ref ) if( g_PcbPlotOptions.m_PlotFrameRef )
PlotWorkSheet( plotter, GetScreen() ); PlotWorkSheet( plotter, GetScreen() );
Plot_Layer( plotter, Layer, trace_mode ); Plot_Layer( plotter, Layer, trace_mode );
......
...@@ -42,7 +42,7 @@ bool WinEDA_BasePcbFrame::Genere_GERBER( const wxString& FullFileName, int Layer ...@@ -42,7 +42,7 @@ bool WinEDA_BasePcbFrame::Genere_GERBER( const wxString& FullFileName, int Layer
wxPoint offset; wxPoint offset;
/* Calculate scaling from pcbnew units (in 0.1 mil or 0.0001 inch) to gerber units */ /* Calculate scaling from pcbnew units (in 0.1 mil or 0.0001 inch) to gerber units */
double scale = g_pcb_plot_options.Scale; double scale = g_PcbPlotOptions.m_PlotScale;
if( PlotOriginIsAuxAxis ) if( PlotOriginIsAuxAxis )
offset = m_Auxiliary_Axis_Position; offset = m_Auxiliary_Axis_Position;
...@@ -56,17 +56,17 @@ bool WinEDA_BasePcbFrame::Genere_GERBER( const wxString& FullFileName, int Layer ...@@ -56,17 +56,17 @@ bool WinEDA_BasePcbFrame::Genere_GERBER( const wxString& FullFileName, int Layer
PLOTTER* plotter = new GERBER_PLOTTER(); PLOTTER* plotter = new GERBER_PLOTTER();
/* No mirror and scaling for gerbers! */ /* No mirror and scaling for gerbers! */
plotter->set_viewport( offset, scale, 0 ); plotter->set_viewport( offset, scale, 0 );
plotter->set_default_line_width( g_pcb_plot_options.PlotLine_Width ); plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth );
plotter->set_creator( wxT( "PCBNEW-RS274X" ) ); plotter->set_creator( wxT( "PCBNEW-RS274X" ) );
plotter->set_filename( FullFileName ); plotter->set_filename( FullFileName );
if( plotter->start_plot( output_file ) ) if( plotter->start_plot( output_file ) )
{ {
// Sheet refs on gerber CAN be useful... and they're always 1:1 // Sheet refs on gerber CAN be useful... and they're always 1:1
if( g_pcb_plot_options.Plot_Frame_Ref ) if( g_PcbPlotOptions.m_PlotFrameRef )
PlotWorkSheet( plotter, GetScreen() ); PlotWorkSheet( plotter, GetScreen() );
Plot_Layer( plotter, Layer, trace_mode );
Plot_Layer( plotter, Layer, trace_mode );
plotter->end_plot(); plotter->end_plot();
} }
......
...@@ -29,26 +29,26 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer, ...@@ -29,26 +29,26 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
{ {
return false; return false;
} }
// Compute pen_dim (from g_HPGL_Pen_Diam in mils) in pcb units, // Compute pen_dim (from g_m_HPGLPenDiam in mils) in pcb units,
// with plot scale (if Scale is 2, pen diameter is always g_HPGL_Pen_Diam // with plot scale (if Scale is 2, pen diameter is always g_m_HPGLPenDiam
// so apparent pen diam is real pen diam / Scale // so apparent pen diam is real pen diam / Scale
int pen_diam = wxRound( (g_pcb_plot_options.HPGL_Pen_Diam * U_PCB) / g_pcb_plot_options.Scale ); int pen_diam = wxRound( (g_PcbPlotOptions.m_HPGLPenDiam * U_PCB) / g_PcbPlotOptions.m_PlotScale );
// compute pen_recouvrement (from g_HPGL_Pen_Recouvrement in mils) // compute pen_overlay (from g_m_HPGLPenOvr in mils)
// with plot scale // with plot scale
if( g_pcb_plot_options.HPGL_Pen_Recouvrement < 0 ) if( g_PcbPlotOptions.m_HPGLPenOvr < 0 )
g_pcb_plot_options.HPGL_Pen_Recouvrement = 0; g_PcbPlotOptions.m_HPGLPenOvr = 0;
if( g_pcb_plot_options.HPGL_Pen_Recouvrement >= g_pcb_plot_options.HPGL_Pen_Diam ) if( g_PcbPlotOptions.m_HPGLPenOvr >= g_PcbPlotOptions.m_HPGLPenDiam )
g_pcb_plot_options.HPGL_Pen_Recouvrement = g_pcb_plot_options.HPGL_Pen_Diam - 1; g_PcbPlotOptions.m_HPGLPenOvr = g_PcbPlotOptions.m_HPGLPenDiam - 1;
int pen_recouvrement = wxRound( int pen_overlay = wxRound(
g_pcb_plot_options.HPGL_Pen_Recouvrement * 10.0 / g_pcb_plot_options.Scale ); g_PcbPlotOptions.m_HPGLPenOvr * 10.0 / g_PcbPlotOptions.m_PlotScale );
SetLocaleTo_C_standard(); SetLocaleTo_C_standard();
if( g_pcb_plot_options.PlotScaleOpt != 1 ) if( g_PcbPlotOptions.m_PlotScale != 1.0 || g_PcbPlotOptions.m_AutoScale )
Center = TRUE; // Scale != 1 so center PCB plot. Center = true; // when scale != 1.0 we must calculate the position in page
// because actual position has no meaning
// Scale units from 0.0001" to HPGL plot units. // Scale units from 0.0001" to HPGL plot units.
SheetSize.x = currentsheet->m_Size.x * U_PCB; SheetSize.x = currentsheet->m_Size.x * U_PCB;
...@@ -59,7 +59,7 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer, ...@@ -59,7 +59,7 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
BoardSize = m_Pcb->m_BoundaryBox.GetSize(); BoardSize = m_Pcb->m_BoundaryBox.GetSize();
BoardCenter = m_Pcb->m_BoundaryBox.Centre(); BoardCenter = m_Pcb->m_BoundaryBox.Centre();
if( g_pcb_plot_options.PlotScaleOpt == 0 ) // Optimum scale if( g_PcbPlotOptions.m_AutoScale ) // Optimum scale
{ {
double Xscale, Yscale; double Xscale, Yscale;
...@@ -69,7 +69,7 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer, ...@@ -69,7 +69,7 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
scale = MIN( Xscale, Yscale ); scale = MIN( Xscale, Yscale );
} }
else else
scale = g_pcb_plot_options.Scale; scale = g_PcbPlotOptions.m_PlotScale;
// Calculate the page size offset. // Calculate the page size offset.
if( Center ) if( Center )
...@@ -87,20 +87,19 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer, ...@@ -87,20 +87,19 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
HPGL_PLOTTER* plotter = new HPGL_PLOTTER(); HPGL_PLOTTER* plotter = new HPGL_PLOTTER();
plotter->set_paper_size( currentsheet ); plotter->set_paper_size( currentsheet );
plotter->set_viewport( offset, scale, plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror );
g_pcb_plot_options.PlotOrient ); plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth );
plotter->set_default_line_width( g_pcb_plot_options.PlotLine_Width );
plotter->set_creator( wxT( "PCBNEW-HPGL" ) ); plotter->set_creator( wxT( "PCBNEW-HPGL" ) );
plotter->set_filename( FullFileName ); plotter->set_filename( FullFileName );
plotter->set_pen_speed( g_pcb_plot_options.HPGL_Pen_Speed ); plotter->set_pen_speed( g_PcbPlotOptions.m_HPGLPenSpeed );
plotter->set_pen_number( g_pcb_plot_options.HPGL_Pen_Num ); plotter->set_pen_number( g_PcbPlotOptions.m_HPGLPenNum );
plotter->set_pen_overlap( pen_recouvrement ); plotter->set_pen_overlap( pen_overlay );
plotter->set_pen_diameter( pen_diam ); plotter->set_pen_diameter( pen_diam );
plotter->start_plot( output_file ); plotter->start_plot( output_file );
/* The worksheet is not significant with scale!=1... It is with /* The worksheet is not significant with scale!=1... It is with
* paperscale!=1, anyway */ * paperscale!=1, anyway */
if( g_pcb_plot_options.Plot_Frame_Ref && !Center ) if( g_PcbPlotOptions.m_PlotFrameRef && !Center )
PlotWorkSheet( plotter, GetScreen() ); PlotWorkSheet( plotter, GetScreen() );
Plot_Layer( plotter, Layer, trace_mode ); Plot_Layer( plotter, Layer, trace_mode );
......
...@@ -37,12 +37,13 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer, ...@@ -37,12 +37,13 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
SetLocaleTo_C_standard(); SetLocaleTo_C_standard();
if( g_pcb_plot_options.PlotScaleOpt != 1 ) if( g_PcbPlotOptions.m_PlotScale != 1.0 || g_PcbPlotOptions.m_AutoScale )
Center = TRUE; // Scale != 1 so center plot. Center = true; // when scale != 1.0 we must calculate the position in page
// because actual position has no meaning
// Set default line width // Set default line width
if( g_pcb_plot_options.PlotLine_Width < 1 ) if( g_PcbPlotOptions.m_PlotLineWidth < 1 )
g_pcb_plot_options.PlotLine_Width = 1; g_PcbPlotOptions.m_PlotLineWidth = 1;
SheetSize.x = currentsheet->m_Size.x * U_PCB; SheetSize.x = currentsheet->m_Size.x * U_PCB;
SheetSize.y = currentsheet->m_Size.y * U_PCB; SheetSize.y = currentsheet->m_Size.y * U_PCB;
...@@ -65,7 +66,7 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer, ...@@ -65,7 +66,7 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
BoardSize = m_Pcb->m_BoundaryBox.GetSize(); BoardSize = m_Pcb->m_BoundaryBox.GetSize();
BoardCenter = m_Pcb->m_BoundaryBox.Centre(); BoardCenter = m_Pcb->m_BoundaryBox.Centre();
if( g_pcb_plot_options.PlotScaleOpt == 0 ) // Optimum scale if( g_PcbPlotOptions.m_AutoScale ) // Optimum scale
{ {
double Xscale, Yscale; double Xscale, Yscale;
...@@ -75,7 +76,7 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer, ...@@ -75,7 +76,7 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
scale = MIN( Xscale, Yscale ); scale = MIN( Xscale, Yscale );
} }
else else
scale = g_pcb_plot_options.Scale * paperscale; scale = g_PcbPlotOptions.m_PlotScale * paperscale;
if( Center ) if( Center )
{ {
...@@ -92,24 +93,23 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer, ...@@ -92,24 +93,23 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
PS_PLOTTER* plotter = new PS_PLOTTER(); PS_PLOTTER* plotter = new PS_PLOTTER();
plotter->set_paper_size( SheetPS ); plotter->set_paper_size( SheetPS );
plotter->set_scale_adjust( g_pcb_plot_options.ScaleAdjX, plotter->set_scale_adjust( g_PcbPlotOptions.m_FineScaleAdjustX,
g_pcb_plot_options.ScaleAdjY ); g_PcbPlotOptions.m_FineScaleAdjustX );
plotter->set_viewport( offset, scale, plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror );
g_pcb_plot_options.PlotOrient ); plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth );
plotter->set_default_line_width( g_pcb_plot_options.PlotLine_Width );
plotter->set_creator( wxT( "PCBNEW-PS" ) ); plotter->set_creator( wxT( "PCBNEW-PS" ) );
plotter->set_filename( FullFileName ); plotter->set_filename( FullFileName );
plotter->start_plot( output_file ); plotter->start_plot( output_file );
/* The worksheet is not significant with scale!=1... It is with /* The worksheet is not significant with scale!=1... It is with
* paperscale!=1, anyway */ * paperscale!=1, anyway */
if( g_pcb_plot_options.Plot_Frame_Ref && !Center ) if( g_PcbPlotOptions.m_PlotFrameRef && !Center )
PlotWorkSheet( plotter, GetScreen() ); PlotWorkSheet( plotter, GetScreen() );
// If plot a negative board: // If plot a negative board:
// Draw a black rectangle (background for plot board in white) // Draw a black rectangle (background for plot board in white)
// and switch the current color to WHITE // and switch the current color to WHITE
if( g_pcb_plot_options.Plot_PS_Negative ) if( g_PcbPlotOptions.m_PlotPSNegative )
{ {
int margin = 500; // Add a 0.5 inch margin around the board int margin = 500; // Add a 0.5 inch margin around the board
plotter->set_negative( true ); plotter->set_negative( true );
......
release version: release version:
2010 dec 06 (BZR testing 2644) 2010 dec 10 (BZR testing 26xx)
files (.zip,.tgz): files (.zip,.tgz):
kicad-2010-12-06-testing kicad-2010-12-10-testing
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment