diff --git a/common/base_units.cpp b/common/base_units.cpp index e8f19ba119..a871a0d7ba 100644 --- a/common/base_units.cpp +++ b/common/base_units.cpp @@ -41,10 +41,10 @@ #if defined( PCBNEW ) || defined( CVPCB ) || defined( EESCHEMA ) -#define IU_TO_MM( x ) ( x / MM_TO_IU_SCALING_FACTOR ) -#define IU_TO_IN( x ) ( x / MILS_TO_IU_SCALING_FACTOR / 1000 ) -#define MM_TO_IU( x ) ( x * MM_TO_IU_SCALING_FACTOR ) -#define IN_TO_IU( x ) ( x * MILS_TO_IU_SCALING_FACTOR * 1000 ) +#define IU_TO_MM( x ) ( x / IU_PER_MM ) +#define IU_TO_IN( x ) ( x / IU_PER_MILS / 1000 ) +#define MM_TO_IU( x ) ( x * IU_PER_MM ) +#define IN_TO_IU( x ) ( x * IU_PER_MILS * 1000 ) #else #error "Cannot resolve internal units due to no definition of EESCHEMA, CVPCB or PCBNEW." #endif diff --git a/common/eda_text.cpp b/common/eda_text.cpp index 1ade6a903c..6cbae0800f 100644 --- a/common/eda_text.cpp +++ b/common/eda_text.cpp @@ -37,7 +37,7 @@ // Conversion to application internal units defined at build time. #if defined( PCBNEW ) #include -#define MILS_TO_IU( x ) ( x * MILS_TO_IU_SCALING_FACTOR ); +#define MILS_TO_IU( x ) ( x * IU_PER_MILS ); #elif defined( EESCHEMA ) #include #define MILS_TO_IU( x ) ( x ) diff --git a/eeschema/dialogs/dialog_SVG_print.cpp b/eeschema/dialogs/dialog_SVG_print.cpp index 81dd581af5..5816f77655 100644 --- a/eeschema/dialogs/dialog_SVG_print.cpp +++ b/eeschema/dialogs/dialog_SVG_print.cpp @@ -1,289 +1,289 @@ -/* - * This program source code file is part of KiCad, a free EDA CAD application. - * - * Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com - * Copyright (C) 2011 Wayne Stambaugh - * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -/** - * @file eeschema/dialogs/dialog_SVG_print.cpp - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - - -// Keys for configuration -#define PLOTSVGMODECOLOR_KEY wxT( "PlotSVGModeColor" ) - -#define WIDTH_MAX_VALUE 100 -#define WIDTH_MIN_VALUE 1 - -// Variables locales -static bool s_Print_Frame_Ref = true; -static int s_PlotBlackAndWhite = 0; - - -/*! - * DIALOG_SVG_PRINT functions - */ -DIALOG_SVG_PRINT::DIALOG_SVG_PRINT( EDA_DRAW_FRAME* parent ) : - DIALOG_SVG_PRINT_base( parent ) -{ - m_Parent = parent; - m_Config = wxGetApp().GetSettings(); -} - - -void DIALOG_SVG_PRINT::OnInitDialog( wxInitDialogEvent& event ) -{ - SetFocus(); // Make ESC key working - - if( m_Config ) - { - m_Config->Read( PLOTSVGMODECOLOR_KEY, &s_PlotBlackAndWhite ); - } - - m_ModeColorOption->SetSelection( s_PlotBlackAndWhite ); - - AddUnitSymbol( *m_TextPenWidth, g_UserUnit ); - m_DialogPenWidth->SetValue( - ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness ) ); - m_Print_Sheet_Ref->SetValue( s_Print_Frame_Ref ); - - if( GetSizer() ) - { - GetSizer()->SetSizeHints( this ); - } -} - - -void DIALOG_SVG_PRINT::SetPenWidth() -{ - g_DrawDefaultLineThickness = ReturnValueFromTextCtrl( *m_DialogPenWidth ); - - if( g_DrawDefaultLineThickness > WIDTH_MAX_VALUE ) - { - g_DrawDefaultLineThickness = WIDTH_MAX_VALUE; - } - - if( g_DrawDefaultLineThickness < WIDTH_MIN_VALUE ) - { - g_DrawDefaultLineThickness = WIDTH_MIN_VALUE; - } - - m_DialogPenWidth->SetValue( - ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness ) ); -} - - -void DIALOG_SVG_PRINT::PrintSVGDoc( bool aPrintAll, bool aPrint_Sheet_Ref ) -{ - wxString msg; - wxFileName fn; - - SetPenWidth(); - - g_DrawDefaultLineThickness = - ReturnValueFromTextCtrl( *m_DialogPenWidth ); - - SCH_SCREEN* screen = (SCH_SCREEN*) m_Parent->GetScreen(); - - if( aPrintAll && m_Parent->IsType( SCHEMATIC_FRAME ) ) - { - SCH_EDIT_FRAME* schframe = (SCH_EDIT_FRAME*) m_Parent; - SCH_SHEET_PATH* sheetpath; - SCH_SHEET_PATH oldsheetpath = schframe->GetCurrentSheet(); - SCH_SCREEN* schscreen = schframe->GetScreen(); - SCH_SHEET_LIST SheetList( NULL ); - sheetpath = SheetList.GetFirst(); - SCH_SHEET_PATH list; - - for( ; ; ) - { - if( sheetpath == NULL ) - break; - - list.Clear(); - - if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) ) - { - schframe->SetCurrentSheet( list ); - schframe->GetCurrentSheet().UpdateAllScreenReferences(); - schframe->SetSheetNumberAndCount(); - schscreen = schframe->GetCurrentSheet().LastScreen(); - } - else // Should not happen - return; - - sheetpath = SheetList.GetNext(); - - fn = schframe->GetUniqueFilenameForCurrentSheet() + wxT( ".svg" ); - - bool success = DrawSVGPage( m_Parent, fn.GetFullPath(), ( SCH_SCREEN* ) schscreen, - m_ModeColorOption->GetSelection() == 0 ? false : true, - aPrint_Sheet_Ref ); - msg = _( "Create file " ) + fn.GetFullPath(); - if( !success ) - msg += _( " error" ); - msg += wxT( "\n" ); - m_MessagesBox->AppendText( msg ); - } - - schframe->SetCurrentSheet( oldsheetpath ); - schframe->GetCurrentSheet().UpdateAllScreenReferences(); - schframe->SetSheetNumberAndCount(); - } - else - { - fn = m_FileNameCtrl->GetValue(); - - if( !fn.IsOk() ) - fn = screen->GetFileName(); - - fn.SetExt( wxT( "svg" ) ); - fn.MakeAbsolute(); - - bool success = DrawSVGPage( m_Parent, fn.GetFullPath(), ( SCH_SCREEN* ) screen, - m_ModeColorOption->GetSelection() == 0 ? false : true, - aPrint_Sheet_Ref ); - msg = _( "Create file " ) + fn.GetFullPath(); - - if( !success ) - msg += _( " error" ); - - msg += wxT( "\n" ); - m_MessagesBox->AppendText( msg ); - } -} - - -bool DIALOG_SVG_PRINT::DrawSVGPage( EDA_DRAW_FRAME* frame, - const wxString& FullFileName, - SCH_SCREEN* screen, - bool aPrintBlackAndWhite, - bool aPrint_Sheet_Ref ) -{ - int tmpzoom; - wxPoint tmp_startvisu; - wxSize sheetSize; // Sheet size in internal units - wxPoint old_org; - bool success = true; - - tmp_startvisu = screen->m_StartVisu; - tmpzoom = screen->GetZoom(); - old_org = screen->m_DrawOrg; - screen->m_DrawOrg.x = screen->m_DrawOrg.y = 0; - screen->m_StartVisu.x = screen->m_StartVisu.y = 0; - - sheetSize = screen->GetPageSettings().GetSizeIU(); // page size in 1/1000 inch, ie in internal units - - screen->SetScalingFactor( 1.0 ); - EDA_DRAW_PANEL* panel = frame->GetCanvas(); - - LOCALE_IO toggle; - - float dpi = 1000.0; - KicadSVGFileDC dc( FullFileName, sheetSize.x, sheetSize.y, dpi ); - - EDA_RECT tmp = *panel->GetClipBox(); - GRResetPenAndBrush( &dc ); - GRForceBlackPen( aPrintBlackAndWhite ); - - - panel->SetClipBox( EDA_RECT( wxPoint( -0x3FFFFF0, -0x3FFFFF0 ), - wxSize( 0x7FFFFF0, 0x7FFFFF0 ) ) ); - - screen->m_IsPrinting = true; - - if( frame->IsType( SCHEMATIC_FRAME ) ) - screen->Draw( panel, &dc, GR_COPY ); - - if( frame->IsType( LIBEDITOR_FRAME ) ) - ((LIB_EDIT_FRAME*)frame)->RedrawComponent( &dc, - wxPoint(sheetSize.x/2, - sheetSize.y/2) ); - - if( aPrint_Sheet_Ref ) - frame->TraceWorkSheet( &dc, screen, g_DrawDefaultLineThickness, MILS_TO_IU_SCALING_FACTOR ); - - screen->m_IsPrinting = false; - panel->SetClipBox( tmp ); - - GRForceBlackPen( false ); - - screen->m_StartVisu = tmp_startvisu; - screen->m_DrawOrg = old_org; - screen->SetZoom( tmpzoom ); - - return success; -} - - -void DIALOG_SVG_PRINT::OnButtonPlotAllClick( wxCommandEvent& event ) -{ - PrintSVGDoc( true, m_Print_Sheet_Ref->GetValue() ); -} - - -void DIALOG_SVG_PRINT::OnButtonPlotCurrentClick( wxCommandEvent& event ) -{ - PrintSVGDoc( false, m_Print_Sheet_Ref->GetValue() ); -} - - -void DIALOG_SVG_PRINT::OnButtonCancelClick( wxCommandEvent& event ) -{ - Close(); -} - - -void DIALOG_SVG_PRINT::OnCloseWindow( wxCloseEvent& event ) -{ - if( m_Config ) - { - s_PlotBlackAndWhite = m_ModeColorOption->GetSelection(); - m_Config->Write( PLOTSVGMODECOLOR_KEY, s_PlotBlackAndWhite ); - } - EndModal( 0 ); -} - - -/* called on radiobox color/black and white selection - */ -void DIALOG_SVG_PRINT::OnSetColorModeSelected( wxCommandEvent& event ) -{ - s_PlotBlackAndWhite = m_ModeColorOption->GetSelection(); -} +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com + * Copyright (C) 2011 Wayne Stambaugh + * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/** + * @file eeschema/dialogs/dialog_SVG_print.cpp + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + + +// Keys for configuration +#define PLOTSVGMODECOLOR_KEY wxT( "PlotSVGModeColor" ) + +#define WIDTH_MAX_VALUE 100 +#define WIDTH_MIN_VALUE 1 + +// Variables locales +static bool s_Print_Frame_Ref = true; +static int s_PlotBlackAndWhite = 0; + + +/*! + * DIALOG_SVG_PRINT functions + */ +DIALOG_SVG_PRINT::DIALOG_SVG_PRINT( EDA_DRAW_FRAME* parent ) : + DIALOG_SVG_PRINT_base( parent ) +{ + m_Parent = parent; + m_Config = wxGetApp().GetSettings(); +} + + +void DIALOG_SVG_PRINT::OnInitDialog( wxInitDialogEvent& event ) +{ + SetFocus(); // Make ESC key working + + if( m_Config ) + { + m_Config->Read( PLOTSVGMODECOLOR_KEY, &s_PlotBlackAndWhite ); + } + + m_ModeColorOption->SetSelection( s_PlotBlackAndWhite ); + + AddUnitSymbol( *m_TextPenWidth, g_UserUnit ); + m_DialogPenWidth->SetValue( + ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness ) ); + m_Print_Sheet_Ref->SetValue( s_Print_Frame_Ref ); + + if( GetSizer() ) + { + GetSizer()->SetSizeHints( this ); + } +} + + +void DIALOG_SVG_PRINT::SetPenWidth() +{ + g_DrawDefaultLineThickness = ReturnValueFromTextCtrl( *m_DialogPenWidth ); + + if( g_DrawDefaultLineThickness > WIDTH_MAX_VALUE ) + { + g_DrawDefaultLineThickness = WIDTH_MAX_VALUE; + } + + if( g_DrawDefaultLineThickness < WIDTH_MIN_VALUE ) + { + g_DrawDefaultLineThickness = WIDTH_MIN_VALUE; + } + + m_DialogPenWidth->SetValue( + ReturnStringFromValue( g_UserUnit, g_DrawDefaultLineThickness ) ); +} + + +void DIALOG_SVG_PRINT::PrintSVGDoc( bool aPrintAll, bool aPrint_Sheet_Ref ) +{ + wxString msg; + wxFileName fn; + + SetPenWidth(); + + g_DrawDefaultLineThickness = + ReturnValueFromTextCtrl( *m_DialogPenWidth ); + + SCH_SCREEN* screen = (SCH_SCREEN*) m_Parent->GetScreen(); + + if( aPrintAll && m_Parent->IsType( SCHEMATIC_FRAME ) ) + { + SCH_EDIT_FRAME* schframe = (SCH_EDIT_FRAME*) m_Parent; + SCH_SHEET_PATH* sheetpath; + SCH_SHEET_PATH oldsheetpath = schframe->GetCurrentSheet(); + SCH_SCREEN* schscreen = schframe->GetScreen(); + SCH_SHEET_LIST SheetList( NULL ); + sheetpath = SheetList.GetFirst(); + SCH_SHEET_PATH list; + + for( ; ; ) + { + if( sheetpath == NULL ) + break; + + list.Clear(); + + if( list.BuildSheetPathInfoFromSheetPathValue( sheetpath->Path() ) ) + { + schframe->SetCurrentSheet( list ); + schframe->GetCurrentSheet().UpdateAllScreenReferences(); + schframe->SetSheetNumberAndCount(); + schscreen = schframe->GetCurrentSheet().LastScreen(); + } + else // Should not happen + return; + + sheetpath = SheetList.GetNext(); + + fn = schframe->GetUniqueFilenameForCurrentSheet() + wxT( ".svg" ); + + bool success = DrawSVGPage( m_Parent, fn.GetFullPath(), ( SCH_SCREEN* ) schscreen, + m_ModeColorOption->GetSelection() == 0 ? false : true, + aPrint_Sheet_Ref ); + msg = _( "Create file " ) + fn.GetFullPath(); + if( !success ) + msg += _( " error" ); + msg += wxT( "\n" ); + m_MessagesBox->AppendText( msg ); + } + + schframe->SetCurrentSheet( oldsheetpath ); + schframe->GetCurrentSheet().UpdateAllScreenReferences(); + schframe->SetSheetNumberAndCount(); + } + else + { + fn = m_FileNameCtrl->GetValue(); + + if( !fn.IsOk() ) + fn = screen->GetFileName(); + + fn.SetExt( wxT( "svg" ) ); + fn.MakeAbsolute(); + + bool success = DrawSVGPage( m_Parent, fn.GetFullPath(), ( SCH_SCREEN* ) screen, + m_ModeColorOption->GetSelection() == 0 ? false : true, + aPrint_Sheet_Ref ); + msg = _( "Create file " ) + fn.GetFullPath(); + + if( !success ) + msg += _( " error" ); + + msg += wxT( "\n" ); + m_MessagesBox->AppendText( msg ); + } +} + + +bool DIALOG_SVG_PRINT::DrawSVGPage( EDA_DRAW_FRAME* frame, + const wxString& FullFileName, + SCH_SCREEN* screen, + bool aPrintBlackAndWhite, + bool aPrint_Sheet_Ref ) +{ + int tmpzoom; + wxPoint tmp_startvisu; + wxSize sheetSize; // Sheet size in internal units + wxPoint old_org; + bool success = true; + + tmp_startvisu = screen->m_StartVisu; + tmpzoom = screen->GetZoom(); + old_org = screen->m_DrawOrg; + screen->m_DrawOrg.x = screen->m_DrawOrg.y = 0; + screen->m_StartVisu.x = screen->m_StartVisu.y = 0; + + sheetSize = screen->GetPageSettings().GetSizeIU(); // page size in 1/1000 inch, ie in internal units + + screen->SetScalingFactor( 1.0 ); + EDA_DRAW_PANEL* panel = frame->GetCanvas(); + + LOCALE_IO toggle; + + float dpi = 1000.0; + KicadSVGFileDC dc( FullFileName, sheetSize.x, sheetSize.y, dpi ); + + EDA_RECT tmp = *panel->GetClipBox(); + GRResetPenAndBrush( &dc ); + GRForceBlackPen( aPrintBlackAndWhite ); + + + panel->SetClipBox( EDA_RECT( wxPoint( -0x3FFFFF0, -0x3FFFFF0 ), + wxSize( 0x7FFFFF0, 0x7FFFFF0 ) ) ); + + screen->m_IsPrinting = true; + + if( frame->IsType( SCHEMATIC_FRAME ) ) + screen->Draw( panel, &dc, GR_COPY ); + + if( frame->IsType( LIBEDITOR_FRAME ) ) + ((LIB_EDIT_FRAME*)frame)->RedrawComponent( &dc, + wxPoint(sheetSize.x/2, + sheetSize.y/2) ); + + if( aPrint_Sheet_Ref ) + frame->TraceWorkSheet( &dc, screen, g_DrawDefaultLineThickness, IU_PER_MILS ); + + screen->m_IsPrinting = false; + panel->SetClipBox( tmp ); + + GRForceBlackPen( false ); + + screen->m_StartVisu = tmp_startvisu; + screen->m_DrawOrg = old_org; + screen->SetZoom( tmpzoom ); + + return success; +} + + +void DIALOG_SVG_PRINT::OnButtonPlotAllClick( wxCommandEvent& event ) +{ + PrintSVGDoc( true, m_Print_Sheet_Ref->GetValue() ); +} + + +void DIALOG_SVG_PRINT::OnButtonPlotCurrentClick( wxCommandEvent& event ) +{ + PrintSVGDoc( false, m_Print_Sheet_Ref->GetValue() ); +} + + +void DIALOG_SVG_PRINT::OnButtonCancelClick( wxCommandEvent& event ) +{ + Close(); +} + + +void DIALOG_SVG_PRINT::OnCloseWindow( wxCloseEvent& event ) +{ + if( m_Config ) + { + s_PlotBlackAndWhite = m_ModeColorOption->GetSelection(); + m_Config->Write( PLOTSVGMODECOLOR_KEY, s_PlotBlackAndWhite ); + } + EndModal( 0 ); +} + + +/* called on radiobox color/black and white selection + */ +void DIALOG_SVG_PRINT::OnSetColorModeSelected( wxCommandEvent& event ) +{ + s_PlotBlackAndWhite = m_ModeColorOption->GetSelection(); +} diff --git a/eeschema/dialogs/dialog_print_using_printer.cpp b/eeschema/dialogs/dialog_print_using_printer.cpp index 91f9c80eaa..c9a74cc03d 100644 --- a/eeschema/dialogs/dialog_print_using_printer.cpp +++ b/eeschema/dialogs/dialog_print_using_printer.cpp @@ -378,7 +378,7 @@ void SCH_PRINTOUT::DrawPage( SCH_SCREEN* aScreen ) aScreen->Draw( panel, dc, GR_DEFAULT_DRAWMODE ); if( printReference ) - parent->TraceWorkSheet( dc, aScreen, g_DrawDefaultLineThickness, MILS_TO_IU_SCALING_FACTOR ); + parent->TraceWorkSheet( dc, aScreen, g_DrawDefaultLineThickness, IU_PER_MILS ); g_DrawBgColor = bg_color; aScreen->m_IsPrinting = false; diff --git a/eeschema/eeredraw.cpp b/eeschema/eeredraw.cpp index 62dfba469c..f14b07820a 100644 --- a/eeschema/eeredraw.cpp +++ b/eeschema/eeredraw.cpp @@ -71,7 +71,7 @@ void SCH_EDIT_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) GetScreen()->Draw( m_canvas, DC, GR_DEFAULT_DRAWMODE ); - TraceWorkSheet( DC, GetScreen(), g_DrawDefaultLineThickness, MILS_TO_IU_SCALING_FACTOR ); + TraceWorkSheet( DC, GetScreen(), g_DrawDefaultLineThickness, IU_PER_MILS ); #ifdef USE_WX_OVERLAY if( IsShown() ) diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp index dddbf29ff7..d2a9a35a49 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -863,7 +863,7 @@ void SCH_EDIT_FRAME::SVG_Print( wxCommandEvent& event ) void SCH_EDIT_FRAME::PrintPage( wxDC* aDC, int aPrintMask, bool aPrintMirrorMode, void* aData ) { GetScreen()->Draw( m_canvas, aDC, GR_DEFAULT_DRAWMODE ); - TraceWorkSheet( aDC, GetScreen(), g_DrawDefaultLineThickness, MILS_TO_IU_SCALING_FACTOR ); + TraceWorkSheet( aDC, GetScreen(), g_DrawDefaultLineThickness, IU_PER_MILS ); } diff --git a/gerbview/class_gbr_screen.cpp b/gerbview/class_gbr_screen.cpp index 82dd28314a..f11eac0157 100644 --- a/gerbview/class_gbr_screen.cpp +++ b/gerbview/class_gbr_screen.cpp @@ -17,10 +17,10 @@ #include -#define DMIL_GRID( x ) wxRealPoint( x * DECIMILS_TO_IU_SCALING_FACTOR,\ - x * DECIMILS_TO_IU_SCALING_FACTOR ) -#define MM_GRID( x ) wxRealPoint( x * MM_TO_IU_SCALING_FACTOR,\ - x * MM_TO_IU_SCALING_FACTOR ) +#define DMIL_GRID( x ) wxRealPoint( x * IU_PER_DECIMILS,\ + x * IU_PER_DECIMILS ) +#define MM_GRID( x ) wxRealPoint( x * IU_PER_MM,\ + x * IU_PER_MM ) /** @@ -118,5 +118,5 @@ GBR_SCREEN::~GBR_SCREEN() // virtual function int GBR_SCREEN::MilsToIuScalar() { - return (int)MILS_TO_IU_SCALING_FACTOR; + return (int)IU_PER_MILS; } diff --git a/gerbview/class_gbr_screen.h b/gerbview/class_gbr_screen.h index d903de80bf..d809bc135d 100644 --- a/gerbview/class_gbr_screen.h +++ b/gerbview/class_gbr_screen.h @@ -9,7 +9,7 @@ #include #include -#define ZOOM_FACTOR( x ) ( x * DECIMILS_TO_IU_SCALING_FACTOR ) +#define ZOOM_FACTOR( x ) ( x * IU_PER_DECIMILS ) /* Handle info to display a board */ diff --git a/gerbview/dcode.cpp b/gerbview/dcode.cpp index dd00855ff6..4f3193af41 100644 --- a/gerbview/dcode.cpp +++ b/gerbview/dcode.cpp @@ -175,8 +175,8 @@ int GERBVIEW_FRAME::ReadDCodeDefinitionFile( const wxString& D_Code_FullFileName /* Updating gerber scale: */ - double dcode_scale = MILS_TO_IU_SCALING_FACTOR; // By uniting dCode = mil, - // internal unit = MILS_TO_IU_SCALING_FACTOR + double dcode_scale = IU_PER_MILS; // By uniting dCode = mil, + // internal unit = IU_PER_MILS current_Dcode = 0; if( D_Code_FullFileName.IsEmpty() ) diff --git a/gerbview/draw_gerber_screen.cpp b/gerbview/draw_gerber_screen.cpp index 4f54dc047d..a8b97ba378 100644 --- a/gerbview/draw_gerber_screen.cpp +++ b/gerbview/draw_gerber_screen.cpp @@ -107,7 +107,7 @@ void GERBVIEW_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) if( IsElementVisible( DCODES_VISIBLE ) ) DrawItemsDCodeID( DC, GR_COPY ); - TraceWorkSheet( DC, screen, 0, MILS_TO_IU_SCALING_FACTOR ); + TraceWorkSheet( DC, screen, 0, IU_PER_MILS ); if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); diff --git a/gerbview/excellon_read_drill_file.cpp b/gerbview/excellon_read_drill_file.cpp index ccfada1cf2..19f6064e44 100644 --- a/gerbview/excellon_read_drill_file.cpp +++ b/gerbview/excellon_read_drill_file.cpp @@ -432,7 +432,7 @@ bool EXCELLON_IMAGE::Execute_HEADER_Command( char*& text ) if( dcode == NULL ) break; // conv_scale = scaling factor from inch to Internal Unit - double conv_scale = MILS_TO_IU_SCALING_FACTOR * 1000; + double conv_scale = IU_PER_MILS * 1000; if( m_GerbMetric ) conv_scale /= 25.4; diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp index d6eeb122da..a81ed9a5a0 100644 --- a/gerbview/gerbview_frame.cpp +++ b/gerbview/gerbview_frame.cpp @@ -411,7 +411,7 @@ void GERBVIEW_FRAME::Liste_D_Codes() D_CODE* pt_D_code; wxString Line; wxArrayString list; - double scale = MILS_TO_IU_SCALING_FACTOR * 1000; + double scale = IU_PER_MILS * 1000; int curr_layer = getActiveLayer(); for( int layer = 0; layer < 32; layer++ ) diff --git a/gerbview/rs274_read_XY_and_IJ_coordinates.cpp b/gerbview/rs274_read_XY_and_IJ_coordinates.cpp index bf3b04c33b..85417cbfc7 100644 --- a/gerbview/rs274_read_XY_and_IJ_coordinates.cpp +++ b/gerbview/rs274_read_XY_and_IJ_coordinates.cpp @@ -21,16 +21,16 @@ // for metric gerber units, the imperial to metric conversion is made in read functions static double scale_list[10] = { - 1000.0 * MILS_TO_IU_SCALING_FACTOR, - 100.0 * MILS_TO_IU_SCALING_FACTOR, - 10.0 * MILS_TO_IU_SCALING_FACTOR, - 1.0 * MILS_TO_IU_SCALING_FACTOR, - 0.1 * MILS_TO_IU_SCALING_FACTOR, - 0.01 * MILS_TO_IU_SCALING_FACTOR, - 0.001 * MILS_TO_IU_SCALING_FACTOR, - 0.0001 * MILS_TO_IU_SCALING_FACTOR, - 0.00001 * MILS_TO_IU_SCALING_FACTOR, - 0.000001 * MILS_TO_IU_SCALING_FACTOR + 1000.0 * IU_PER_MILS, + 100.0 * IU_PER_MILS, + 10.0 * IU_PER_MILS, + 1.0 * IU_PER_MILS, + 0.1 * IU_PER_MILS, + 0.01 * IU_PER_MILS, + 0.001 * IU_PER_MILS, + 0.0001 * IU_PER_MILS, + 0.00001 * IU_PER_MILS, + 0.000001 * IU_PER_MILS }; @@ -44,9 +44,9 @@ int scaletoIU( double aCoord, bool isMetric ) int ret; if( isMetric ) - ret = KiROUND( aCoord * MILS_TO_IU_SCALING_FACTOR / 0.00254 ); + ret = KiROUND( aCoord * IU_PER_MILS / 0.00254 ); else - ret = KiROUND( aCoord * MILS_TO_IU_SCALING_FACTOR ); + ret = KiROUND( aCoord * IU_PER_MILS ); return ret; } @@ -94,9 +94,9 @@ wxPoint GERBER_IMAGE::ReadXYCoord( char*& Text ) { // When X or Y values are float numbers, they are given in mm or inches if( m_GerbMetric ) // units are mm - current_coord = KiROUND( atof( line ) * MILS_TO_IU_SCALING_FACTOR / 0.0254 ); + current_coord = KiROUND( atof( line ) * IU_PER_MILS / 0.0254 ); else // units are inches - current_coord = KiROUND( atof( line ) * MILS_TO_IU_SCALING_FACTOR * 1000 ); + current_coord = KiROUND( atof( line ) * IU_PER_MILS * 1000 ); } else { @@ -185,9 +185,9 @@ wxPoint GERBER_IMAGE::ReadIJCoord( char*& Text ) { // When X or Y values are float numbers, they are given in mm or inches if( m_GerbMetric ) // units are mm - current_coord = KiROUND( atof( line ) * MILS_TO_IU_SCALING_FACTOR / 0.0254 ); + current_coord = KiROUND( atof( line ) * IU_PER_MILS / 0.0254 ); else // units are inches - current_coord = KiROUND( atof( line ) * MILS_TO_IU_SCALING_FACTOR * 1000 ); + current_coord = KiROUND( atof( line ) * IU_PER_MILS * 1000 ); } else { diff --git a/gerbview/rs274x.cpp b/gerbview/rs274x.cpp index 3c9140795e..8af947aed7 100644 --- a/gerbview/rs274x.cpp +++ b/gerbview/rs274x.cpp @@ -160,7 +160,7 @@ bool GERBER_IMAGE::ExecuteRS274XCommand( int command, double fcoord; // conv_scale = scaling factor from inch to Internal Unit - double conv_scale = MILS_TO_IU_SCALING_FACTOR * 1000; + double conv_scale = IU_PER_MILS * 1000; if( m_GerbMetric ) conv_scale /= 25.4; @@ -294,7 +294,7 @@ bool GERBER_IMAGE::ExecuteRS274XCommand( int command, m_GerbMetric = false; else if( code == MILLIMETER ) m_GerbMetric = true; - conv_scale = m_GerbMetric ? MILS_TO_IU_SCALING_FACTOR / 25.4 : MILS_TO_IU_SCALING_FACTOR; + conv_scale = m_GerbMetric ? IU_PER_MILS / 25.4 : IU_PER_MILS; break; case OFFSET: // command: OFAnnBnn (nn = float number) = layer Offset diff --git a/include/common.h b/include/common.h index e60cf9a6fc..3323ca7b9b 100644 --- a/include/common.h +++ b/include/common.h @@ -298,8 +298,8 @@ public: // Accessors returning "Internal Units (IU)". IUs are mils in EESCHEMA, // and either deci-mils or nanometers in PCBNew. #if defined(PCBNEW) || defined(EESCHEMA) || defined(GERBVIEW) - int GetWidthIU() const { return MILS_TO_IU_SCALING_FACTOR * GetWidthMils(); } - int GetHeightIU() const { return MILS_TO_IU_SCALING_FACTOR * GetHeightMils(); } + int GetWidthIU() const { return IU_PER_MILS * GetWidthMils(); } + int GetHeightIU() const { return IU_PER_MILS * GetHeightMils(); } const wxSize GetSizeIU() const { return wxSize( GetWidthIU(), GetHeightIU() ); } #endif diff --git a/include/convert_to_biu.h b/include/convert_to_biu.h index 333e5423e6..a4e9d62f19 100644 --- a/include/convert_to_biu.h +++ b/include/convert_to_biu.h @@ -20,26 +20,26 @@ #if defined(PCBNEW) || defined(CVPCB) || defined(GERBVIEW) #if defined( USE_PCBNEW_NANOMETRES ) #if defined(GERBVIEW) - #define MM_TO_IU_SCALING_FACTOR 1e5 // Gerbview uses 10 micrometer. + #define IU_PER_MM 1e5 // Gerbview uses 10 micrometer. #else - #define MM_TO_IU_SCALING_FACTOR 1e6 // Pcbnew uses nanometers. + #define IU_PER_MM 1e6 // Pcbnew uses nanometers. #endif - #define MILS_TO_IU_SCALING_FACTOR ( MM_TO_IU_SCALING_FACTOR * 0.0254 ) - #define DECIMILS_TO_IU_SCALING_FACTOR (MM_TO_IU_SCALING_FACTOR * 0.00254 ) + #define IU_PER_MILS ( IU_PER_MM * 0.0254 ) + #define IU_PER_DECIMILS (IU_PER_MM * 0.00254 ) #else // Pcbnew in deci-mils. - #define DECIMILS_TO_IU_SCALING_FACTOR 1 - #define MILS_TO_IU_SCALING_FACTOR 10.0 - #define MM_TO_IU_SCALING_FACTOR (1e4 / 25.4) + #define IU_PER_DECIMILS 1 + #define IU_PER_MILS 10.0 + #define IU_PER_MM (1e4 / 25.4) #endif /// Convert mils to PCBNEW internal units (iu). inline int Mils2iu( int mils ) { #if defined( USE_PCBNEW_NANOMETRES ) - double x = mils * MILS_TO_IU_SCALING_FACTOR; + double x = mils * IU_PER_MILS; return int( x < 0 ? x - 0.5 : x + 0.5 ); #else - return mils * MILS_TO_IU_SCALING_FACTOR; + return mils * IU_PER_MILS; #endif } @@ -47,7 +47,7 @@ inline int Mils2iu( int mils ) inline int DMils2iu( int dmils ) { #if defined( USE_PCBNEW_NANOMETRES ) - double x = dmils * DECIMILS_TO_IU_SCALING_FACTOR; + double x = dmils * IU_PER_DECIMILS; return int( x < 0 ? x - 0.5 : x + 0.5 ); #else return dmils; @@ -55,8 +55,8 @@ inline int DMils2iu( int dmils ) } #else // Eeschema and anything else. -#define MILS_TO_IU_SCALING_FACTOR 1.0 -#define MM_TO_IU_SCALING_FACTOR (MILS_TO_IU_SCALING_FACTOR / 0.0254) +#define IU_PER_MILS 1.0 +#define IU_PER_MM (IU_PER_MILS / 0.0254) inline int Mils2iu( int mils ) { diff --git a/pcbnew/classpcb.cpp b/pcbnew/classpcb.cpp index 13a621bfde..b873e36be2 100644 --- a/pcbnew/classpcb.cpp +++ b/pcbnew/classpcb.cpp @@ -19,11 +19,11 @@ #include -#define ZOOM_FACTOR( x ) ( x * DECIMILS_TO_IU_SCALING_FACTOR ) -#define DMIL_GRID( x ) wxRealPoint( x * DECIMILS_TO_IU_SCALING_FACTOR,\ - x * DECIMILS_TO_IU_SCALING_FACTOR ) -#define MM_GRID( x ) wxRealPoint( x * MM_TO_IU_SCALING_FACTOR,\ - x * MM_TO_IU_SCALING_FACTOR ) +#define ZOOM_FACTOR( x ) ( x * IU_PER_DECIMILS ) +#define DMIL_GRID( x ) wxRealPoint( x * IU_PER_DECIMILS,\ + x * IU_PER_DECIMILS ) +#define MM_GRID( x ) wxRealPoint( x * IU_PER_MM,\ + x * IU_PER_MM ) /** @@ -133,7 +133,7 @@ PCB_SCREEN::~PCB_SCREEN() int PCB_SCREEN::MilsToIuScalar() { - return (int)MILS_TO_IU_SCALING_FACTOR; + return (int)IU_PER_MILS; } diff --git a/pcbnew/dialogs/dialog_SVG_print.cpp b/pcbnew/dialogs/dialog_SVG_print.cpp index 9f3b3e946b..08ddb1219a 100644 --- a/pcbnew/dialogs/dialog_SVG_print.cpp +++ b/pcbnew/dialogs/dialog_SVG_print.cpp @@ -271,7 +271,7 @@ bool DIALOG_SVG_PRINT::DrawPage( const wxString& FullFileName, g_DrawBgColor = WHITE; if( aPrint_Frame_Ref ) - m_Parent->TraceWorkSheet( &dc, screen, s_Parameters.m_PenDefaultSize, MILS_TO_IU_SCALING_FACTOR ); + m_Parent->TraceWorkSheet( &dc, screen, s_Parameters.m_PenDefaultSize, IU_PER_MILS ); m_Parent->PrintPage( &dc, m_PrintMaskLayer, false, &s_Parameters); g_DrawBgColor = bg_color; diff --git a/pcbnew/legacy_plugin.cpp b/pcbnew/legacy_plugin.cpp index 2894ece448..d6598acae1 100644 --- a/pcbnew/legacy_plugin.cpp +++ b/pcbnew/legacy_plugin.cpp @@ -2682,7 +2682,7 @@ void LEGACY_PLUGIN::init( PROPERTIES* aProperties ) // conversion factor for saving RAM BIUs to KICAD legacy file format. #if defined( USE_PCBNEW_NANOMETRES ) - biuToDisk = 1/MM_TO_IU_SCALING_FACTOR; // BIUs are nanometers & file is mm + biuToDisk = 1/MM_PER_IU; // BIUs are nanometers & file is mm #else biuToDisk = 1.0; // BIUs are deci-mils #endif @@ -2694,7 +2694,7 @@ void LEGACY_PLUGIN::init( PROPERTIES* aProperties ) // then, during the file loading process, to start a conversion from // mm to nanometers. - diskToBiu = DECIMILS_TO_IU_SCALING_FACTOR; // BIUs are nanometers if USE_PCBNEW_NANOMETRES + diskToBiu = IU_PER_DECIMILS; // BIUs are nanometers if USE_PCBNEW_NANOMETRES // or BIUs are deci-mils } diff --git a/pcbnew/printout_controler.cpp b/pcbnew/printout_controler.cpp index a098593ddd..2a75bcd012 100644 --- a/pcbnew/printout_controler.cpp +++ b/pcbnew/printout_controler.cpp @@ -1,7 +1,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com + * Copyright (C) 2009 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or @@ -181,7 +181,7 @@ void BOARD_PRINTOUT_CONTROLER::DrawPage() if( userscale == 0 ) // fit in page { // Margin = 10mm - int extra_margin = int( 10 * MM_TO_IU_SCALING_FACTOR ); // deci-mils + int extra_margin = int( 10 * IU_PER_MM ); // deci-mils pageSizeIU.x = bbbox.GetWidth() + extra_margin * 2; pageSizeIU.y = bbbox.GetHeight() + extra_margin * 2; @@ -212,8 +212,8 @@ void BOARD_PRINTOUT_CONTROLER::DrawPage() MapScreenSizeToPaper(); int w, h; GetPPIPrinter( &w, &h ); - double accurate_Xscale = ( (double) ( DrawZoom * w ) ) / (double) PCB_INTERNAL_UNIT; - double accurate_Yscale = ( (double) ( DrawZoom * h ) ) / (double) PCB_INTERNAL_UNIT; + double accurate_Xscale = ( (double) ( DrawZoom * w ) ) / (IU_PER_MILS*1000); + double accurate_Yscale = ( (double) ( DrawZoom * h ) ) / (IU_PER_MILS*1000); if( IsPreview() ) // Scale must take in account the DC size in Preview { @@ -275,7 +275,7 @@ void BOARD_PRINTOUT_CONTROLER::DrawPage() if( m_PrintParams.m_Print_Sheet_Ref ) m_Parent->TraceWorkSheet( dc, screen, m_PrintParams.m_PenDefaultSize, - MILS_TO_IU_SCALING_FACTOR ); + IU_PER_MILS ); if( printMirror ) { @@ -317,7 +317,7 @@ void BOARD_PRINTOUT_CONTROLER::DrawPage() /* when printing in color mode, we use the graphic OR mode that gives the same look as the screen * But because the background is white when printing, we must use a trick: * In order to plot on a white background in OR mode we must: - * 1 - Plot all items in black, this creates a local black backgroud + * 1 - Plot all items in black, this creates a local black background * 2 - Plot in OR mode on black "local" background */ if( !m_PrintParams.m_Print_Black_and_White ) diff --git a/pcbnew/specctra_export.cpp b/pcbnew/specctra_export.cpp index 02169a65b1..656fea3c7c 100644 --- a/pcbnew/specctra_export.cpp +++ b/pcbnew/specctra_export.cpp @@ -99,7 +99,7 @@ void PCB_EDIT_FRAME::ExportToSpecctra( wxCommandEvent& event ) wxString errorText; BASE_SCREEN* screen = GetScreen(); - bool wasModified = screen->IsModify() && !screen->IsSave(); + bool wasModified = screen->IsModify(); db.SetPCB( SPECCTRA_DB::MakePCB() ); @@ -171,10 +171,10 @@ static inline double scale( int kicadDist ) #if defined(USE_PCBNEW_NANOMETRES) // nanometers to um - return kicadDist / ( MM_TO_IU_SCALING_FACTOR / 1000.0 ); + return kicadDist / ( IU_PER_MM / 1000.0 ); // nanometers to mils - // return kicadDist/MILS_TO_IU_SCALING_FACTOR; + // return kicadDist/IU_PER_MILS; #else // deci-mils to mils. @@ -185,7 +185,7 @@ static inline double scale( int kicadDist ) /// Convert integer internal units to float um static inline double IU2um( int kicadDist ) { - return kicadDist * (1000.0 / MM_TO_IU_SCALING_FACTOR); + return kicadDist * (1000.0 / IU_PER_MM); } diff --git a/pcbnew/tracepcb.cpp b/pcbnew/tracepcb.cpp index 7858d08356..f1c26eb47f 100644 --- a/pcbnew/tracepcb.cpp +++ b/pcbnew/tracepcb.cpp @@ -67,7 +67,7 @@ void FOOTPRINT_EDIT_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) GRSetDrawMode( DC, GR_COPY ); m_canvas->DrawBackGround( DC ); - TraceWorkSheet( DC, screen, 0, MILS_TO_IU_SCALING_FACTOR ); + TraceWorkSheet( DC, screen, 0, IU_PER_MILS ); // Redraw the footprints for( MODULE* module = GetBoard()->m_Modules; module; module = module->Next() ) @@ -105,7 +105,7 @@ void PCB_EDIT_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) m_canvas->DrawBackGround( DC ); - TraceWorkSheet( DC, GetScreen(), g_DrawDefaultLineThickness, MILS_TO_IU_SCALING_FACTOR ); + TraceWorkSheet( DC, GetScreen(), g_DrawDefaultLineThickness, IU_PER_MILS ); GetBoard()->Draw( m_canvas, DC, GR_OR | GR_ALLOW_HIGHCONTRAST);