/**
 * @file plotdxf.cpp
 * @brief Plot DXF.
 */

#include <fctsys.h>
#include <common.h>
#include <plot_common.h>
#include <confirm.h>
#include <trigo.h>
#include <wxBasePcbFrame.h>

#include <pcbnew.h>
#include <protos.h>
#include <pcbplot.h>


bool PCB_BASE_FRAME::ExportToDxfFile( const wxString& aFullFileName, int aLayer,
                                      EDA_DRAW_MODE_T aTraceMode )
{
    LOCALE_IO   toggle;

    const PCB_PLOT_PARAMS& plot_opts = GetPlotSettings();

    FILE* output_file = wxFopen( aFullFileName, wxT( "wt" ) );

    if( output_file == NULL )
    {
        return false;
    }

    DXF_PLOTTER* plotter = new DXF_PLOTTER();
    plotter->SetPageSettings( GetPageSettings() );
    plotter->SetViewport( wxPoint( 0, 0 ), IU_PER_DECIMILS, 1, 0 );
    plotter->SetCreator( wxT( "PCBNEW-DXF" ) );
    plotter->SetFilename( aFullFileName );
    plotter->StartPlot( output_file );

    if( plot_opts.m_PlotFrameRef )
        PlotWorkSheet( plotter, GetScreen(), plot_opts.GetPlotLineWidth() );

    Plot_Layer( plotter, aLayer, aTraceMode );
    plotter->EndPlot();
    delete plotter;
    return true;
}