Gerbview: remove fully outdated code (about reading DCode files) and fix erroneous comments.
This commit is contained in:
parent
ccbc4882fd
commit
820153c7d4
|
@ -154,134 +154,6 @@ int D_CODE::GetShapeDim( GERBER_DRAW_ITEM* aParent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int GERBVIEW_FRAME::ReadDCodeDefinitionFile( const wxString& D_Code_FullFileName )
|
|
||||||
{
|
|
||||||
int current_Dcode, ii;
|
|
||||||
char* ptcar;
|
|
||||||
int dimH, dimV, drill, dummy;
|
|
||||||
float fdimH, fdimV, fdrill;
|
|
||||||
char c_type_outil[256];
|
|
||||||
char line[GERBER_BUFZ];
|
|
||||||
wxString msg;
|
|
||||||
D_CODE* dcode;
|
|
||||||
FILE* dest;
|
|
||||||
LAYER_NUM layer = getActiveLayer();
|
|
||||||
int type_outil;
|
|
||||||
|
|
||||||
if( g_GERBER_List[layer] == NULL )
|
|
||||||
g_GERBER_List[layer] = new GERBER_IMAGE( this, layer );
|
|
||||||
|
|
||||||
GERBER_IMAGE* gerber = g_GERBER_List[layer];
|
|
||||||
|
|
||||||
|
|
||||||
/* Updating gerber scale: */
|
|
||||||
double dcode_scale = IU_PER_MILS; // By uniting dCode = mil,
|
|
||||||
// internal unit = IU_PER_MILS
|
|
||||||
current_Dcode = 0;
|
|
||||||
|
|
||||||
if( D_Code_FullFileName.IsEmpty() )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
dest = wxFopen( D_Code_FullFileName, wxT( "rt" ) );
|
|
||||||
if( dest == 0 )
|
|
||||||
{
|
|
||||||
msg.Printf( _( "File <%s> not found" ), GetChars( D_Code_FullFileName ) );
|
|
||||||
DisplayError( this, msg, 10 );
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
gerber->InitToolTable();
|
|
||||||
|
|
||||||
while( fgets( line, sizeof(line) - 1, dest ) != NULL )
|
|
||||||
{
|
|
||||||
if( *line == ';' )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( strlen( line ) < 10 )
|
|
||||||
continue; /* Skip blank line. */
|
|
||||||
|
|
||||||
dcode = NULL;
|
|
||||||
current_Dcode = 0;
|
|
||||||
|
|
||||||
/* Determine of the type of file from D_Code. */
|
|
||||||
ptcar = line;
|
|
||||||
ii = 0;
|
|
||||||
|
|
||||||
while( *ptcar )
|
|
||||||
if( *(ptcar++) == ',' )
|
|
||||||
ii++;
|
|
||||||
|
|
||||||
if( ii >= 6 ) /* value in mils */
|
|
||||||
{
|
|
||||||
sscanf( line, "%d,%d,%d,%d,%d,%d,%d", &ii,
|
|
||||||
&dimH, &dimV, &drill, &dummy, &dummy, &type_outil );
|
|
||||||
|
|
||||||
dimH = KiROUND( dimH * dcode_scale );
|
|
||||||
dimV = KiROUND( dimV * dcode_scale );
|
|
||||||
drill = KiROUND( drill * dcode_scale );
|
|
||||||
|
|
||||||
if( ii < 1 )
|
|
||||||
ii = 1;
|
|
||||||
|
|
||||||
current_Dcode = ii - 1 + FIRST_DCODE;
|
|
||||||
}
|
|
||||||
else /* Values in inches are converted to mils. */
|
|
||||||
{
|
|
||||||
fdrill = 0;
|
|
||||||
current_Dcode = 0;
|
|
||||||
|
|
||||||
sscanf( line, "%f,%f,%1s", &fdimV, &fdimH, c_type_outil );
|
|
||||||
ptcar = line;
|
|
||||||
|
|
||||||
while( *ptcar )
|
|
||||||
{
|
|
||||||
if( *ptcar == 'D' )
|
|
||||||
{
|
|
||||||
sscanf( ptcar + 1, "%d,%f", ¤t_Dcode, &fdrill );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ptcar++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dimH = KiROUND( fdimH * dcode_scale * 1000 );
|
|
||||||
dimV = KiROUND( fdimV * dcode_scale * 1000 );
|
|
||||||
drill = KiROUND( fdrill * dcode_scale * 1000 );
|
|
||||||
|
|
||||||
if( strchr( "CLROP", c_type_outil[0] ) )
|
|
||||||
{
|
|
||||||
type_outil = (APERTURE_T) c_type_outil[0];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fclose( dest );
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Update the list of d_codes if consistent. */
|
|
||||||
if( current_Dcode < FIRST_DCODE )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if( current_Dcode >= TOOLS_MAX_COUNT )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
dcode = gerber->GetDCODE( current_Dcode );
|
|
||||||
dcode->m_Size.x = dimH;
|
|
||||||
dcode->m_Size.y = dimV;
|
|
||||||
dcode->m_Shape = (APERTURE_T) type_outil;
|
|
||||||
dcode->m_Drill.x = dcode->m_Drill.y = drill;
|
|
||||||
dcode->m_Defined = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose( dest );
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void GERBVIEW_FRAME::CopyDCodesSizeToItems()
|
void GERBVIEW_FRAME::CopyDCodesSizeToItems()
|
||||||
{
|
{
|
||||||
static D_CODE dummy( 999 ); //Used if D_CODE not found in list
|
static D_CODE dummy( 999 ); //Used if D_CODE not found in list
|
||||||
|
|
|
@ -29,7 +29,6 @@ BEGIN_EVENT_TABLE( GERBVIEW_FRAME, EDA_DRAW_FRAME )
|
||||||
EVT_TOOL( wxID_FILE, GERBVIEW_FRAME::Files_io )
|
EVT_TOOL( wxID_FILE, GERBVIEW_FRAME::Files_io )
|
||||||
EVT_TOOL( ID_GERBVIEW_ERASE_ALL, GERBVIEW_FRAME::Files_io )
|
EVT_TOOL( ID_GERBVIEW_ERASE_ALL, GERBVIEW_FRAME::Files_io )
|
||||||
EVT_TOOL( ID_GERBVIEW_LOAD_DRILL_FILE, GERBVIEW_FRAME::Files_io )
|
EVT_TOOL( ID_GERBVIEW_LOAD_DRILL_FILE, GERBVIEW_FRAME::Files_io )
|
||||||
EVT_TOOL( ID_GERBVIEW_LOAD_DCODE_FILE, GERBVIEW_FRAME::Files_io )
|
|
||||||
EVT_TOOL( ID_NEW_BOARD, GERBVIEW_FRAME::Files_io )
|
EVT_TOOL( ID_NEW_BOARD, GERBVIEW_FRAME::Files_io )
|
||||||
EVT_TOOL( ID_GERBVIEW_SET_PAGE_BORDER, GERBVIEW_FRAME::Process_Special_Functions )
|
EVT_TOOL( ID_GERBVIEW_SET_PAGE_BORDER, GERBVIEW_FRAME::Process_Special_Functions )
|
||||||
|
|
||||||
|
|
|
@ -90,11 +90,6 @@ void GERBVIEW_FRAME::Files_io( wxCommandEvent& event )
|
||||||
m_canvas->Refresh();
|
m_canvas->Refresh();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_GERBVIEW_LOAD_DCODE_FILE:
|
|
||||||
LoadDCodeFile( wxEmptyString );
|
|
||||||
m_canvas->Refresh();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
wxFAIL_MSG( wxT( "File_io: unexpected command id" ) );
|
wxFAIL_MSG( wxT( "File_io: unexpected command id" ) );
|
||||||
break;
|
break;
|
||||||
|
@ -290,29 +285,3 @@ bool GERBVIEW_FRAME::LoadExcellonFiles( const wxString& aFullFileName )
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool GERBVIEW_FRAME::LoadDCodeFile( const wxString& aFullFileName )
|
|
||||||
{
|
|
||||||
wxString wildcard;
|
|
||||||
wxFileName fn = aFullFileName;
|
|
||||||
|
|
||||||
if( !fn.IsOk() )
|
|
||||||
{
|
|
||||||
wildcard = _( "Gerber DCODE files" );
|
|
||||||
wildcard += wxT(" ") + AllFilesWildcard;
|
|
||||||
fn = m_lastFileName;
|
|
||||||
wxFileDialog dlg( this, _( "Load GERBER DCODE File" ),
|
|
||||||
fn.GetPath(), fn.GetFullName(), wildcard,
|
|
||||||
wxFD_OPEN | wxFD_FILE_MUST_EXIST );
|
|
||||||
|
|
||||||
if( dlg.ShowModal() == wxID_CANCEL )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
fn = dlg.GetPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
ReadDCodeDefinitionFile( fn.GetFullPath() );
|
|
||||||
CopyDCodesSizeToItems();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
|
@ -26,12 +26,11 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <fctsys.h>
|
#include <fctsys.h>
|
||||||
#include <appl_wxstruct.h>
|
#include <appl_wxstruct.h>
|
||||||
#include <class_drawpanel.h>
|
#include <class_drawpanel.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <gestfich.h>
|
#include <gestfich.h>
|
||||||
//#include <gr_basic.h>
|
|
||||||
|
|
||||||
#include <gerbview.h>
|
#include <gerbview.h>
|
||||||
#include <gerbview_id.h>
|
#include <gerbview_id.h>
|
||||||
|
|
|
@ -379,14 +379,14 @@ public:
|
||||||
/**
|
/**
|
||||||
* Function ReFillLayerWidget
|
* Function ReFillLayerWidget
|
||||||
* changes out all the layers in m_Layers and may be called upon
|
* changes out all the layers in m_Layers and may be called upon
|
||||||
* loading a new BOARD.
|
* loading new gerber files.
|
||||||
*/
|
*/
|
||||||
void ReFillLayerWidget();
|
void ReFillLayerWidget();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function setActiveLayer
|
* Function setActiveLayer
|
||||||
* will change the currently active layer to \a aLayer and also
|
* will change the currently active layer to \a aLayer and also
|
||||||
* update the PCB_LAYER_WIDGET.
|
* update the GERBER_LAYER_WIDGET.
|
||||||
*/
|
*/
|
||||||
void setActiveLayer( LAYER_NUM aLayer, bool doLayerWidgetUpdate = true );
|
void setActiveLayer( LAYER_NUM aLayer, bool doLayerWidgetUpdate = true );
|
||||||
|
|
||||||
|
@ -412,7 +412,7 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function syncLayerWidget
|
* Function syncLayerWidget
|
||||||
* updates the currently "selected" layer within the PCB_LAYER_WIDGET.
|
* updates the currently "selected" layer within the GERBER_LAYER_WIDGET.
|
||||||
* The currently active layer is defined by the return value of getActiveLayer().
|
* The currently active layer is defined by the return value of getActiveLayer().
|
||||||
* <p>
|
* <p>
|
||||||
* This function cannot be inline without including layer_widget.h in
|
* This function cannot be inline without including layer_widget.h in
|
||||||
|
@ -453,10 +453,11 @@ public:
|
||||||
/**
|
/**
|
||||||
* Load applications settings specific to the Pcbnew.
|
* Load applications settings specific to the Pcbnew.
|
||||||
*
|
*
|
||||||
* This overrides the base class PCB_BASE_FRAME::LoadSettings() to
|
* This overrides the base class EDA_DRAW_FRAME::LoadSettings() to
|
||||||
* handle settings specific common to the PCB layout application. It
|
* handle settings specific common to the PCB layout application. It
|
||||||
* calls down to the base class to load settings common to all PCB type
|
* calls down to the base class to load settings common to all
|
||||||
* drawing frames. Please put your application settings for Pcbnew here
|
* EDA_DRAW_FRAME type drawing frames.
|
||||||
|
* Please put your application settings for Pcbnew here
|
||||||
* to avoid having application settings loaded all over the place.
|
* to avoid having application settings loaded all over the place.
|
||||||
*/
|
*/
|
||||||
virtual void LoadSettings();
|
virtual void LoadSettings();
|
||||||
|
@ -464,10 +465,10 @@ public:
|
||||||
/**
|
/**
|
||||||
* Save applications settings common to PCB draw frame objects.
|
* Save applications settings common to PCB draw frame objects.
|
||||||
*
|
*
|
||||||
* This overrides the base class PCB_BASE_FRAME::SaveSettings() to
|
* This overrides the base class EDA_DRAW_FRAME::SaveSettings() to
|
||||||
* save settings specific to the PCB layout application main window. It
|
* save settings specific to the gerbview application main window. It
|
||||||
* calls down to the base class to save settings common to all PCB type
|
* calls down to the base class to save settings common to all
|
||||||
* drawing frames. Please put your application settings for Pcbnew here
|
* drawing frames. Please put your application settings for Gerbview here
|
||||||
* to avoid having application settings saved all over the place.
|
* to avoid having application settings saved all over the place.
|
||||||
*/
|
*/
|
||||||
virtual void SaveSettings();
|
virtual void SaveSettings();
|
||||||
|
@ -638,42 +639,6 @@ public:
|
||||||
|
|
||||||
void GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey = 0 );
|
void GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey = 0 );
|
||||||
|
|
||||||
/**
|
|
||||||
* Read a DCode file (not used with RX274X files , just with RS274D old files).
|
|
||||||
* Note: there is no standard for DCode file.
|
|
||||||
* Just read a file format created by early versions of Pcbnew.
|
|
||||||
* @return false if file not read (cancellation)
|
|
||||||
* true if OK
|
|
||||||
* @ aparm aFullFileName = name of file to load.
|
|
||||||
* if empty, or if the file does not exist, a file dialog is opened
|
|
||||||
*/
|
|
||||||
bool LoadDCodeFile( const wxString& aFullFileName );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function ReadDCodeDefinitionFile
|
|
||||||
* reads in a dcode file assuming ALSPCB file format with ';' indicating
|
|
||||||
* comments.
|
|
||||||
* <p>
|
|
||||||
* Format is like CSV but with optional ';' delineated comments:<br>
|
|
||||||
* tool, Horiz, Vert, drill, vitesse, acc. ,Type ; [DCODE (commentaire)]<br>
|
|
||||||
* ex: 1, 12, 12, 0, 0, 0, 3 ; D10
|
|
||||||
* <p>
|
|
||||||
* Format:<br>
|
|
||||||
* Ver, Hor, Type, Tool [,Drill]<br>
|
|
||||||
* example: 0.012, 0.012, L , D10<br>
|
|
||||||
*
|
|
||||||
* Load all found dcodes into a table of D_CODE instantiations.
|
|
||||||
* @param D_Code_FullFileName The name of the file to read from.
|
|
||||||
* @return int - <br>
|
|
||||||
* -1 = file not found<br>
|
|
||||||
* -2 = parsing problem<br>
|
|
||||||
* 0 = the \a D_Code_FullFileName is empty, no reading
|
|
||||||
* is done but an empty GERBER is put into
|
|
||||||
* g_GERBER_List[]<br>
|
|
||||||
* 1 = read OK<br>
|
|
||||||
*/
|
|
||||||
int ReadDCodeDefinitionFile( const wxString& D_Code_FullFileName );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Size Items (Lines, Flashes) from DCodes List
|
* Set Size Items (Lines, Flashes) from DCodes List
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -17,7 +17,6 @@ enum gerbview_ids
|
||||||
|
|
||||||
ID_GERBVIEW_SHOW_LIST_DCODES,
|
ID_GERBVIEW_SHOW_LIST_DCODES,
|
||||||
ID_GERBVIEW_LOAD_DRILL_FILE,
|
ID_GERBVIEW_LOAD_DRILL_FILE,
|
||||||
ID_GERBVIEW_LOAD_DCODE_FILE,
|
|
||||||
ID_GERBVIEW_ERASE_ALL,
|
ID_GERBVIEW_ERASE_ALL,
|
||||||
ID_TOOLBARH_GERBER_SELECT_ACTIVE_DCODE,
|
ID_TOOLBARH_GERBER_SELECT_ACTIVE_DCODE,
|
||||||
ID_GERBVIEW_SHOW_SOURCE,
|
ID_GERBVIEW_SHOW_SOURCE,
|
||||||
|
|
|
@ -71,12 +71,6 @@ void GERBVIEW_FRAME::ReCreateMenuBar( void )
|
||||||
_( "Load excellon drill file" ),
|
_( "Load excellon drill file" ),
|
||||||
KiBitmap( gerbview_drill_file_xpm ) );
|
KiBitmap( gerbview_drill_file_xpm ) );
|
||||||
|
|
||||||
// Dcodes
|
|
||||||
AddMenuItem( fileMenu, ID_GERBVIEW_LOAD_DCODE_FILE,
|
|
||||||
_( "Load &DCodes" ),
|
|
||||||
_( "Load D-Codes definition file" ),
|
|
||||||
KiBitmap( gerber_open_dcode_file_xpm ) );
|
|
||||||
|
|
||||||
// Recent gerber files
|
// Recent gerber files
|
||||||
static wxMenu* openRecentGbrMenu;
|
static wxMenu* openRecentGbrMenu;
|
||||||
|
|
||||||
|
|
|
@ -162,13 +162,15 @@ bool GERBVIEW_FRAME::Read_GERBER_File( const wxString& GERBER_FullFileName,
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Init DCodes list and perhaps read a DCODES file,
|
/* if the gerber file is only a RS274D file
|
||||||
* if the gerber file is only a RS274D file
|
* (i.e. without any aperture information), wran the user:
|
||||||
* (i.e. without any aperture information)
|
|
||||||
*/
|
*/
|
||||||
if( !gerber->m_Has_DCode )
|
if( !gerber->m_Has_DCode )
|
||||||
{
|
{
|
||||||
return LoadDCodeFile( D_Code_FullFileName );
|
msg = _("Warning: this file has no D-Code definition\n"
|
||||||
|
"It is perhaps an old RS274D file\n"
|
||||||
|
"Therefore the size of items is undefined");
|
||||||
|
wxMessageBox( msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue