// Actual SVG file export function. bool DIALOG_SVG_PRINT::CreateSVGFile( const wxString& aFullFileName ) { PCB_PLOT_PARAMS m_plotOpts; m_plotOpts.SetPlotFrameRef( PrintPageRef() ); // Adding drill marks, for copper layers if( (m_printMaskLayer & ALL_CU_LAYERS) ) m_plotOpts.SetDrillMarksType( PCB_PLOT_PARAMS::FULL_DRILL_SHAPE ); else m_plotOpts.SetDrillMarksType( PCB_PLOT_PARAMS::NO_DRILL_SHAPE ); m_plotOpts.SetSkipPlotNPTH_Pads( false ); m_plotOpts.SetMirror( m_printMirror ); m_plotOpts.SetFormat( PLOT_FORMAT_SVG ); EDA_COLOR_T color = UNSPECIFIED_COLOR; // Used layer color to plot ref and value m_plotOpts.SetReferenceColor( color ); m_plotOpts.SetValueColor( color ); PAGE_INFO pageInfo = m_board->GetPageSettings(); wxPoint axisorigin = m_board->GetAuxOrigin(); if( PageIsBoardBoundarySize() ) { EDA_RECT bbox = m_board->ComputeBoundingBox(); PAGE_INFO currpageInfo = m_board->GetPageSettings(); currpageInfo.SetWidthMils( bbox.GetWidth() / IU_PER_MILS ); currpageInfo.SetHeightMils( bbox.GetHeight() / IU_PER_MILS ); m_board->SetPageSettings( currpageInfo ); m_plotOpts.SetUseAuxOrigin( true ); wxPoint origin = bbox.GetOrigin(); m_board->SetAuxOrigin( origin ); } LOCALE_IO toggle; SVG_PLOTTER* plotter = (SVG_PLOTTER*) StartPlotBoard( m_board, &m_plotOpts, aFullFileName, wxEmptyString ); if( plotter ) { plotter->SetColorMode( m_ModeColorOption->GetSelection() == 0 ); PlotStandardLayer( m_board, plotter, m_printMaskLayer, m_plotOpts ); plotter->EndPlot(); } delete plotter; m_board->SetAuxOrigin( axisorigin ); m_board->SetPageSettings( pageInfo ); return true; }
bool DIALOG_PLOT_SCHEMATIC::plotOneSheetSVG( EDA_DRAW_FRAME* aFrame, const wxString& aFileName, SCH_SCREEN* aScreen, bool aPlotBlackAndWhite, bool aPlotFrameRef ) { SVG_PLOTTER* plotter = new SVG_PLOTTER(); const PAGE_INFO& pageInfo = aScreen->GetPageSettings(); plotter->SetPageSettings( pageInfo ); plotter->SetDefaultLineWidth( GetDefaultLineThickness() ); plotter->SetColorMode( aPlotBlackAndWhite ? false : true ); wxPoint plot_offset; double scale = 1.0; plotter->SetViewport( plot_offset, IU_PER_DECIMILS, scale, false ); // Init : plotter->SetCreator( wxT( "Eeschema-SVG" ) ); if( ! plotter->OpenFile( aFileName ) ) { delete plotter; return false; } LOCALE_IO toggle; plotter->StartPlot(); if( aPlotFrameRef ) { plotter->SetColor( BLACK ); PlotWorkSheet( plotter, aFrame->GetTitleBlock(), aFrame->GetPageSettings(), aScreen->m_ScreenNumber, aScreen->m_NumberOfScreens, aFrame->GetScreenDesc(), aScreen->GetFileName() ); } aScreen->Plot( plotter ); plotter->EndPlot(); delete plotter; return true; }
void LIB_EDIT_FRAME::SVG_PlotComponent( const wxString& aFullFileName ) { const bool plotBW = false; const PAGE_INFO& pageInfo = GetScreen()->GetPageSettings(); SVG_PLOTTER* plotter = new SVG_PLOTTER(); plotter->SetPageSettings( pageInfo ); plotter->SetDefaultLineWidth( GetDefaultLineThickness() ); plotter->SetColorMode( plotBW ); wxPoint plot_offset; const double scale = 1.0; // Currently, plot units are in decimil plotter->SetViewport( plot_offset, IU_PER_MILS/10, scale, false ); // Init : plotter->SetCreator( wxT( "Eeschema-SVG" ) ); if( ! plotter->OpenFile( aFullFileName ) ) { delete plotter; return; } LOCALE_IO toggle; plotter->StartPlot(); LIB_PART* part = GetCurPart(); if( part ) { TRANSFORM temp; // Uses default transform wxPoint plotPos; plotPos.x = pageInfo.GetWidthIU() /2; plotPos.y = pageInfo.GetHeightIU()/2; part->Plot( plotter, GetUnit(), GetConvert(), plotPos, temp ); // Plot lib fields, not plotted by m_component->Plot(): part->PlotLibFields( plotter, GetUnit(), GetConvert(), plotPos, temp ); } plotter->EndPlot(); delete plotter; }