minor changes

This commit is contained in:
charras 2008-03-12 11:49:16 +00:00
parent bfc705ed20
commit 157298ba5b
4 changed files with 56 additions and 22 deletions

View File

@ -198,16 +198,16 @@ bool MODULE::Read_GPCB_Descr( const wxString& CmpFullFileName )
iprmcnt++;
m_Doc = params[iprmcnt];
// Read pcb-name (unused )
// Read pcb-name (reference )
iprmcnt++;
m_Reference->m_Text = params[iprmcnt];
// Read value
iprmcnt++;
m_Value->m_Text = params[iprmcnt];
iprmcnt++;
// Read other infos
iprmcnt++;
for( int ii = 0; ii < 6; ii++ )
{
if( iprmcnt < icnt_max )

View File

@ -24,7 +24,7 @@
#define OLD_EXT wxT( ".bak" )
#define FILETMP_EXT wxT( ".$$$" )
#define EXPORT_IMPORT_LASTPATH_KEY wxT("import_last_path")
/* Fonctions locales */
static bool CreateDocLibrary( const wxString& LibName );
@ -33,9 +33,15 @@ static bool CreateDocLibrary( const wxString& LibName );
MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC )
/*********************************************************/
/*
* Importation de modules Hors librairie
* Lit 1 fichier type Empreinte et place le module sur PCB
/**
* Function Import_Module
* Read a file containing only one footprint.
* Used to import (after exporting) a footprint
* Exported files have the standart ext .emp
* This is the same format as .mod files but restricted to only one footprint
* The import function can also read gpcb footprint file, in Newlib format
* (One footprint per file, Newlib files have no special ext.)
* @param DC = Current Device Context (can be NULL)
*/
{
int NbLine = 0;
@ -45,10 +51,15 @@ MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC )
MODULE* module = NULL;
bool Footprint_Is_GPCB_Format = false;
wxString mask = wxT("*.*;"); mask += EXT_CMP_MASK;
wxString LastOpenedPathForLoading;
wxConfig* Config = m_Parent->m_EDA_Config;
if( Config )
Config->Read( EXPORT_IMPORT_LASTPATH_KEY, &LastOpenedPathForLoading );
/* Lecture Fichier module */
CmpFullFileName = EDA_FileSelector( _( "Import Module:" ),
wxEmptyString, /* Chemin par defaut */
LastOpenedPathForLoading, /* Chemin par defaut */
wxEmptyString, /* nom fichier par defaut */
wxEmptyString, /* extension par defaut */
mask, /* Masque d'affichage */
@ -67,8 +78,14 @@ MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC )
DisplayError( this, msg );
return NULL;
}
/* Lecture Entete */
if( Config ) // Save file path
{
LastOpenedPathForLoading = wxPathOnly( CmpFullFileName );
Config->Write( EXPORT_IMPORT_LASTPATH_KEY, LastOpenedPathForLoading );
}
/* Read header and test file type */
GetLine( dest, Line, &NbLine );
if( strnicmp( Line, ENTETE_LIBRAIRIE, L_ENTETE_LIB ) != 0 )
{
@ -82,7 +99,7 @@ MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC )
}
}
/* Lecture du fichier: recherche du debut de la descr module */
/* Read file: Search the description starting line (skip lib header)*/
if ( ! Footprint_Is_GPCB_Format )
{
while( GetLine( dest, Line, &NbLine ) != NULL )
@ -105,7 +122,7 @@ MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC )
fclose( dest );
}
/* Mise a jour du chainage */
/* Insert footprint in list*/
if( m_Pcb->m_Modules )
{
m_Pcb->m_Modules->Pback = module;
@ -114,7 +131,7 @@ MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC )
module->Pback = m_Pcb;
m_Pcb->m_Modules = module;
/* Affichage des caracteristiques : */
/* Display info : */
module->Display_Infos( this );
Place_Module( module, DC );
m_Pcb->m_Status_Pcb = 0;
@ -127,15 +144,23 @@ MODULE* WinEDA_ModuleEditFrame::Import_Module( wxDC* DC )
/************************************************************************/
void WinEDA_ModuleEditFrame::Export_Module( MODULE* ptmod, bool createlib )
/************************************************************************/
/*
* Genere 1 fichier type Empreinte a partir de la description du module sur PCB
/**
* Function Export_Module
* Create a file containing only one footprint.
* Used to export a footprint
* Exported files have the standart ext .emp
* This is the same format as .mod files but restricted to only one footprint
* So Create a new lib (which will contains one module) and export a footprint is basically the same thing
* @param DC = Current Device Context (can be NULL)
* @param createlib : true = use default lib path to create lib
* false = use current path or last used path to export footprint
*/
{
wxString FullFileName, Mask( wxT( "*" ) );
char Line[1025];
FILE* dest;
wxString msg, path;
wxConfig* Config = m_Parent->m_EDA_Config;
if( ptmod == NULL )
return;
@ -148,6 +173,9 @@ void WinEDA_ModuleEditFrame::Export_Module( MODULE* ptmod, bool createlib )
if( createlib )
path = g_RealLibDirBuffer;
else if( Config )
Config->Read( EXPORT_IMPORT_LASTPATH_KEY, &path );
FullFileName = EDA_FileSelector( createlib ? _( "Create lib" ) : _( "Export Module:" ),
path, /* Chemin par defaut */
FullFileName, /* nom fichier par defaut */
@ -161,7 +189,7 @@ void WinEDA_ModuleEditFrame::Export_Module( MODULE* ptmod, bool createlib )
if( FullFileName.IsEmpty() )
return;
if( createlib && wxFileExists( FullFileName ) )
if( wxFileExists( FullFileName ) )
{
msg.Printf( _( "File %s exists, OK to replace ?" ),
FullFileName.GetData() );
@ -177,6 +205,12 @@ void WinEDA_ModuleEditFrame::Export_Module( MODULE* ptmod, bool createlib )
return;
}
if( ! createlib && Config ) // Save file path
{
path = wxPathOnly( FullFileName );
Config->Write( EXPORT_IMPORT_LASTPATH_KEY, path );
}
fprintf( dest, "%s %s\n", ENTETE_LIBRAIRIE, DateAndTime( Line ) );
fputs( "$INDEX\n", dest );

View File

@ -454,7 +454,7 @@ int FindLineSegmentIntersection( double a, double b, int xi, int yi, int xf, int
double * x1, double * y1, double * x2, double * y2,
double * dist )
{
double xx, yy;
double xx = 0, yy = 0; //Init made to avoid C compil "uninitialized" warning
bool bVert = false;
if( b > DBL_MAX/10.0 )
bVert = true;
@ -531,7 +531,7 @@ int FindLineSegmentIntersection( double a, double b, int xi, int yi, int xf, int
yyf = yf;
}
// find center and radii of ellipse
double xo, yo, rx, ry;
double xo = xxf, yo = yyi, rx, ry; // Init made to avoid C compil warnings
if( xxf > xxi && yyf > yyi )
{
xo = xxf;
@ -1337,7 +1337,7 @@ int GetClearanceBetweenSegments( int x1i, int y1i, int x1f, int y1f, int style1,
double s_start2 = th1;
double s_end2 = th2;
double dmin = DBL_MAX;
double xmin, ymin, smin, smin2;
double xmin = 0, ymin = 0, smin = 0, smin2 = 0; // Init made to avoid C compil warnings
int nsteps = NSTEPS;
int nsteps2 = NSTEPS;

View File

@ -3,11 +3,11 @@
typedef struct PointTag
{
double X,Y;
} Point;
} PointT;
typedef struct EllipseTag
{
Point Center; /* ellipse center */
PointT Center; /* ellipse center */
// double MaxRad,MinRad; /* major and minor axis */
// double Phi; /* major axis rotation */
double xrad, yrad; // radii on x and y