Pcbnew plot functions: code cleanup, coding policy fixes and minor enhancements
This commit is contained in:
parent
dd5386db37
commit
e9f557e65a
|
@ -6,7 +6,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef KICAD_BUILD_VERSION
|
||||
#define KICAD_BUILD_VERSION "(2010-04-19 BZR 23xx)"
|
||||
#define KICAD_BUILD_VERSION "(2010-12-10 BZR 26xx)"
|
||||
#endif
|
||||
|
||||
//#define VERSION_STABILITY "stable"
|
||||
|
|
|
@ -28,7 +28,7 @@ PLOTTER::PLOTTER( PlotFormat aPlotType )
|
|||
default_pen_width = 0;
|
||||
current_pen_width = -1; /* To-be-set marker */
|
||||
pen_state = 'Z'; /* End-of-path idle */
|
||||
plot_orient_options = 0; /* Mirror flag */
|
||||
plotMirror = 0; /* Mirror flag */
|
||||
output_file = 0;
|
||||
color_mode = false; /* Start as a BW plot */
|
||||
negative_mode = false;
|
||||
|
@ -43,7 +43,7 @@ void PLOTTER::user_to_device_coordinates( wxPoint& pos )
|
|||
{
|
||||
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 );
|
||||
else
|
||||
pos.y = (int) ( ( paper_size.y - ( pos.y - plot_offset.y )
|
||||
|
|
|
@ -14,15 +14,14 @@
|
|||
|
||||
/* Set the plot offset for the current plotting
|
||||
*/
|
||||
void DXF_PLOTTER::set_viewport( wxPoint offset,
|
||||
double aScale, int orient )
|
||||
void DXF_PLOTTER::set_viewport( wxPoint aOffset, double aScale, bool aMirror )
|
||||
{
|
||||
wxASSERT( !output_file );
|
||||
plot_offset = offset;
|
||||
plot_offset = aOffset;
|
||||
plot_scale = aScale;
|
||||
device_scale = 1;
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,13 +21,12 @@
|
|||
* @param aOffset = plot offset
|
||||
* @param aScale = coordinate scale (scale coefficient for coordinates)
|
||||
*/
|
||||
void GERBER_PLOTTER::set_viewport( wxPoint offset,
|
||||
double aScale, int orient )
|
||||
void GERBER_PLOTTER::set_viewport( wxPoint aOffset, double aScale, bool aMirror )
|
||||
{
|
||||
wxASSERT( !output_file );
|
||||
wxASSERT( orient == 0 );
|
||||
plot_orient_options = 0;
|
||||
plot_offset = offset;
|
||||
wxASSERT( aMirror == false );
|
||||
plotMirror = false;
|
||||
plot_offset = aOffset;
|
||||
wxASSERT( aScale == 1 );
|
||||
plot_scale = 1;
|
||||
device_scale = 1;
|
||||
|
|
|
@ -17,14 +17,14 @@ const double SCALE_HPGL = 0.102041;
|
|||
|
||||
/* 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 );
|
||||
plot_offset = offset;
|
||||
plot_offset = aOffset;
|
||||
plot_scale = aScale;
|
||||
device_scale = SCALE_HPGL;
|
||||
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,
|
|||
cpos = centre;
|
||||
user_to_device_coordinates( cpos );
|
||||
|
||||
if( plot_orient_options == PLOT_MIROIR )
|
||||
if( plotMirror )
|
||||
angle = (StAngle - EndAngle) / 10.0;
|
||||
else
|
||||
angle = (EndAngle - StAngle) / 10.0;
|
||||
|
|
|
@ -13,11 +13,11 @@
|
|||
|
||||
|
||||
/* 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 );
|
||||
plot_orient_options = orient;
|
||||
plot_offset = offset;
|
||||
plotMirror = aMirror;
|
||||
plot_offset = aOffset;
|
||||
plot_scale = aScale;
|
||||
device_scale = 1; /* PS references in decimals */
|
||||
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,
|
|||
// Calculate start point.
|
||||
user_to_device_coordinates( centre );
|
||||
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,
|
||||
radius, (double) -EndAngle / 10, (double) -StAngle / 10,
|
||||
fill );
|
||||
|
|
|
@ -26,14 +26,11 @@ enum PlotFormat {
|
|||
PLOT_FORMAT_DXF
|
||||
};
|
||||
|
||||
const int PLOT_MIROIR = 1;
|
||||
|
||||
class PLOTTER
|
||||
{
|
||||
public:
|
||||
PlotFormat m_PlotType; // type of plot
|
||||
public:
|
||||
PLOTTER( PlotFormat aPlotType );
|
||||
public: PLOTTER( PlotFormat aPlotType );
|
||||
|
||||
virtual ~PLOTTER()
|
||||
{
|
||||
|
@ -91,8 +88,7 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual void set_viewport( wxPoint offset,
|
||||
double scale, int orient ) = 0;
|
||||
virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror ) = 0;
|
||||
|
||||
/* Standard primitives */
|
||||
virtual void rect( wxPoint p1, wxPoint p2, FILL_T fill,
|
||||
|
@ -120,6 +116,7 @@ public:
|
|||
GRTraceMode trace_mode ) = 0;
|
||||
virtual void flash_pad_rect( wxPoint pos, wxSize size,
|
||||
int orient, GRTraceMode trace_mode ) = 0;
|
||||
|
||||
/** virtual function flash_pad_trapez
|
||||
* flash a trapezoidal pad
|
||||
* @param aPadPos = the position of the shape
|
||||
|
@ -175,7 +172,7 @@ public:
|
|||
* by writing \%LPD*\% or \%LPC*\% to the Gerber file, respectively.
|
||||
* param @aPositive = layer polarity, true for positive
|
||||
*/
|
||||
virtual void SetLayerPolarity( bool aPositive ) = 0;
|
||||
virtual void SetLayerPolarity( bool aPositive ) = 0;
|
||||
|
||||
protected:
|
||||
/* These are marker subcomponents */
|
||||
|
@ -206,7 +203,7 @@ protected:
|
|||
char pen_state;
|
||||
wxPoint pen_lastpos;
|
||||
/* Other stuff */
|
||||
int plot_orient_options; /* For now, mirror plot */
|
||||
bool plotMirror;
|
||||
wxString creator;
|
||||
wxString filename;
|
||||
Ki_PageDescr* sheet;
|
||||
|
@ -215,11 +212,11 @@ protected:
|
|||
|
||||
class HPGL_PLOTTER : public PLOTTER
|
||||
{
|
||||
public:
|
||||
HPGL_PLOTTER() : PLOTTER(PLOT_FORMAT_HPGL)
|
||||
public: HPGL_PLOTTER() : PLOTTER( PLOT_FORMAT_HPGL )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
virtual bool start_plot( FILE* fout );
|
||||
virtual bool end_plot();
|
||||
|
||||
|
@ -261,8 +258,7 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual void set_viewport( wxPoint offset,
|
||||
double scale, int orient );
|
||||
virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
|
||||
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 poly( int nb_segm, int* coord, FILL_T fill, int width = -1 );
|
||||
|
@ -277,13 +273,14 @@ public:
|
|||
GRTraceMode trace_mode );
|
||||
virtual void flash_pad_rect( wxPoint pos, wxSize size,
|
||||
int orient, GRTraceMode trace_mode );
|
||||
|
||||
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
|
||||
int aPadOrient, GRTraceMode aTrace_Mode );
|
||||
|
||||
virtual void SetLayerPolarity( bool aPositive ) {};
|
||||
|
||||
protected:
|
||||
void pen_control( int plume );
|
||||
void pen_control( int plume );
|
||||
|
||||
int pen_speed;
|
||||
int pen_number;
|
||||
|
@ -293,13 +290,13 @@ protected:
|
|||
|
||||
class PS_PLOTTER : public PLOTTER
|
||||
{
|
||||
public:
|
||||
PS_PLOTTER() : PLOTTER(PLOT_FORMAT_POST)
|
||||
public: PS_PLOTTER() : PLOTTER( PLOT_FORMAT_POST )
|
||||
{
|
||||
plot_scale_adjX = 1;
|
||||
plot_scale_adjY = 1;
|
||||
}
|
||||
|
||||
|
||||
virtual bool start_plot( FILE* fout );
|
||||
virtual bool end_plot();
|
||||
virtual void set_current_line_width( int width );
|
||||
|
@ -314,8 +311,7 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual void set_viewport( wxPoint offset,
|
||||
double scale, int orient );
|
||||
virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
|
||||
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 arc( wxPoint centre, int StAngle, int EndAngle, int rayon,
|
||||
|
@ -328,6 +324,7 @@ public:
|
|||
GRTraceMode trace_mode );
|
||||
virtual void flash_pad_rect( wxPoint pos, wxSize size,
|
||||
int orient, GRTraceMode trace_mode );
|
||||
|
||||
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
|
||||
int aPadOrient, GRTraceMode aTrace_Mode );
|
||||
|
||||
|
@ -359,8 +356,7 @@ struct APERTURE
|
|||
|
||||
class GERBER_PLOTTER : public PLOTTER
|
||||
{
|
||||
public:
|
||||
GERBER_PLOTTER() : PLOTTER(PLOT_FORMAT_GERBER)
|
||||
public: GERBER_PLOTTER() : PLOTTER( PLOT_FORMAT_GERBER )
|
||||
{
|
||||
work_file = 0;
|
||||
final_file = 0;
|
||||
|
@ -368,28 +364,28 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual bool start_plot( FILE* fout );
|
||||
virtual bool end_plot();
|
||||
virtual void set_current_line_width( int width );
|
||||
virtual void set_default_line_width( int width );
|
||||
virtual bool start_plot( FILE* fout );
|
||||
virtual bool end_plot();
|
||||
virtual void set_current_line_width( int width );
|
||||
virtual void set_default_line_width( int width );
|
||||
|
||||
/* RS274X has no dashing, nor colours */
|
||||
virtual void set_dash( bool dashed ) {};
|
||||
virtual void set_color( int color ) {};
|
||||
virtual void set_viewport( wxPoint offset,
|
||||
double scale, int orient );
|
||||
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 poly( int nb_segm, int* coord, FILL_T fill, int width = -1 );
|
||||
virtual void pen_to( wxPoint pos, char plume );
|
||||
virtual void flash_pad_circle( wxPoint pos, int diametre,
|
||||
GRTraceMode trace_mode );
|
||||
virtual void flash_pad_oval( wxPoint pos, wxSize size, int orient,
|
||||
GRTraceMode trace_mode );
|
||||
virtual void flash_pad_rect( wxPoint pos, wxSize size,
|
||||
int orient, GRTraceMode trace_mode );
|
||||
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
|
||||
int aPadOrient, GRTraceMode aTrace_Mode );
|
||||
virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
|
||||
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 poly( int nb_segm, int* coord, FILL_T fill, int width = -1 );
|
||||
virtual void pen_to( wxPoint pos, char plume );
|
||||
virtual void flash_pad_circle( wxPoint pos, int diametre,
|
||||
GRTraceMode trace_mode );
|
||||
virtual void flash_pad_oval( wxPoint pos, wxSize size, int orient,
|
||||
GRTraceMode trace_mode );
|
||||
virtual void flash_pad_rect( wxPoint pos, wxSize size,
|
||||
int orient, GRTraceMode trace_mode );
|
||||
|
||||
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
|
||||
int aPadOrient, GRTraceMode aTrace_Mode );
|
||||
|
||||
virtual void SetLayerPolarity( bool aPositive );
|
||||
|
||||
|
@ -400,10 +396,10 @@ protected:
|
|||
std::vector<APERTURE>::iterator get_aperture( const wxSize& size,
|
||||
APERTURE::Aperture_Type type );
|
||||
|
||||
FILE* work_file, * final_file;
|
||||
wxString m_workFilename;
|
||||
FILE* work_file, * final_file;
|
||||
wxString m_workFilename;
|
||||
|
||||
void write_aperture_list();
|
||||
void write_aperture_list();
|
||||
|
||||
std::vector<APERTURE> apertures;
|
||||
std::vector<APERTURE>::iterator current_aperture;
|
||||
|
@ -411,11 +407,11 @@ protected:
|
|||
|
||||
class DXF_PLOTTER : public PLOTTER
|
||||
{
|
||||
public:
|
||||
DXF_PLOTTER() : PLOTTER(PLOT_FORMAT_DXF)
|
||||
public: DXF_PLOTTER() : PLOTTER( PLOT_FORMAT_DXF )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
virtual bool start_plot( FILE* fout );
|
||||
virtual bool end_plot();
|
||||
|
||||
|
@ -434,8 +430,7 @@ public:
|
|||
|
||||
virtual void set_color( int color );
|
||||
|
||||
virtual void set_viewport( wxPoint offset,
|
||||
double scale, int orient );
|
||||
virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror );
|
||||
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 poly( int nb_segm, int* coord, FILL_T fill, int width = -1 );
|
||||
|
@ -450,6 +445,7 @@ public:
|
|||
GRTraceMode trace_mode );
|
||||
virtual void flash_pad_rect( wxPoint pos, wxSize size,
|
||||
int orient, GRTraceMode trace_mode );
|
||||
|
||||
virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
|
||||
int aPadOrient, GRTraceMode aTrace_Mode );
|
||||
|
||||
|
|
|
@ -133,11 +133,11 @@ void DIALOG_GENDRILL::InitDisplayParams( void )
|
|||
m_MicroViaDrillValue->SetLabel( _( "Use Netclasses values" ) );
|
||||
|
||||
msg.Empty();
|
||||
msg << g_pcb_plot_options.HPGL_Pen_Num;
|
||||
msg << g_PcbPlotOptions.m_HPGLPenNum;
|
||||
m_PenNum->SetValue( msg );
|
||||
|
||||
msg.Empty();
|
||||
msg << g_pcb_plot_options.HPGL_Pen_Speed;
|
||||
msg << g_PcbPlotOptions.m_HPGLPenSpeed;
|
||||
m_PenSpeed->SetValue( msg );
|
||||
|
||||
// See if we have some buried vias or/and microvias, and display
|
||||
|
@ -290,11 +290,11 @@ void DIALOG_GENDRILL::SetParams( void )
|
|||
|
||||
msg = m_PenSpeed->GetValue();
|
||||
if( msg.ToLong( <mp ) )
|
||||
g_pcb_plot_options.HPGL_Pen_Speed = ltmp;
|
||||
g_PcbPlotOptions.m_HPGLPenSpeed = ltmp;
|
||||
msg = m_PenNum->GetValue();
|
||||
|
||||
if( msg.ToLong( <mp ) )
|
||||
g_pcb_plot_options.HPGL_Pen_Num = ltmp;
|
||||
g_PcbPlotOptions.m_HPGLPenNum = ltmp;
|
||||
if( m_Choice_Drill_Offset->GetSelection() == 0 )
|
||||
m_FileDrillOffset = wxPoint( 0, 0 );
|
||||
else
|
||||
|
|
|
@ -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 );
|
||||
|
||||
m_Exclude_Edges_Pcb = 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 = new wxCheckBox( this, wxID_ANY, _("Exclude pcb edge layer"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
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->SetToolTip( _("Remove silkscreen from areas without soldermask") );
|
||||
|
@ -147,8 +147,8 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr
|
|||
wxStaticBoxSizer* sbSizerPSOpt;
|
||||
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 );
|
||||
sbSizerPSOpt->Add( m_Plot_PS_Negative, 0, wxALL, 5 );
|
||||
m_plotPSNegativeOpt = new wxCheckBox( this, wxID_ANY, _("Plot negative"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
sbSizerPSOpt->Add( m_plotPSNegativeOpt, 0, wxALL, 5 );
|
||||
|
||||
bSizerFmtPlot->Add( sbSizerPSOpt, 0, wxEXPAND, 5 );
|
||||
|
||||
|
|
|
@ -218,7 +218,7 @@
|
|||
<property name="label">Exclude pcb edge layer</property>
|
||||
<property name="maximum_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="pos"></property>
|
||||
<property name="size"></property>
|
||||
|
@ -1365,7 +1365,7 @@
|
|||
<property name="label">Plot negative</property>
|
||||
<property name="maximum_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="pos"></property>
|
||||
<property name="size"></property>
|
||||
|
|
|
@ -54,7 +54,7 @@ class DIALOG_PLOT_BASE : public wxDialog
|
|||
wxStaticBoxSizer* m_CopperLayersBoxSizer;
|
||||
wxStaticBoxSizer* m_TechnicalLayersBoxSizer;
|
||||
wxCheckBox* m_Use_Gerber_Extensions;
|
||||
wxCheckBox* m_Exclude_Edges_Pcb;
|
||||
wxCheckBox* m_excludeEdgeLayerOpt;
|
||||
wxCheckBox* m_SubtractMaskFromSilk;
|
||||
wxCheckBox* m_Plot_Sheet_Ref;
|
||||
wxCheckBox* m_Plot_Pads_on_Silkscreen;
|
||||
|
@ -73,7 +73,7 @@ class DIALOG_PLOT_BASE : public wxDialog
|
|||
wxTextCtrl* m_HPGLPenSpeedOpt;
|
||||
wxStaticText* m_textPenOvr;
|
||||
wxTextCtrl* m_HPGLPenOverlayOpt;
|
||||
wxCheckBox* m_Plot_PS_Negative;
|
||||
wxCheckBox* m_plotPSNegativeOpt;
|
||||
wxTextCtrl* m_OutputDirectory;
|
||||
wxButton* m_BrowseButton;
|
||||
wxCheckBox* m_PlotMirorOpt;
|
||||
|
|
|
@ -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_PrintScale = s_ScaleList[m_ScaleOption->GetSelection()];
|
||||
|
||||
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_XScaleAdjust;
|
||||
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_YScaleAdjust;
|
||||
g_pcb_plot_options.Scale = s_Parameters.m_PrintScale;
|
||||
g_PcbPlotOptions.m_FineScaleAdjustX = s_Parameters.m_XScaleAdjust;
|
||||
g_PcbPlotOptions.m_FineScaleAdjustY = s_Parameters.m_YScaleAdjust;
|
||||
g_PcbPlotOptions.m_PlotScale = s_Parameters.m_PrintScale;
|
||||
|
||||
wxPrintDialogData printDialogData( *g_PrintData );
|
||||
wxPrinter printer( &printDialogData );
|
||||
|
|
|
@ -383,7 +383,7 @@ void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( )
|
|||
|
||||
int idx = m_ScaleOption->GetSelection();
|
||||
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 )
|
||||
{
|
||||
|
@ -400,8 +400,8 @@ void DIALOG_PRINT_USING_PRINTER::SetPrintParameters( )
|
|||
DisplayInfoMessage( NULL, _( "Warning: Scale option set to a very small value" ) );
|
||||
m_FineAdjustYscaleOpt->GetValue().ToDouble( &s_Parameters.m_YScaleAdjust );
|
||||
}
|
||||
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_XScaleAdjust;
|
||||
g_pcb_plot_options.ScaleAdjX = s_Parameters.m_YScaleAdjust;
|
||||
g_PcbPlotOptions.m_FineScaleAdjustX = s_Parameters.m_XScaleAdjust;
|
||||
g_PcbPlotOptions.m_FineScaleAdjustY = s_Parameters.m_YScaleAdjust;
|
||||
SetPenWidth();
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
#include "fctsys.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "common.h"
|
||||
|
@ -67,8 +65,8 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName,
|
|||
scale = 1;
|
||||
HPGL_PLOTTER* hpgl_plotter = new HPGL_PLOTTER;
|
||||
plotter = hpgl_plotter;
|
||||
hpgl_plotter->set_pen_number( g_pcb_plot_options.HPGL_Pen_Num );
|
||||
hpgl_plotter->set_pen_speed( g_pcb_plot_options.HPGL_Pen_Speed );
|
||||
hpgl_plotter->set_pen_number( g_PcbPlotOptions.m_HPGLPenNum );
|
||||
hpgl_plotter->set_pen_speed( g_PcbPlotOptions.m_HPGLPenSpeed );
|
||||
hpgl_plotter->set_pen_overlap( 0 );
|
||||
plotter->set_paper_size( aSheet );
|
||||
plotter->set_viewport( offset, scale, 0 );
|
||||
|
|
|
@ -388,18 +388,6 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetConfigurationSettings()
|
|||
m_configSettings.push_back( new PARAM_CFG_SETCOLOR( true, wxT( "CoRatsN" ),
|
||||
ITEM_COLOR( RATSNEST_VISIBLE ),
|
||||
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,
|
||||
600, 0, 60000 ) );
|
||||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "DPolair" ),
|
||||
|
@ -411,14 +399,33 @@ PARAM_CFG_ARRAY& WinEDA_PcbFrame::GetConfigurationSettings()
|
|||
m_configSettings.push_back( new PARAM_CFG_BOOL( true, wxT( "TwoSegT" ),
|
||||
&g_TwoSegmentTrackBuild, TRUE ) );
|
||||
// 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" ),
|
||||
&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" ),
|
||||
&g_pcb_plot_options.Exclude_Edges_Pcb, true ) );
|
||||
&g_PcbPlotOptions.m_ExcludeEdgeLayer, true ) );
|
||||
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" ),
|
||||
&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;
|
||||
}
|
||||
|
|
|
@ -21,28 +21,28 @@
|
|||
#define PLOT_DEFAULT_MARGE 300 // mils
|
||||
|
||||
/* Keywords to r/w options in m_Config */
|
||||
#define OPTKEY_GERBER_EXTENSIONS wxT( "GerberOptUseLayersExt" )
|
||||
#define OPTKEY_XFINESCALE_ADJ wxT( "PlotXFineScaleAdj" )
|
||||
#define OPTKEY_YFINESCALE_ADJ wxT( "PlotYFineScaleAdj" )
|
||||
#define OPTKEY_GERBER_EXTENSIONS wxT( "GerberOptUseLayersExt" )
|
||||
#define OPTKEY_XFINESCALE_ADJ wxT( "PlotXFineScaleAdj" )
|
||||
#define OPTKEY_YFINESCALE_ADJ wxT( "PlotYFineScaleAdj" )
|
||||
|
||||
// Define min and max reasonable values for print scale
|
||||
#define MIN_SCALE 0.01
|
||||
#define MAX_SCALE 100.0
|
||||
|
||||
// PCB_Plot_Options constructor: set the default values for plot options:
|
||||
PCB_Plot_Options::PCB_Plot_Options()
|
||||
// PCB_PLOT_PARAMS constructor: set the default values for plot options:
|
||||
PCB_PLOT_PARAMS::PCB_PLOT_PARAMS()
|
||||
{
|
||||
m_SubtractMaskFromSilk = false;
|
||||
Sel_Texte_Reference = true;
|
||||
Sel_Texte_Valeur = true;
|
||||
Sel_Texte_Divers = true;
|
||||
DrillShapeOpt = PCB_Plot_Options::SMALL_DRILL_SHAPE;
|
||||
Trace_Mode = FILLED;
|
||||
Scale = 1.0;
|
||||
ScaleAdjX = 1.0;
|
||||
ScaleAdjY = 1.0;
|
||||
PlotScaleOpt = 1;
|
||||
outputDirectory = wxT( "" );
|
||||
m_PlotReference = true;
|
||||
m_PlotValue = true;
|
||||
m_PlotTextOther = true;
|
||||
m_DrillShapeOpt = PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE;
|
||||
Trace_Mode = FILLED;
|
||||
m_PlotScale = 1.0;
|
||||
m_AutoScale = false;
|
||||
m_FineScaleAdjustX = 1.0;
|
||||
m_FineScaleAdjustY = 1.0;
|
||||
outputDirectory = wxT( "" );
|
||||
}
|
||||
|
||||
|
||||
|
@ -53,8 +53,8 @@ static bool s_PlotOriginIsAuxAxis = FALSE;
|
|||
|
||||
|
||||
/* The group of plot options - sadly global XXX */
|
||||
PCB_Plot_Options g_pcb_plot_options;
|
||||
extern int g_DrawDefaultLineThickness;
|
||||
PCB_PLOT_PARAMS g_PcbPlotOptions;
|
||||
extern int g_DrawDefaultLineThickness;
|
||||
|
||||
|
||||
/*******************************/
|
||||
|
@ -69,6 +69,7 @@ public:
|
|||
wxCheckBox* m_BoxSelectLayer[LAYER_COUNT]; // wxCheckBox list to select/deselec layers to plot
|
||||
double m_XScaleAdjust;
|
||||
double m_YScaleAdjust;
|
||||
static int m_dlgPlotScaleOpt; // Static to remember last selection
|
||||
|
||||
|
||||
bool useA4()
|
||||
|
@ -79,7 +80,7 @@ public:
|
|||
|
||||
/**
|
||||
* Function getFormat
|
||||
* returns one of the values from the PlotFormat enum. If the 4th
|
||||
* returns one of the values from the m_PlotFormat enum. If the 4th
|
||||
* radio button is selected, map this back to postscript.
|
||||
*/
|
||||
PlotFormat getFormat()
|
||||
|
@ -87,7 +88,7 @@ public:
|
|||
int radioNdx = m_PlotFormatOpt->GetSelection();
|
||||
|
||||
// change the A4 to the simple postscript, according to the
|
||||
// PlotFormat enum
|
||||
// m_PlotFormat enum
|
||||
switch( radioNdx )
|
||||
{
|
||||
case 3:
|
||||
|
@ -103,8 +104,7 @@ public:
|
|||
}
|
||||
|
||||
|
||||
public:
|
||||
DIALOG_PLOT( WinEDA_PcbFrame* parent );
|
||||
public: DIALOG_PLOT( WinEDA_PcbFrame* parent );
|
||||
private:
|
||||
void Init_Dialog();
|
||||
void Plot( wxCommandEvent& event );
|
||||
|
@ -117,6 +117,7 @@ private:
|
|||
void CreateDrillFile( wxCommandEvent& event );
|
||||
};
|
||||
|
||||
int DIALOG_PLOT::m_dlgPlotScaleOpt = 1;
|
||||
|
||||
const int UNITS_MILS = 1000;
|
||||
|
||||
|
@ -137,36 +138,36 @@ DIALOG_PLOT::DIALOG_PLOT( WinEDA_PcbFrame* parent ) :
|
|||
|
||||
void DIALOG_PLOT::Init_Dialog()
|
||||
{
|
||||
wxString msg;
|
||||
wxString msg;
|
||||
wxFileName fileName;
|
||||
|
||||
BOARD* board = m_Parent->GetBoard();
|
||||
BOARD* board = m_Parent->GetBoard();
|
||||
|
||||
m_Config->Read( OPTKEY_XFINESCALE_ADJ, &m_XScaleAdjust );
|
||||
m_Config->Read( OPTKEY_YFINESCALE_ADJ, &m_YScaleAdjust );
|
||||
|
||||
m_PlotFormatOpt->SetSelection( g_pcb_plot_options.PlotFormat );
|
||||
g_pcb_plot_options.PlotLine_Width = g_DrawDefaultLineThickness;
|
||||
m_PlotFormatOpt->SetSelection( g_PcbPlotOptions.m_PlotFormat );
|
||||
g_PcbPlotOptions.m_PlotLineWidth = g_DrawDefaultLineThickness;
|
||||
|
||||
|
||||
// Set units and value for HPGL pen speed.
|
||||
AddUnitSymbol( *m_textPenSize, g_UserUnit );
|
||||
msg = ReturnStringFromValue( g_UserUnit, g_pcb_plot_options.HPGL_Pen_Diam, UNITS_MILS );
|
||||
msg = ReturnStringFromValue( g_UserUnit, g_PcbPlotOptions.m_HPGLPenDiam, UNITS_MILS );
|
||||
m_HPGLPenSizeOpt->AppendText( msg );
|
||||
|
||||
// Set units to cm for standard HPGL pen speed.
|
||||
msg = ReturnStringFromValue( UNSCALED_UNITS, g_pcb_plot_options.HPGL_Pen_Speed, 1 );
|
||||
msg = ReturnStringFromValue( UNSCALED_UNITS, g_PcbPlotOptions.m_HPGLPenSpeed, 1 );
|
||||
m_HPGLPenSpeedOpt->AppendText( msg );
|
||||
|
||||
// Set units and value for HPGL pen overlay.
|
||||
AddUnitSymbol( *m_textPenOvr, g_UserUnit );
|
||||
msg = ReturnStringFromValue( g_UserUnit,
|
||||
g_pcb_plot_options.HPGL_Pen_Recouvrement,
|
||||
g_PcbPlotOptions.m_HPGLPenOvr,
|
||||
UNITS_MILS );
|
||||
m_HPGLPenOverlayOpt->AppendText( msg );
|
||||
|
||||
msg = ReturnStringFromValue( g_UserUnit,
|
||||
g_pcb_plot_options.PlotLine_Width,
|
||||
g_PcbPlotOptions.m_PlotLineWidth,
|
||||
PCB_INTERNAL_UNIT );
|
||||
m_LinesWidth->AppendText( msg );
|
||||
|
||||
|
@ -187,7 +188,7 @@ void DIALOG_PLOT::Init_Dialog()
|
|||
msg.Printf( wxT( "%f" ), m_YScaleAdjust );
|
||||
m_FineAdjustYscaleOpt->AppendText( msg );
|
||||
|
||||
m_Plot_PS_Negative->SetValue( g_pcb_plot_options.Plot_PS_Negative );
|
||||
m_plotPSNegativeOpt->SetValue( g_PcbPlotOptions.m_PlotPSNegative );
|
||||
|
||||
|
||||
// Create layer list.
|
||||
|
@ -198,29 +199,29 @@ void DIALOG_PLOT::Init_Dialog()
|
|||
if( !board->IsLayerEnabled( layer ) )
|
||||
m_BoxSelectLayer[layer] = NULL;
|
||||
else
|
||||
m_BoxSelectLayer[layer] =
|
||||
new wxCheckBox( this, -1, board->GetLayerName( layer ) );
|
||||
m_BoxSelectLayer[layer] =
|
||||
new wxCheckBox( this, -1, board->GetLayerName( layer ) );
|
||||
}
|
||||
|
||||
// Add wxCheckBoxes in layers lists dialog
|
||||
// List layers in same order than in setup layers dialog
|
||||
// (Front or Top to Back or Bottom)
|
||||
DECLARE_LAYERS_ORDER_LIST(layersOrder);
|
||||
DECLARE_LAYERS_ORDER_LIST( layersOrder );
|
||||
for( int layer_idx = 0; layer_idx < NB_LAYERS; ++layer_idx )
|
||||
{
|
||||
layer = layersOrder[layer_idx];
|
||||
|
||||
wxASSERT(layer < NB_LAYERS);
|
||||
wxASSERT( layer < NB_LAYERS );
|
||||
|
||||
if( m_BoxSelectLayer[layer] == NULL )
|
||||
continue;
|
||||
|
||||
if( layer < NB_COPPER_LAYERS )
|
||||
m_CopperLayersBoxSizer->Add( m_BoxSelectLayer[layer],
|
||||
0, wxGROW | wxALL, 1 );
|
||||
0, wxGROW | wxALL, 1 );
|
||||
else
|
||||
m_TechnicalLayersBoxSizer->Add( m_BoxSelectLayer[layer],
|
||||
0, wxGROW | wxALL, 1 );
|
||||
0, wxGROW | wxALL, 1 );
|
||||
|
||||
|
||||
layerKey.Printf( OPTKEY_LAYERBASE, layer );
|
||||
|
@ -242,54 +243,54 @@ void DIALOG_PLOT::Init_Dialog()
|
|||
m_Use_Gerber_Extensions->SetValue( ltmp );
|
||||
|
||||
// Option for excluding contents of "Edges Pcb" layer
|
||||
m_Exclude_Edges_Pcb->SetValue( g_pcb_plot_options.Exclude_Edges_Pcb );
|
||||
m_excludeEdgeLayerOpt->SetValue( g_PcbPlotOptions.m_ExcludeEdgeLayer );
|
||||
|
||||
m_SubtractMaskFromSilk->SetValue( g_pcb_plot_options.GetSubtractMaskFromSilk() );
|
||||
m_SubtractMaskFromSilk->SetValue( g_PcbPlotOptions.GetSubtractMaskFromSilk() );
|
||||
|
||||
// Option to plot page references:
|
||||
if( m_Parent->m_Print_Sheet_Ref )
|
||||
{
|
||||
m_Plot_Sheet_Ref->SetValue( g_pcb_plot_options.Plot_Frame_Ref );
|
||||
m_Plot_Sheet_Ref->SetValue( g_PcbPlotOptions.m_PlotFrameRef );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Plot_Sheet_Ref->Enable( false );
|
||||
g_pcb_plot_options.Plot_Frame_Ref = false;
|
||||
g_PcbPlotOptions.m_PlotFrameRef = false;
|
||||
}
|
||||
|
||||
// Option to plot pads on silkscreen layers or all layers
|
||||
m_Plot_Pads_on_Silkscreen->SetValue( g_pcb_plot_options.PlotPadsOnSilkLayer );
|
||||
m_Plot_Pads_on_Silkscreen->SetValue( g_PcbPlotOptions.m_PlotPadsOnSilkLayer );
|
||||
|
||||
// Options to plot texts on footprints
|
||||
m_Plot_Text_Value->SetValue( g_pcb_plot_options.Sel_Texte_Valeur );
|
||||
m_Plot_Text_Ref->SetValue( g_pcb_plot_options.Sel_Texte_Reference );
|
||||
m_Plot_Text_Div->SetValue( g_pcb_plot_options.Sel_Texte_Divers );
|
||||
m_Plot_Invisible_Text->SetValue( g_pcb_plot_options.Sel_Texte_Invisible );
|
||||
m_Plot_Text_Value->SetValue( g_PcbPlotOptions.m_PlotValue );
|
||||
m_Plot_Text_Ref->SetValue( g_PcbPlotOptions.m_PlotReference );
|
||||
m_Plot_Text_Div->SetValue( g_PcbPlotOptions.m_PlotTextOther );
|
||||
m_Plot_Invisible_Text->SetValue( g_PcbPlotOptions.m_PlotInvisibleTexts );
|
||||
|
||||
// Options to plot pads and vias holes
|
||||
m_Drill_Shape_Opt->SetSelection( g_pcb_plot_options.DrillShapeOpt );
|
||||
m_Drill_Shape_Opt->SetSelection( g_PcbPlotOptions.m_DrillShapeOpt );
|
||||
|
||||
// Scale option
|
||||
m_Scale_Opt->SetSelection( g_pcb_plot_options.PlotScaleOpt );
|
||||
m_Scale_Opt->SetSelection( m_dlgPlotScaleOpt );
|
||||
|
||||
// Plot mode
|
||||
m_PlotModeOpt->SetSelection( g_pcb_plot_options.Trace_Mode );
|
||||
m_PlotModeOpt->SetSelection( g_PcbPlotOptions.Trace_Mode );
|
||||
|
||||
// Plot mirror option
|
||||
m_PlotMirorOpt->SetValue( g_pcb_plot_options.Plot_Set_MIROIR );
|
||||
m_PlotMirorOpt->SetValue( g_PcbPlotOptions.m_PlotMirror );
|
||||
|
||||
// Put vias on mask layer
|
||||
m_PlotNoViaOnMaskOpt->SetValue( g_pcb_plot_options.DrawViaOnMaskLayer );
|
||||
m_PlotNoViaOnMaskOpt->SetValue( g_PcbPlotOptions.m_PlotViaOnMaskLayer );
|
||||
|
||||
// Output directory
|
||||
if( g_pcb_plot_options.GetOutputDirectory().IsEmpty() )
|
||||
if( g_PcbPlotOptions.GetOutputDirectory().IsEmpty() )
|
||||
{
|
||||
fileName = m_Parent->GetScreen()->m_FileName;
|
||||
m_OutputDirectory->SetValue( fileName.GetPath() );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_OutputDirectory->SetValue( g_pcb_plot_options.GetOutputDirectory() );
|
||||
m_OutputDirectory->SetValue( g_PcbPlotOptions.GetOutputDirectory() );
|
||||
}
|
||||
|
||||
// Update options values:
|
||||
|
@ -302,7 +303,7 @@ void DIALOG_PLOT::Init_Dialog()
|
|||
}
|
||||
|
||||
|
||||
void DIALOG_PLOT::OnQuit( wxCommandEvent& WXUNUSED(event) )
|
||||
void DIALOG_PLOT::OnQuit( wxCommandEvent& WXUNUSED( event ) )
|
||||
{
|
||||
Close( true ); // true is to force the frame to close
|
||||
}
|
||||
|
@ -331,9 +332,11 @@ void DIALOG_PLOT::OnSetScaleOpt( wxCommandEvent& event )
|
|||
m_Plot_Sheet_Ref->SetValue( false );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLOT::OnOutputDirectoryBrowseClicked( wxCommandEvent& event )
|
||||
{
|
||||
wxString currentDir;
|
||||
wxString currentDir;
|
||||
|
||||
currentDir = m_OutputDirectory->GetValue();
|
||||
wxDirDialog dirDialog( this, _( "Select Output Directory" ), currentDir );
|
||||
if( dirDialog.ShowModal() == wxID_CANCEL )
|
||||
|
@ -341,6 +344,7 @@ void DIALOG_PLOT::OnOutputDirectoryBrowseClicked( wxCommandEvent& event )
|
|||
m_OutputDirectory->SetValue( dirDialog.GetPath() );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event )
|
||||
{
|
||||
int format = getFormat();
|
||||
|
@ -357,14 +361,14 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event )
|
|||
m_HPGLPenSizeOpt->Enable( false );
|
||||
m_HPGLPenSpeedOpt->Enable( false );
|
||||
m_HPGLPenOverlayOpt->Enable( false );
|
||||
m_Exclude_Edges_Pcb->SetValue( false );
|
||||
m_Exclude_Edges_Pcb->Enable( false );
|
||||
m_excludeEdgeLayerOpt->SetValue( false );
|
||||
m_excludeEdgeLayerOpt->Enable( false );
|
||||
m_SubtractMaskFromSilk->Enable( false );
|
||||
m_Use_Gerber_Extensions->Enable( false );
|
||||
m_Scale_Opt->Enable( true );
|
||||
m_FineAdjustXscaleOpt->Enable( true );
|
||||
m_FineAdjustYscaleOpt->Enable( true );
|
||||
m_Plot_PS_Negative->Enable( true );
|
||||
m_plotPSNegativeOpt->Enable( true );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_GERBER:
|
||||
|
@ -378,15 +382,15 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event )
|
|||
m_HPGLPenSizeOpt->Enable( false );
|
||||
m_HPGLPenSpeedOpt->Enable( false );
|
||||
m_HPGLPenOverlayOpt->Enable( false );
|
||||
m_Exclude_Edges_Pcb->Enable( true );
|
||||
m_excludeEdgeLayerOpt->Enable( true );
|
||||
m_SubtractMaskFromSilk->Enable( true );
|
||||
m_Use_Gerber_Extensions->Enable( true );
|
||||
m_Scale_Opt->SetSelection( 1 );
|
||||
m_Scale_Opt->Enable( false );
|
||||
m_FineAdjustXscaleOpt->Enable( false );
|
||||
m_FineAdjustYscaleOpt->Enable( false );
|
||||
m_Plot_PS_Negative->SetValue( false );
|
||||
m_Plot_PS_Negative->Enable( false );
|
||||
m_plotPSNegativeOpt->SetValue( false );
|
||||
m_plotPSNegativeOpt->Enable( false );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_HPGL:
|
||||
|
@ -398,15 +402,15 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event )
|
|||
m_HPGLPenSizeOpt->Enable( true );
|
||||
m_HPGLPenSpeedOpt->Enable( true );
|
||||
m_HPGLPenOverlayOpt->Enable( true );
|
||||
m_Exclude_Edges_Pcb->SetValue( false );
|
||||
m_Exclude_Edges_Pcb->Enable( false );
|
||||
m_excludeEdgeLayerOpt->SetValue( false );
|
||||
m_excludeEdgeLayerOpt->Enable( false );
|
||||
m_SubtractMaskFromSilk->Enable( false );
|
||||
m_Use_Gerber_Extensions->Enable( false );
|
||||
m_Scale_Opt->Enable( true );
|
||||
m_FineAdjustXscaleOpt->Enable( false );
|
||||
m_FineAdjustYscaleOpt->Enable( false );
|
||||
m_Plot_PS_Negative->SetValue( false );
|
||||
m_Plot_PS_Negative->Enable( false );
|
||||
m_plotPSNegativeOpt->SetValue( false );
|
||||
m_plotPSNegativeOpt->Enable( false );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_DXF:
|
||||
|
@ -419,70 +423,65 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event )
|
|||
m_HPGLPenSizeOpt->Enable( false );
|
||||
m_HPGLPenSpeedOpt->Enable( false );
|
||||
m_HPGLPenOverlayOpt->Enable( false );
|
||||
m_Exclude_Edges_Pcb->SetValue( false );
|
||||
m_Exclude_Edges_Pcb->Enable( false );
|
||||
m_excludeEdgeLayerOpt->SetValue( false );
|
||||
m_excludeEdgeLayerOpt->Enable( false );
|
||||
m_SubtractMaskFromSilk->Enable( false );
|
||||
m_Use_Gerber_Extensions->Enable( false );
|
||||
m_Scale_Opt->Enable( false );
|
||||
m_Scale_Opt->SetSelection( 1 );
|
||||
m_FineAdjustXscaleOpt->Enable( false );
|
||||
m_FineAdjustYscaleOpt->Enable( false );
|
||||
m_Plot_PS_Negative->SetValue( false );
|
||||
m_Plot_PS_Negative->Enable( false );
|
||||
m_plotPSNegativeOpt->SetValue( false );
|
||||
m_plotPSNegativeOpt->Enable( false );
|
||||
break;
|
||||
}
|
||||
|
||||
g_pcb_plot_options.PlotFormat = format;
|
||||
g_PcbPlotOptions.m_PlotFormat = format;
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_PLOT::SaveOptPlot( wxCommandEvent& event )
|
||||
{
|
||||
g_pcb_plot_options.Exclude_Edges_Pcb = m_Exclude_Edges_Pcb->GetValue();
|
||||
g_PcbPlotOptions.m_ExcludeEdgeLayer = m_excludeEdgeLayerOpt->GetValue();
|
||||
|
||||
g_pcb_plot_options.SetSubtractMaskFromSilk( m_SubtractMaskFromSilk->GetValue() );
|
||||
g_PcbPlotOptions.SetSubtractMaskFromSilk( m_SubtractMaskFromSilk->GetValue() );
|
||||
|
||||
if( m_Plot_Sheet_Ref )
|
||||
g_pcb_plot_options.Plot_Frame_Ref = m_Plot_Sheet_Ref->GetValue();
|
||||
g_PcbPlotOptions.m_PlotFrameRef = m_Plot_Sheet_Ref->GetValue();
|
||||
|
||||
g_pcb_plot_options.PlotPadsOnSilkLayer = m_Plot_Pads_on_Silkscreen->GetValue();
|
||||
g_PcbPlotOptions.m_PlotPadsOnSilkLayer = m_Plot_Pads_on_Silkscreen->GetValue();
|
||||
|
||||
s_PlotOriginIsAuxAxis =
|
||||
(m_Choice_Plot_Offset->GetSelection() == 0) ? FALSE : TRUE;
|
||||
|
||||
g_pcb_plot_options.Sel_Texte_Valeur = m_Plot_Text_Value->GetValue();
|
||||
g_pcb_plot_options.Sel_Texte_Reference = m_Plot_Text_Ref->GetValue();
|
||||
g_pcb_plot_options.Sel_Texte_Divers = m_Plot_Text_Div->GetValue();
|
||||
g_pcb_plot_options.Sel_Texte_Invisible = m_Plot_Invisible_Text->GetValue();
|
||||
g_PcbPlotOptions.m_PlotValue = m_Plot_Text_Value->GetValue();
|
||||
g_PcbPlotOptions.m_PlotReference = m_Plot_Text_Ref->GetValue();
|
||||
g_PcbPlotOptions.m_PlotTextOther = m_Plot_Text_Div->GetValue();
|
||||
g_PcbPlotOptions.m_PlotInvisibleTexts = m_Plot_Invisible_Text->GetValue();
|
||||
|
||||
g_pcb_plot_options.PlotScaleOpt = m_Scale_Opt->GetSelection();
|
||||
g_pcb_plot_options.DrillShapeOpt =
|
||||
(PCB_Plot_Options::DrillShapeOptT) m_Drill_Shape_Opt->GetSelection();
|
||||
g_pcb_plot_options.Plot_Set_MIROIR = m_PlotMirorOpt->GetValue();
|
||||
if( g_pcb_plot_options.Plot_Set_MIROIR )
|
||||
g_pcb_plot_options.PlotOrient = PLOT_MIROIR;
|
||||
else
|
||||
g_pcb_plot_options.PlotOrient = 0;
|
||||
g_pcb_plot_options.Trace_Mode = (GRTraceMode) m_PlotModeOpt->GetSelection();
|
||||
g_pcb_plot_options.DrawViaOnMaskLayer = m_PlotNoViaOnMaskOpt->GetValue();
|
||||
m_dlgPlotScaleOpt = m_Scale_Opt->GetSelection();
|
||||
g_PcbPlotOptions.m_DrillShapeOpt =
|
||||
(PCB_PLOT_PARAMS::DrillShapeOptT) m_Drill_Shape_Opt->GetSelection();
|
||||
g_PcbPlotOptions.m_PlotMirror = m_PlotMirorOpt->GetValue();
|
||||
g_PcbPlotOptions.Trace_Mode = (GRTraceMode) m_PlotModeOpt->GetSelection();
|
||||
g_PcbPlotOptions.m_PlotViaOnMaskLayer = m_PlotNoViaOnMaskOpt->GetValue();
|
||||
|
||||
wxString msg = m_HPGLPenSizeOpt->GetValue();
|
||||
int tmp = ReturnValueFromString( g_UserUnit, msg, UNITS_MILS );
|
||||
g_pcb_plot_options.HPGL_Pen_Diam = tmp;
|
||||
g_PcbPlotOptions.m_HPGLPenDiam = tmp;
|
||||
|
||||
msg = m_HPGLPenSpeedOpt->GetValue();
|
||||
tmp = ReturnValueFromString( MILLIMETRES, msg, 1 );
|
||||
g_pcb_plot_options.HPGL_Pen_Speed = tmp;
|
||||
g_PcbPlotOptions.m_HPGLPenSpeed = tmp;
|
||||
|
||||
msg = m_HPGLPenOverlayOpt->GetValue();
|
||||
tmp = ReturnValueFromString( g_UserUnit, msg, UNITS_MILS );
|
||||
g_pcb_plot_options.HPGL_Pen_Recouvrement = tmp;
|
||||
g_PcbPlotOptions.m_HPGLPenOvr = tmp;
|
||||
|
||||
msg = m_LinesWidth->GetValue();
|
||||
tmp = ReturnValueFromString( g_UserUnit, msg, PCB_INTERNAL_UNIT );
|
||||
g_pcb_plot_options.PlotLine_Width = tmp;
|
||||
g_DrawDefaultLineThickness = g_pcb_plot_options.PlotLine_Width;
|
||||
|
||||
g_PcbPlotOptions.m_PlotLineWidth = tmp;
|
||||
g_DrawDefaultLineThickness = g_PcbPlotOptions.m_PlotLineWidth;
|
||||
|
||||
msg = m_FineAdjustXscaleOpt->GetValue();
|
||||
msg.ToDouble( &m_XScaleAdjust );
|
||||
|
@ -494,10 +493,10 @@ void DIALOG_PLOT::SaveOptPlot( wxCommandEvent& event )
|
|||
m_Config->Write( OPTKEY_XFINESCALE_ADJ, m_XScaleAdjust );
|
||||
m_Config->Write( OPTKEY_YFINESCALE_ADJ, m_YScaleAdjust );
|
||||
|
||||
g_pcb_plot_options.PlotFormat = m_PlotFormatOpt->GetSelection();
|
||||
g_PcbPlotOptions.m_PlotFormat = m_PlotFormatOpt->GetSelection();
|
||||
|
||||
wxString layerKey;
|
||||
for( int layer = 0; layer<NB_LAYERS; ++layer )
|
||||
for( int layer = 0; layer<NB_LAYERS; ++layer )
|
||||
{
|
||||
if( m_BoxSelectLayer[layer] == NULL )
|
||||
continue;
|
||||
|
@ -505,9 +504,9 @@ void DIALOG_PLOT::SaveOptPlot( wxCommandEvent& event )
|
|||
m_Config->Write( layerKey, m_BoxSelectLayer[layer]->IsChecked() );
|
||||
}
|
||||
|
||||
g_pcb_plot_options.Plot_PS_Negative = m_Plot_PS_Negative->GetValue();
|
||||
g_PcbPlotOptions.m_PlotPSNegative = m_plotPSNegativeOpt->GetValue();
|
||||
|
||||
g_pcb_plot_options.SetOutputDirectory( m_OutputDirectory->GetValue() );
|
||||
g_PcbPlotOptions.SetOutputDirectory( m_OutputDirectory->GetValue() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -537,22 +536,27 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
|||
}
|
||||
}
|
||||
|
||||
switch( g_pcb_plot_options.PlotScaleOpt )
|
||||
g_PcbPlotOptions.m_AutoScale = false;
|
||||
g_PcbPlotOptions.m_PlotScale = 1;
|
||||
switch( m_dlgPlotScaleOpt )
|
||||
{
|
||||
default:
|
||||
g_pcb_plot_options.Scale = 1;
|
||||
break;
|
||||
|
||||
case 0:
|
||||
g_PcbPlotOptions.m_AutoScale = true;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
g_pcb_plot_options.Scale = 1.5;
|
||||
g_PcbPlotOptions.m_PlotScale = 1.5;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
g_pcb_plot_options.Scale = 2;
|
||||
g_PcbPlotOptions.m_PlotScale = 2;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
g_pcb_plot_options.Scale = 3;
|
||||
g_PcbPlotOptions.m_PlotScale = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -561,12 +565,10 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
|||
* the default scale adjust is initialized to 0 and saved in program
|
||||
* settings resulting in a divide by zero fault.
|
||||
*/
|
||||
if( m_FineAdjustXscaleOpt - IsEnabled()
|
||||
&& m_XScaleAdjust != 0.0 )
|
||||
g_pcb_plot_options.ScaleAdjX = m_XScaleAdjust;
|
||||
if( m_FineAdjustYscaleOpt->IsEnabled()
|
||||
&& m_YScaleAdjust != 0.0 )
|
||||
g_pcb_plot_options.ScaleAdjY = m_YScaleAdjust;
|
||||
if( m_FineAdjustXscaleOpt->IsEnabled() && m_XScaleAdjust != 0.0 )
|
||||
g_PcbPlotOptions.m_FineScaleAdjustX = m_XScaleAdjust;
|
||||
if( m_FineAdjustYscaleOpt->IsEnabled() && m_YScaleAdjust != 0.0 )
|
||||
g_PcbPlotOptions.m_FineScaleAdjustY = m_YScaleAdjust;
|
||||
|
||||
int format = getFormat();
|
||||
|
||||
|
@ -577,7 +579,7 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case PLOT_FORMAT_GERBER:
|
||||
g_pcb_plot_options.Scale = 1.0; // No scale option allowed in gerber format
|
||||
g_PcbPlotOptions.m_PlotScale = 1.0; // No scale option allowed in gerber format
|
||||
ext = wxT( "pho" );
|
||||
break;
|
||||
|
||||
|
@ -586,16 +588,16 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case PLOT_FORMAT_DXF:
|
||||
g_pcb_plot_options.Scale = 1.0;
|
||||
g_PcbPlotOptions.m_PlotScale = 1.0;
|
||||
ext = wxT( "dxf" );
|
||||
break;
|
||||
}
|
||||
|
||||
// Test for a reasonable scale value
|
||||
if( g_pcb_plot_options.Scale < MIN_SCALE )
|
||||
if( g_PcbPlotOptions.m_PlotScale < MIN_SCALE )
|
||||
DisplayInfoMessage( this,
|
||||
_( "Warning: Scale option set to a very small value" ) );
|
||||
if( g_pcb_plot_options.Scale > MAX_SCALE )
|
||||
if( g_PcbPlotOptions.m_PlotScale > MAX_SCALE )
|
||||
DisplayInfoMessage( this,
|
||||
_( "Warning: Scale option set to a very large value" ) );
|
||||
|
||||
|
@ -704,23 +706,23 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
|||
{
|
||||
case PLOT_FORMAT_POST:
|
||||
success = m_Parent->Genere_PS( fn.GetFullPath(), layer, useA4(),
|
||||
g_pcb_plot_options.Trace_Mode );
|
||||
g_PcbPlotOptions.Trace_Mode );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_GERBER:
|
||||
success = m_Parent->Genere_GERBER( fn.GetFullPath(), layer,
|
||||
s_PlotOriginIsAuxAxis,
|
||||
g_pcb_plot_options.Trace_Mode );
|
||||
g_PcbPlotOptions.Trace_Mode );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_HPGL:
|
||||
success = m_Parent->Genere_HPGL( fn.GetFullPath(), layer,
|
||||
g_pcb_plot_options.Trace_Mode );
|
||||
g_PcbPlotOptions.Trace_Mode );
|
||||
break;
|
||||
|
||||
case PLOT_FORMAT_DXF:
|
||||
success = m_Parent->Genere_DXF( fn.GetFullPath(), layer,
|
||||
g_pcb_plot_options.Trace_Mode );
|
||||
g_PcbPlotOptions.Trace_Mode );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -745,8 +747,6 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
|
|||
|
||||
void WinEDA_PcbFrame::ToPlotter( wxCommandEvent& event )
|
||||
{
|
||||
DIALOG_PLOT* frame = new DIALOG_PLOT( this );
|
||||
|
||||
frame->ShowModal();
|
||||
frame->Destroy();
|
||||
DIALOG_PLOT dlg( this );
|
||||
dlg.ShowModal();
|
||||
}
|
||||
|
|
|
@ -25,58 +25,64 @@
|
|||
// Small drill marks diameter value (in internal value = 1/10000 inch)
|
||||
#define SMALL_DRILL 150
|
||||
|
||||
/* Plot Options : */
|
||||
class PCB_Plot_Options
|
||||
/* a helper class to handle plot parameters and options when plotting/printing a board
|
||||
*/
|
||||
class PCB_PLOT_PARAMS
|
||||
{
|
||||
public:
|
||||
bool Exclude_Edges_Pcb;
|
||||
int PlotLine_Width;
|
||||
bool Plot_Frame_Ref; // True to plot/print frame references
|
||||
bool DrawViaOnMaskLayer; // True if vias are drawn on Mask layer
|
||||
// (ie protected by mask)
|
||||
bool m_ExcludeEdgeLayer; // True: do not plot edge layer when plotting other layers
|
||||
// False: Edge layer always plotted (merged) when plotting other layers
|
||||
int m_PlotLineWidth;
|
||||
bool m_PlotFrameRef; // True to plot/print frame references
|
||||
bool m_PlotViaOnMaskLayer; // True if vias are drawn on Mask layer
|
||||
// (ie protected by mask)
|
||||
GRTraceMode Trace_Mode;
|
||||
bool Plot_Set_MIROIR;
|
||||
int HPGL_Pen_Num;
|
||||
int HPGL_Pen_Speed;
|
||||
int HPGL_Pen_Diam;
|
||||
int HPGL_Pen_Recouvrement;
|
||||
int PlotPSColorOpt; // True for color Postscript output
|
||||
bool Plot_PS_Negative; // True to create a negative board ps plot
|
||||
int m_HPGLPenNum;
|
||||
int m_HPGLPenSpeed;
|
||||
int m_HPGLPenDiam;
|
||||
int m_HPGLPenOvr;
|
||||
int m_PlotPSColorOpt; // True for color Postscript output
|
||||
bool m_PlotPSNegative; // True to create a negative board ps plot
|
||||
|
||||
/* Flags to enable or disable ploting of various PCB elements. */
|
||||
bool Sel_Texte_Reference;
|
||||
bool Sel_Texte_Valeur;
|
||||
bool Sel_Texte_Divers;
|
||||
bool Sel_Texte_Invisible;
|
||||
bool PlotPadsOnSilkLayer; /* allows pads on silkscreen */
|
||||
bool m_PlotReference;
|
||||
bool m_PlotValue;
|
||||
bool m_PlotTextOther;
|
||||
bool m_PlotInvisibleTexts;
|
||||
bool m_PlotPadsOnSilkLayer; // allows pads outlines on silkscreen layer (when pads are also o, silk screen
|
||||
bool m_SubtractMaskFromSilk;
|
||||
|
||||
/* id for plot format (see enum PlotFormat in plot_common.h) */
|
||||
int PlotFormat;
|
||||
int PlotOrient;
|
||||
int PlotScaleOpt;
|
||||
int m_PlotFormat; // Gerber, HPGL ...
|
||||
bool m_PlotMirror;
|
||||
|
||||
enum DrillShapeOptT {
|
||||
NO_DRILL_SHAPE = 0,
|
||||
SMALL_DRILL_SHAPE = 1,
|
||||
FULL_DRILL_SHAPE = 2
|
||||
};
|
||||
DrillShapeOptT DrillShapeOpt;
|
||||
double Scale;
|
||||
double ScaleAdjX;
|
||||
double ScaleAdjY;
|
||||
DrillShapeOptT m_DrillShapeOpt; // For postscript output: holes can be not plotted,
|
||||
// or have a small size or plotted with their actual size
|
||||
bool m_AutoScale; // If true, use the better scale to fit in page
|
||||
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:
|
||||
wxString outputDirectory;
|
||||
wxString outputDirectory;
|
||||
|
||||
public:
|
||||
PCB_Plot_Options();
|
||||
public: PCB_PLOT_PARAMS();
|
||||
void SetOutputDirectory( wxString aDir ) { outputDirectory = aDir; };
|
||||
wxString GetOutputDirectory() { return outputDirectory; };
|
||||
void SetSubtractMaskFromSilk( bool aSubtract ) { m_SubtractMaskFromSilk = aSubtract; };
|
||||
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,
|
||||
|
@ -88,7 +94,7 @@ void PlotDrawSegment( PLOTTER* plotter, DRAWSEGMENT* PtSegm, int masque_layer,
|
|||
GRTraceMode trace_mode );
|
||||
|
||||
void PlotDimension( PLOTTER* plotter, DIMENSION* Dimension, int masque_layer,
|
||||
GRTraceMode trace_mode );
|
||||
GRTraceMode trace_mode );
|
||||
|
||||
void PlotMirePcb( PLOTTER* plotter, MIREPCB* PtMire, int masque_layer,
|
||||
GRTraceMode trace_mode );
|
||||
|
|
|
@ -67,7 +67,7 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
|
|||
/* Plot pads (creates pads outlines, for pads on silkscreen layers) */
|
||||
int layersmask_plotpads = masque_layer;
|
||||
// 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 );
|
||||
if( layersmask_plotpads )
|
||||
{
|
||||
|
@ -112,8 +112,8 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
|
|||
for( MODULE* Module = m_Pcb->m_Modules; Module; Module = Module->Next() )
|
||||
{
|
||||
/* see if we want to plot VALUE and REF fields */
|
||||
trace_val = g_pcb_plot_options.Sel_Texte_Valeur;
|
||||
trace_ref = g_pcb_plot_options.Sel_Texte_Reference;
|
||||
trace_val = g_PcbPlotOptions.m_PlotValue;
|
||||
trace_ref = g_PcbPlotOptions.m_PlotReference;
|
||||
|
||||
TEXTE_MODULE* text = Module->m_Reference;
|
||||
unsigned textLayer = text->GetLayer();
|
||||
|
@ -132,7 +132,7 @@ module\n %s's \"reference\" text." ),
|
|||
if( ( ( 1 << textLayer ) & masque_layer ) == 0 )
|
||||
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;
|
||||
|
||||
text = Module->m_Value;
|
||||
|
@ -152,7 +152,7 @@ module\n %s's \"value\" text." ),
|
|||
if( ( (1 << textLayer) & masque_layer ) == 0 )
|
||||
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;
|
||||
|
||||
/* Plot text fields, if allowed */
|
||||
|
@ -169,10 +169,10 @@ module\n %s's \"value\" text." ),
|
|||
if( pt_texte->Type() != TYPE_TEXTE_MODULE )
|
||||
continue;
|
||||
|
||||
if( !g_pcb_plot_options.Sel_Texte_Divers )
|
||||
if( !g_PcbPlotOptions.m_PlotTextOther )
|
||||
continue;
|
||||
if( (pt_texte->m_NoShow)
|
||||
&& !g_pcb_plot_options.Sel_Texte_Invisible )
|
||||
&& !g_PcbPlotOptions.m_PlotInvisibleTexts )
|
||||
continue;
|
||||
|
||||
textLayer = pt_texte->GetLayer();
|
||||
|
@ -644,7 +644,7 @@ void PlotDrawSegment( PLOTTER* plotter, DRAWSEGMENT* pt_segm, int masque_layer,
|
|||
return;
|
||||
|
||||
if( trace_mode == FILAIRE )
|
||||
thickness = g_pcb_plot_options.PlotLine_Width;
|
||||
thickness = g_PcbPlotOptions.m_PlotLineWidth;
|
||||
else
|
||||
thickness = pt_segm->m_Width;
|
||||
|
||||
|
@ -697,7 +697,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer,
|
|||
// in addition to the contents of the currently specified layer.
|
||||
int layer_mask = g_TabOneLayerMask[Layer];
|
||||
|
||||
if( !g_pcb_plot_options.Exclude_Edges_Pcb )
|
||||
if( !g_PcbPlotOptions.m_ExcludeEdgeLayer )
|
||||
layer_mask |= EDGE_LAYER;
|
||||
|
||||
switch( 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
|
||||
// them:
|
||||
if( g_pcb_plot_options.DrillShapeOpt !=
|
||||
PCB_Plot_Options::NO_DRILL_SHAPE )
|
||||
if( g_PcbPlotOptions.m_DrillShapeOpt != PCB_PLOT_PARAMS::NO_DRILL_SHAPE )
|
||||
{
|
||||
if( plotter->GetPlotterType() == PLOT_FORMAT_POST )
|
||||
PlotDrillMark( plotter,
|
||||
trace_mode,
|
||||
g_pcb_plot_options.DrillShapeOpt ==
|
||||
PCB_Plot_Options::SMALL_DRILL_SHAPE );
|
||||
PlotDrillMark( plotter, trace_mode,
|
||||
g_PcbPlotOptions.m_DrillShapeOpt ==
|
||||
PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE );
|
||||
}
|
||||
break;
|
||||
|
||||
case SOLDERMASK_N_BACK:
|
||||
case SOLDERMASK_N_FRONT:
|
||||
Plot_Standard_Layer( plotter, layer_mask,
|
||||
g_pcb_plot_options.DrawViaOnMaskLayer, trace_mode );
|
||||
g_PcbPlotOptions.m_PlotViaOnMaskLayer, trace_mode );
|
||||
break;
|
||||
|
||||
case SOLDERPASTE_N_BACK:
|
||||
|
@ -749,7 +747,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer,
|
|||
|
||||
// Gerber: Subtract soldermask from silkscreen if enabled
|
||||
if( plotter->GetPlotterType() == PLOT_FORMAT_GERBER
|
||||
&& g_pcb_plot_options.GetSubtractMaskFromSilk() )
|
||||
&& g_PcbPlotOptions.GetSubtractMaskFromSilk() )
|
||||
{
|
||||
if( Layer == SILKSCREEN_N_FRONT )
|
||||
{
|
||||
|
@ -763,7 +761,7 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer,
|
|||
// Set layer polarity to negative
|
||||
plotter->SetLayerPolarity( false );
|
||||
Plot_Standard_Layer( plotter, layer_mask,
|
||||
g_pcb_plot_options.DrawViaOnMaskLayer,
|
||||
g_PcbPlotOptions.m_PlotViaOnMaskLayer,
|
||||
trace_mode );
|
||||
}
|
||||
break;
|
||||
|
@ -1013,8 +1011,7 @@ void WinEDA_BasePcbFrame::PlotDrillMark( PLOTTER* aPlotter,
|
|||
if( pts->Type() != TYPE_VIA )
|
||||
continue;
|
||||
pos = pts->m_Start;
|
||||
if( g_pcb_plot_options.DrillShapeOpt ==
|
||||
PCB_Plot_Options::SMALL_DRILL_SHAPE )
|
||||
if( g_PcbPlotOptions.m_DrillShapeOpt == PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE )
|
||||
diam.x = diam.y = SMALL_DRILL;
|
||||
else
|
||||
diam.x = diam.y = pts->GetDrillValue();
|
||||
|
|
|
@ -32,7 +32,7 @@ bool WinEDA_BasePcbFrame::Genere_DXF( const wxString& FullFileName, int Layer,
|
|||
plotter->set_filename( FullFileName );
|
||||
plotter->start_plot( output_file );
|
||||
|
||||
if( g_pcb_plot_options.Plot_Frame_Ref )
|
||||
if( g_PcbPlotOptions.m_PlotFrameRef )
|
||||
PlotWorkSheet( plotter, GetScreen() );
|
||||
|
||||
Plot_Layer( plotter, Layer, trace_mode );
|
||||
|
|
|
@ -42,7 +42,7 @@ bool WinEDA_BasePcbFrame::Genere_GERBER( const wxString& FullFileName, int Layer
|
|||
wxPoint offset;
|
||||
|
||||
/* 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 )
|
||||
offset = m_Auxiliary_Axis_Position;
|
||||
|
@ -56,17 +56,17 @@ bool WinEDA_BasePcbFrame::Genere_GERBER( const wxString& FullFileName, int Layer
|
|||
PLOTTER* plotter = new GERBER_PLOTTER();
|
||||
/* No mirror and scaling for gerbers! */
|
||||
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_filename( FullFileName );
|
||||
|
||||
if( plotter->start_plot( output_file ) )
|
||||
{
|
||||
// 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() );
|
||||
Plot_Layer( plotter, Layer, trace_mode );
|
||||
|
||||
Plot_Layer( plotter, Layer, trace_mode );
|
||||
plotter->end_plot();
|
||||
}
|
||||
|
||||
|
|
|
@ -29,26 +29,26 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
|
|||
{
|
||||
return false;
|
||||
}
|
||||
// Compute pen_dim (from g_HPGL_Pen_Diam in mils) in pcb units,
|
||||
// with plot scale (if Scale is 2, pen diameter is always g_HPGL_Pen_Diam
|
||||
// Compute pen_dim (from g_m_HPGLPenDiam in mils) in pcb units,
|
||||
// with plot scale (if Scale is 2, pen diameter is always g_m_HPGLPenDiam
|
||||
// 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
|
||||
if( g_pcb_plot_options.HPGL_Pen_Recouvrement < 0 )
|
||||
g_pcb_plot_options.HPGL_Pen_Recouvrement = 0;
|
||||
if( g_pcb_plot_options.HPGL_Pen_Recouvrement >= g_pcb_plot_options.HPGL_Pen_Diam )
|
||||
g_pcb_plot_options.HPGL_Pen_Recouvrement = g_pcb_plot_options.HPGL_Pen_Diam - 1;
|
||||
int pen_recouvrement = wxRound(
|
||||
g_pcb_plot_options.HPGL_Pen_Recouvrement * 10.0 / g_pcb_plot_options.Scale );
|
||||
if( g_PcbPlotOptions.m_HPGLPenOvr < 0 )
|
||||
g_PcbPlotOptions.m_HPGLPenOvr = 0;
|
||||
if( g_PcbPlotOptions.m_HPGLPenOvr >= g_PcbPlotOptions.m_HPGLPenDiam )
|
||||
g_PcbPlotOptions.m_HPGLPenOvr = g_PcbPlotOptions.m_HPGLPenDiam - 1;
|
||||
int pen_overlay = wxRound(
|
||||
g_PcbPlotOptions.m_HPGLPenOvr * 10.0 / g_PcbPlotOptions.m_PlotScale );
|
||||
|
||||
|
||||
SetLocaleTo_C_standard();
|
||||
|
||||
if( g_pcb_plot_options.PlotScaleOpt != 1 )
|
||||
Center = TRUE; // Scale != 1 so center PCB plot.
|
||||
|
||||
if( g_PcbPlotOptions.m_PlotScale != 1.0 || g_PcbPlotOptions.m_AutoScale )
|
||||
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.
|
||||
SheetSize.x = currentsheet->m_Size.x * U_PCB;
|
||||
|
@ -59,7 +59,7 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
|
|||
BoardSize = m_Pcb->m_BoundaryBox.GetSize();
|
||||
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;
|
||||
|
||||
|
@ -69,7 +69,7 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
|
|||
scale = MIN( Xscale, Yscale );
|
||||
}
|
||||
else
|
||||
scale = g_pcb_plot_options.Scale;
|
||||
scale = g_PcbPlotOptions.m_PlotScale;
|
||||
|
||||
// Calculate the page size offset.
|
||||
if( Center )
|
||||
|
@ -87,20 +87,19 @@ bool WinEDA_BasePcbFrame::Genere_HPGL( const wxString& FullFileName, int Layer,
|
|||
|
||||
HPGL_PLOTTER* plotter = new HPGL_PLOTTER();
|
||||
plotter->set_paper_size( currentsheet );
|
||||
plotter->set_viewport( offset, scale,
|
||||
g_pcb_plot_options.PlotOrient );
|
||||
plotter->set_default_line_width( g_pcb_plot_options.PlotLine_Width );
|
||||
plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror );
|
||||
plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth );
|
||||
plotter->set_creator( wxT( "PCBNEW-HPGL" ) );
|
||||
plotter->set_filename( FullFileName );
|
||||
plotter->set_pen_speed( g_pcb_plot_options.HPGL_Pen_Speed );
|
||||
plotter->set_pen_number( g_pcb_plot_options.HPGL_Pen_Num );
|
||||
plotter->set_pen_overlap( pen_recouvrement );
|
||||
plotter->set_pen_speed( g_PcbPlotOptions.m_HPGLPenSpeed );
|
||||
plotter->set_pen_number( g_PcbPlotOptions.m_HPGLPenNum );
|
||||
plotter->set_pen_overlap( pen_overlay );
|
||||
plotter->set_pen_diameter( pen_diam );
|
||||
plotter->start_plot( output_file );
|
||||
|
||||
/* The worksheet is not significant with scale!=1... It is with
|
||||
* paperscale!=1, anyway */
|
||||
if( g_pcb_plot_options.Plot_Frame_Ref && !Center )
|
||||
if( g_PcbPlotOptions.m_PlotFrameRef && !Center )
|
||||
PlotWorkSheet( plotter, GetScreen() );
|
||||
|
||||
Plot_Layer( plotter, Layer, trace_mode );
|
||||
|
|
|
@ -37,12 +37,13 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
|
|||
|
||||
SetLocaleTo_C_standard();
|
||||
|
||||
if( g_pcb_plot_options.PlotScaleOpt != 1 )
|
||||
Center = TRUE; // Scale != 1 so center plot.
|
||||
if( g_PcbPlotOptions.m_PlotScale != 1.0 || g_PcbPlotOptions.m_AutoScale )
|
||||
Center = true; // when scale != 1.0 we must calculate the position in page
|
||||
// because actual position has no meaning
|
||||
|
||||
// Set default line width
|
||||
if( g_pcb_plot_options.PlotLine_Width < 1 )
|
||||
g_pcb_plot_options.PlotLine_Width = 1;
|
||||
if( g_PcbPlotOptions.m_PlotLineWidth < 1 )
|
||||
g_PcbPlotOptions.m_PlotLineWidth = 1;
|
||||
|
||||
SheetSize.x = currentsheet->m_Size.x * U_PCB;
|
||||
SheetSize.y = currentsheet->m_Size.y * U_PCB;
|
||||
|
@ -65,7 +66,7 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
|
|||
BoardSize = m_Pcb->m_BoundaryBox.GetSize();
|
||||
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;
|
||||
|
||||
|
@ -75,7 +76,7 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
|
|||
scale = MIN( Xscale, Yscale );
|
||||
}
|
||||
else
|
||||
scale = g_pcb_plot_options.Scale * paperscale;
|
||||
scale = g_PcbPlotOptions.m_PlotScale * paperscale;
|
||||
|
||||
if( Center )
|
||||
{
|
||||
|
@ -92,24 +93,23 @@ bool WinEDA_BasePcbFrame::Genere_PS( const wxString& FullFileName, int Layer,
|
|||
|
||||
PS_PLOTTER* plotter = new PS_PLOTTER();
|
||||
plotter->set_paper_size( SheetPS );
|
||||
plotter->set_scale_adjust( g_pcb_plot_options.ScaleAdjX,
|
||||
g_pcb_plot_options.ScaleAdjY );
|
||||
plotter->set_viewport( offset, scale,
|
||||
g_pcb_plot_options.PlotOrient );
|
||||
plotter->set_default_line_width( g_pcb_plot_options.PlotLine_Width );
|
||||
plotter->set_scale_adjust( g_PcbPlotOptions.m_FineScaleAdjustX,
|
||||
g_PcbPlotOptions.m_FineScaleAdjustX );
|
||||
plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror );
|
||||
plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth );
|
||||
plotter->set_creator( wxT( "PCBNEW-PS" ) );
|
||||
plotter->set_filename( FullFileName );
|
||||
plotter->start_plot( output_file );
|
||||
|
||||
/* The worksheet is not significant with scale!=1... It is with
|
||||
* paperscale!=1, anyway */
|
||||
if( g_pcb_plot_options.Plot_Frame_Ref && !Center )
|
||||
if( g_PcbPlotOptions.m_PlotFrameRef && !Center )
|
||||
PlotWorkSheet( plotter, GetScreen() );
|
||||
|
||||
// If plot a negative board:
|
||||
// Draw a black rectangle (background for plot board in 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
|
||||
plotter->set_negative( true );
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
release version:
|
||||
2010 dec 06 (BZR testing 2644)
|
||||
2010 dec 10 (BZR testing 26xx)
|
||||
files (.zip,.tgz):
|
||||
kicad-2010-12-06-testing
|
||||
kicad-2010-12-10-testing
|
||||
|
|
Loading…
Reference in New Issue