merge from testing, new work
This commit is contained in:
commit
dc35a18c85
|
@ -4,6 +4,20 @@ KiCad ChangeLog 2010
|
|||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
2010-Dec-28 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||
================================================================================
|
||||
++new:
|
||||
Completed a good portion of /new class LIB_TABLE.
|
||||
Starting LPID.
|
||||
++common:
|
||||
Tricked xnode.h into not issuing deprecation warnings.
|
||||
++richio:
|
||||
* Added support of DSNLEXER( LINE_READER* ) to TokenList2DsnLexer.cmake, which
|
||||
allows the chaining of different grammars on top of a common LINE_READER.
|
||||
* Changed OUTPUT_FORMATTER::Quoted() to return a std::string and not modify
|
||||
its input parameter.
|
||||
|
||||
|
||||
2010-dec-21 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
|
||||
================================================================================
|
||||
++all
|
||||
|
|
|
@ -223,8 +223,9 @@ using namespace DSN; // enum ${enum} is in this namespace
|
|||
class ${RESULT}_LEXER : public DSNLEXER
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor ${RESULT}_LEXER
|
||||
* Constructor ( const std::string&, const wxString& )
|
||||
* @param aSExpression is (utf8) text possibly from the clipboard that you want to parse.
|
||||
* @param aSource is a description of the origin of @a aSExpression, such as a filename.
|
||||
* If left empty, then _("clipboard") is used.
|
||||
|
@ -236,7 +237,7 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* Constructor ${RESULT}_LEXER
|
||||
* Constructor ( FILE* )
|
||||
* takes @a aFile already opened for reading and @a aFilename as parameters.
|
||||
* The opened file is assumed to be positioned at the beginning of the file
|
||||
* for purposes of accurate line number reporting in error messages. The
|
||||
|
@ -250,6 +251,23 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor ( LINE_READER* )
|
||||
* intializes a lexer and prepares to read from @a aLineReader which
|
||||
* is assumed ready, and may be in use by other DSNLEXERs also. No ownership
|
||||
* is taken of @a aLineReader. This enables it to be used by other lexers also.
|
||||
* The transition between grammars in such a case, must happen on a text
|
||||
* line boundary, not within the same line of text.
|
||||
*
|
||||
* @param aLineReader is any subclassed instance of LINE_READER, such as
|
||||
* STRING_LINE_READER or FILE_LINE_READER. No ownership is taken of aLineReader.
|
||||
*/
|
||||
${RESULT}_LEXER( LINE_READER* aLineReader ) :
|
||||
DSNLEXER( DSN::${result}_keywords, DSN::${result}_keyword_count,
|
||||
aLineReader )
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Function NextTok
|
||||
* returns the next token found in the input file or T_EOF when reaching
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef KICAD_BUILD_VERSION
|
||||
#define KICAD_BUILD_VERSION "(2010-12-22 BZR 2676)"
|
||||
#define KICAD_BUILD_VERSION "(2010-12-23 BZR 2682)"
|
||||
#endif
|
||||
|
||||
//#define VERSION_STABILITY "stable"
|
||||
|
|
|
@ -170,29 +170,27 @@ void DXF_PLOTTER::pen_to( wxPoint pos, char plume )
|
|||
void DXF_PLOTTER::set_dash( bool dashed )
|
||||
{
|
||||
/* NOP for now */
|
||||
wxASSERT( output_file );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function Plot a filled segment (track)
|
||||
* @param start = starting point
|
||||
* @param end = ending point
|
||||
* Function thick_segment
|
||||
* Plot a filled segment (track)
|
||||
* @param aStart = starting point
|
||||
* @param aEnd = ending point
|
||||
* @param aWidth = segment width (thickness)
|
||||
* @param aPlotMode = FILLED, SKETCH ..
|
||||
*/
|
||||
void DXF_PLOTTER::thick_segment( wxPoint start, wxPoint end, int width,
|
||||
GRTraceMode tracemode )
|
||||
void DXF_PLOTTER::thick_segment( wxPoint aStart, wxPoint aEnd, int aWidth,
|
||||
GRTraceMode aPlotMode )
|
||||
{
|
||||
wxASSERT( output_file );
|
||||
|
||||
if( tracemode == FILAIRE ) /* just a line is Ok */
|
||||
if( aPlotMode == FILAIRE ) /* just a line is Ok */
|
||||
{
|
||||
move_to( start );
|
||||
finish_to( end );
|
||||
move_to( aStart );
|
||||
finish_to( aEnd );
|
||||
}
|
||||
else
|
||||
segment_as_oval( start, end, width, tracemode );
|
||||
segment_as_oval( aStart, aEnd, aWidth, aPlotMode );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -157,21 +157,21 @@ static void DrawGraphicTextPline(
|
|||
wxDC* aDC,
|
||||
EDA_Colors aColor,
|
||||
int aWidth,
|
||||
bool sketch_mode,
|
||||
bool aSketchMode,
|
||||
int point_count,
|
||||
wxPoint* coord,
|
||||
void (* aCallback)(int x0, int y0, int xf, int yf ),
|
||||
PLOTTER* plotter )
|
||||
PLOTTER* aPlotter )
|
||||
{
|
||||
if( plotter )
|
||||
if( aPlotter )
|
||||
{
|
||||
plotter->move_to( coord[0] );
|
||||
aPlotter->move_to( coord[0] );
|
||||
for( int ik = 1; ik < point_count; ik++ )
|
||||
{
|
||||
plotter->line_to( coord[ik] );
|
||||
aPlotter->line_to( coord[ik] );
|
||||
}
|
||||
|
||||
plotter->pen_finish();
|
||||
aPlotter->pen_finish();
|
||||
}
|
||||
else if( aCallback )
|
||||
{
|
||||
|
@ -181,7 +181,7 @@ static void DrawGraphicTextPline(
|
|||
coord[ik + 1].x, coord[ik + 1].y );
|
||||
}
|
||||
}
|
||||
else if( sketch_mode )
|
||||
else if( aSketchMode )
|
||||
{
|
||||
for( int ik = 0; ik < (point_count - 1); ik++ )
|
||||
GRCSegm( aClipBox, aDC, coord[ik].x, coord[ik].y,
|
||||
|
@ -218,8 +218,11 @@ static int overbar_position( int size_v, int thickness )
|
|||
* Use a value min(aSize.x, aSize.y) / 5 for a bold text
|
||||
* @param aItalic = true to simulate an italic font
|
||||
* @param aBold = true to use a bold font. Useful only with default width value (aWidth = 0)
|
||||
* @param aCallback() = function called (if non null) to draw each segment.
|
||||
* used to draw 3D texts or for plotting, NULL for normal drawings
|
||||
* @param aPlotter = a pointer to a PLOTTER instance, when this function is used to plot
|
||||
* the text. NULL to draw this text.
|
||||
*/
|
||||
/****************************************************************************************************/
|
||||
void DrawGraphicText( WinEDA_DrawPanel* aPanel,
|
||||
wxDC* aDC,
|
||||
const wxPoint& aPos,
|
||||
|
@ -233,8 +236,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel,
|
|||
bool aItalic,
|
||||
bool aBold,
|
||||
void (* aCallback)( int x0, int y0, int xf, int yf ),
|
||||
PLOTTER* plotter )
|
||||
/****************************************************************************************************/
|
||||
PLOTTER* aPlotter )
|
||||
{
|
||||
int AsciiCode;
|
||||
int x0, y0;
|
||||
|
@ -353,10 +355,10 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel,
|
|||
RotatePoint( ¤t_char_pos, aPos, aOrient );
|
||||
RotatePoint( &end, aPos, aOrient );
|
||||
|
||||
if( plotter )
|
||||
if( aPlotter )
|
||||
{
|
||||
plotter->move_to( current_char_pos );
|
||||
plotter->finish_to( end );
|
||||
aPlotter->move_to( current_char_pos );
|
||||
aPlotter->finish_to( end );
|
||||
}
|
||||
else if( aCallback )
|
||||
{
|
||||
|
@ -410,7 +412,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel,
|
|||
coord[1] = overbar_pos;
|
||||
/* Plot the overbar segment */
|
||||
DrawGraphicTextPline( clipBox, aDC, aColor, aWidth,
|
||||
sketch_mode, 2, coord, aCallback, plotter );
|
||||
sketch_mode, 2, coord, aCallback, aPlotter );
|
||||
}
|
||||
continue; /* Skip ~ processing */
|
||||
}
|
||||
|
@ -450,7 +452,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel,
|
|||
aWidth = 0;
|
||||
DrawGraphicTextPline( clipBox, aDC, aColor, aWidth,
|
||||
sketch_mode, point_count, coord,
|
||||
aCallback, plotter );
|
||||
aCallback, aPlotter );
|
||||
}
|
||||
point_count = 0;
|
||||
}
|
||||
|
@ -492,7 +494,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel,
|
|||
coord[1] = overbar_pos;
|
||||
/* Plot the overbar segment */
|
||||
DrawGraphicTextPline( clipBox, aDC, aColor, aWidth,
|
||||
sketch_mode, 2, coord, aCallback, plotter );
|
||||
sketch_mode, 2, coord, aCallback, aPlotter );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ void DSNLEXER::init()
|
|||
|
||||
DSNLEXER::DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
||||
FILE* aFile, const wxString& aFilename ) :
|
||||
iOwnReaders( true ),
|
||||
keywords( aKeywordTable ),
|
||||
keywordCount( aKeywordCount )
|
||||
{
|
||||
|
@ -73,6 +74,7 @@ DSNLEXER::DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
|||
|
||||
DSNLEXER::DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
||||
const std::string& aClipboardTxt, const wxString& aSource ) :
|
||||
iOwnReaders( true ),
|
||||
keywords( aKeywordTable ),
|
||||
keywordCount( aKeywordCount )
|
||||
{
|
||||
|
@ -83,6 +85,28 @@ DSNLEXER::DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
|||
}
|
||||
|
||||
|
||||
DSNLEXER::DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
||||
LINE_READER* aLineReader ) :
|
||||
iOwnReaders( false ),
|
||||
keywords( aKeywordTable ),
|
||||
keywordCount( aKeywordCount )
|
||||
{
|
||||
PushReader( aLineReader );
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
DSNLEXER::~DSNLEXER()
|
||||
{
|
||||
if( iOwnReaders )
|
||||
{
|
||||
// delete the LINE_READERs from the stack, since I own them.
|
||||
for( READER_STACK::iterator it = readerStack.begin(); it!=readerStack.end(); ++it )
|
||||
delete *it;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DSNLEXER::PushReader( LINE_READER* aLineReader )
|
||||
{
|
||||
readerStack.push_back( aLineReader );
|
||||
|
@ -102,7 +126,7 @@ bool DSNLEXER::PopReader()
|
|||
{
|
||||
readerStack.pop_back();
|
||||
|
||||
reader = &readerStack.back();
|
||||
reader = readerStack.back();
|
||||
start = (char*) (*reader);
|
||||
|
||||
// force a new readLine() as first thing.
|
||||
|
|
|
@ -278,30 +278,32 @@ int OUTPUTFORMATTER::Print( int nestLevel, const char* fmt, ... ) throw( IO_ERRO
|
|||
}
|
||||
|
||||
|
||||
const char* OUTPUTFORMATTER::Quoted( std::string* aWrapee ) throw( IO_ERROR )
|
||||
std::string OUTPUTFORMATTER::Quoted( const std::string& aWrapee ) throw( IO_ERROR )
|
||||
{
|
||||
// derived class's notion of what a quote character is
|
||||
char quote = *GetQuoteChar( "(" );
|
||||
|
||||
// Will the string be wrapped based on its interior content?
|
||||
const char* squote = GetQuoteChar( aWrapee->c_str() );
|
||||
const char* squote = GetQuoteChar( aWrapee.c_str() );
|
||||
|
||||
std::string wrapee = aWrapee; // return this
|
||||
|
||||
// Search the interior of the string for 'quote' chars
|
||||
// and replace them as found with duplicated quotes.
|
||||
// Note that necessarily any string which has internal quotes will
|
||||
// also be wrapped in quotes later in this function.
|
||||
for( unsigned i=0; i<aWrapee->size(); ++i )
|
||||
for( unsigned i=0; i<wrapee.size(); ++i )
|
||||
{
|
||||
if( (*aWrapee)[i] == quote )
|
||||
if( wrapee[i] == quote )
|
||||
{
|
||||
aWrapee->insert( aWrapee->begin()+i, quote );
|
||||
wrapee.insert( wrapee.begin()+i, quote );
|
||||
++i;
|
||||
}
|
||||
else if( (*aWrapee)[0]=='\r' || (*aWrapee)[0]=='\n' )
|
||||
else if( wrapee[i]=='\r' || wrapee[i]=='\n' )
|
||||
{
|
||||
// In a desire to maintain accurate line number reporting within DSNLEXER
|
||||
// a decision was made to make all S-expression strings be on a single
|
||||
// line. You can embedd \n (human readable) in the text but not
|
||||
// line. You can embed \n (human readable) in the text but not
|
||||
// '\n' which is 0x0a.
|
||||
throw IO_ERROR( _( "S-expression string has newline" ) );
|
||||
}
|
||||
|
@ -310,11 +312,11 @@ const char* OUTPUTFORMATTER::Quoted( std::string* aWrapee ) throw( IO_ERROR )
|
|||
if( *squote )
|
||||
{
|
||||
// wrap the beginning and end of the string in a quote.
|
||||
aWrapee->insert( aWrapee->begin(), quote );
|
||||
aWrapee->insert( aWrapee->end(), quote );
|
||||
wrapee.insert( wrapee.begin(), quote );
|
||||
wrapee.insert( wrapee.end(), quote );
|
||||
}
|
||||
|
||||
return aWrapee->c_str();
|
||||
return wrapee;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -50,17 +50,14 @@ void XNODE::Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IO_ERROR )
|
|||
|
||||
void XNODE::FormatContents( OUTPUTFORMATTER* out, int nestLevel ) throw( IO_ERROR )
|
||||
{
|
||||
std::string utf8;
|
||||
|
||||
// output attributes first if they exist
|
||||
for( XATTR* attr = (XATTR*) GetAttributes(); attr; attr = (XATTR*) attr->GetNext() )
|
||||
{
|
||||
utf8 = CONV_TO_UTF8( attr->GetValue() ); // capture the content
|
||||
|
||||
out->Print( 0, " (%s %s)",
|
||||
// attr names should never need quoting, no spaces, we designed the file.
|
||||
CONV_TO_UTF8( attr->GetName() ),
|
||||
out->Quoted( &utf8 ) );
|
||||
out->Quoted( CONV_TO_UTF8( attr->GetValue() ) ).c_str()
|
||||
);
|
||||
}
|
||||
|
||||
// we only expect to have used one of two types here:
|
||||
|
@ -85,8 +82,9 @@ void XNODE::FormatContents( OUTPUTFORMATTER* out, int nestLevel ) throw( IO_ERRO
|
|||
break;
|
||||
|
||||
case wxXML_TEXT_NODE:
|
||||
utf8 = CONV_TO_UTF8( GetContent() );
|
||||
out->Print( 0, " %s", out->Quoted( &utf8 ) );
|
||||
out->Print( 0, " %s",
|
||||
out->Quoted( CONV_TO_UTF8( GetContent() ) ).c_str()
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -859,13 +859,14 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
|||
}
|
||||
|
||||
|
||||
/** GetNextPinPosition()
|
||||
/**
|
||||
* Function GetNextPinPosition()
|
||||
* calculate position of the "next" pin of the aDrawLibItem component
|
||||
* @param aComponent = component to test.
|
||||
* @param aPosition = the calculated pin position, according to the component
|
||||
* @param aPosition = the actual next pin position in schematic, according to the component
|
||||
* orientation and position
|
||||
* @param aSearchFirst = if true, search for the first pin
|
||||
* @return a pointer to the pin
|
||||
* @param aPin = search for the next pin after aPin. aPin = NULL to find the first pin in list
|
||||
* @return a pointer to the next pin found or NULL
|
||||
*/
|
||||
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aComponent,
|
||||
wxPoint& aPosition,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* @file sch_item.h
|
||||
* @file sch_items.h
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -662,10 +662,10 @@ public:
|
|||
* @param aPanel = the current DrawPanel
|
||||
* @param aDC = the current Device Context
|
||||
* @param aOffset = draw offset (usually (0,0))
|
||||
* @param EDA_Colors aColor = text color
|
||||
* @param aColor = text color
|
||||
* @param aDrawMode = GR_OR, GR_XOR.., -1 to use the current mode.
|
||||
* @param GRTraceMode aDisplay_mode = FILAIRE, FILLED or SKETCH
|
||||
* @param EDA_Colors aAnchor_color = anchor color ( UNSPECIFIED_COLOR = do
|
||||
* @param aDisplay_mode = FILAIRE, FILLED or SKETCH
|
||||
* @param aAnchor_color = anchor color ( UNSPECIFIED_COLOR = do
|
||||
* not draw anchor ).
|
||||
*/
|
||||
void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||
|
@ -682,13 +682,13 @@ private:
|
|||
* @param aPanel = the current DrawPanel
|
||||
* @param aDC = the current Device Context
|
||||
* @param aOffset = draw offset (usually (0,0))
|
||||
* @param EDA_Colors aColor = text color
|
||||
* @param aColor = text color
|
||||
* @param aDrawMode = GR_OR, GR_XOR.., -1 to use the current mode.
|
||||
* @param aFillMode = FILAIRE, FILLED or SKETCH
|
||||
* @param EDA_Colors aAnchor_color = anchor color ( UNSPECIFIED_COLOR = do
|
||||
* @param aAnchor_color = anchor color ( UNSPECIFIED_COLOR = do
|
||||
* not draw anchor ).
|
||||
* @param EDA_Colors aText = the single line of text to draw.
|
||||
* @param EDA_Colors aPos = the position of this line ).
|
||||
* @param aText = the single line of text to draw.
|
||||
* @param aPos = the position of this line ).
|
||||
*/
|
||||
void DrawOneLineOfText( WinEDA_DrawPanel* aPanel, wxDC* aDC,
|
||||
const wxPoint& aOffset, EDA_Colors aColor,
|
||||
|
|
|
@ -270,7 +270,7 @@ public:
|
|||
|
||||
/**
|
||||
* Function SetScalingFactor
|
||||
* @param the the current scale used to draw items on screen
|
||||
* @param aScale = the the current scale used to draw items on screen
|
||||
* draw coordinates are user coordinates * GetScalingFactor( )
|
||||
*/
|
||||
void SetScalingFactor( double aScale );
|
||||
|
|
|
@ -200,7 +200,7 @@ public:
|
|||
/**
|
||||
* Function Rotate
|
||||
* Rotate this object.
|
||||
* @param const wxPoint& aRotCentre - the rotation point.
|
||||
* @param aRotCentre - the rotation point.
|
||||
* @param aAngle - the rotation angle in 0.1 degree.
|
||||
*/
|
||||
virtual void Rotate(const wxPoint& aRotCentre, int aAngle)
|
||||
|
@ -211,7 +211,7 @@ public:
|
|||
/**
|
||||
* Function Flip
|
||||
* Flip this object, i.e. change the board side for this object
|
||||
* @param const wxPoint& aCentre - the rotation point.
|
||||
* @param aCentre - the rotation point.
|
||||
*/
|
||||
virtual void Flip(const wxPoint& aCentre )
|
||||
{
|
||||
|
|
|
@ -115,10 +115,20 @@ public:
|
|||
* Function DrawAuxiliaryAxis
|
||||
* Draw the Auxiliary Axis, used in pcbnew which as origin coordinates
|
||||
* for gerber and excellon files
|
||||
* @param DC = current Device Context
|
||||
* @param aDC = current Device Context
|
||||
* @param aDrawMode = draw mode (GR_COPY, GR_OR ..)
|
||||
*/
|
||||
void DrawAuxiliaryAxis( wxDC* DC, int drawmode );
|
||||
void DrawGridAxis( wxDC* DC, int drawmode );
|
||||
void DrawAuxiliaryAxis( wxDC* aDC, int aDrawMode );
|
||||
|
||||
/**
|
||||
* Function DrawGridAxis
|
||||
* Draw on auxiliary axis, used in pcbnew to show grid origin, when
|
||||
* the grid origin is set by user, and is not (0,0)
|
||||
* @param aDC = current Device Context
|
||||
* @param aDrawMode = draw mode (GR_COPY, GR_OR ..)
|
||||
*/
|
||||
void DrawGridAxis( wxDC* aDC, int aDrawMode );
|
||||
|
||||
void OnEraseBackground( wxEraseEvent& event );
|
||||
|
||||
void OnActivate( wxActivateEvent& event );
|
||||
|
|
|
@ -65,6 +65,8 @@ int NegableTextLength( const wxString& aText );
|
|||
* @param aBold = true to use a bold font
|
||||
* @param aCallback() = function called (if non null) to draw each segment.
|
||||
* used to draw 3D texts or for plotting, NULL for normal drawings
|
||||
* @param aPlotter = a pointer to a PLOTTER instance, when this function is used to plot
|
||||
* the text. NULL to draw this text.
|
||||
*/
|
||||
void DrawGraphicText( WinEDA_DrawPanel * aPanel,
|
||||
wxDC * aDC,
|
||||
|
@ -79,7 +81,7 @@ void DrawGraphicText( WinEDA_DrawPanel * aPanel,
|
|||
bool aItalic,
|
||||
bool aBold,
|
||||
void (*aCallback)( int x0, int y0, int xf, int yf ) = NULL,
|
||||
PLOTTER * plotter = NULL );
|
||||
PLOTTER * aPlotter = NULL );
|
||||
|
||||
|
||||
#endif /* __INCLUDE__DRAWTXT_H__ */
|
||||
|
|
|
@ -27,9 +27,7 @@
|
|||
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
#include <boost/ptr_container/ptr_vector.hpp>
|
||||
|
||||
//#include "fctsys.h"
|
||||
#include <vector>
|
||||
|
||||
#include "richio.h"
|
||||
|
||||
|
@ -78,14 +76,15 @@ enum DSN_SYNTAX_T {
|
|||
*/
|
||||
class DSNLEXER
|
||||
{
|
||||
bool iOwnReaders; ///< on readerStack, should I delete them?
|
||||
char* start;
|
||||
char* next;
|
||||
char* limit;
|
||||
|
||||
typedef boost::ptr_vector<LINE_READER> READER_STACK;
|
||||
typedef std::vector<LINE_READER*> READER_STACK;
|
||||
|
||||
READER_STACK readerStack; ///< owns all the LINE_READERs by pointer.
|
||||
LINE_READER* reader; ///< no ownership. ownership is via readerStack.
|
||||
READER_STACK readerStack; ///< all the LINE_READERs by pointer.
|
||||
LINE_READER* reader; ///< no ownership. ownership is via readerStack, maybe, if iOwnReaders
|
||||
int stringDelimiter;
|
||||
bool space_in_quoted_tokens; ///< blank spaces within quoted strings
|
||||
bool commentsAreTokens; ///< true if should return comments as tokens
|
||||
|
@ -155,7 +154,7 @@ class DSNLEXER
|
|||
public:
|
||||
|
||||
/**
|
||||
* Constructor DSNLEXER
|
||||
* Constructor ( FILE*, const wxString& )
|
||||
* intializes a DSN lexer and prepares to read from aFile which
|
||||
* is already open and has aFilename.
|
||||
*
|
||||
|
@ -168,12 +167,35 @@ public:
|
|||
DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
||||
FILE* aFile, const wxString& aFileName );
|
||||
|
||||
/**
|
||||
* Constructor ( std::string&*, const wxString& )
|
||||
* intializes a DSN lexer and prepares to read from @a aSExpression.
|
||||
*
|
||||
* @param aKeywordTable is an array of KEYWORDS holding \a aKeywordCount. This
|
||||
* token table need not contain the lexer separators such as '(' ')', etc.
|
||||
* @param aKeywordTable is the count of tokens in aKeywordTable.
|
||||
* @param aSExpression is text to feed through a STRING_LINE_READER
|
||||
* @param aSource is a description of aSExpression, used for error reporting.
|
||||
*/
|
||||
DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
||||
const std::string& aClipboardTxt, const wxString& aSource = wxEmptyString );
|
||||
const std::string& aSExpression, const wxString& aSource = wxEmptyString );
|
||||
|
||||
~DSNLEXER()
|
||||
{
|
||||
}
|
||||
/**
|
||||
* Constructor ( LINE_READER* )
|
||||
* intializes a DSN lexer and prepares to read from @a aLineReader which
|
||||
* is already open, and may be in use by other DSNLEXERs also. No ownership
|
||||
* is taken of @a aLineReader. This enables it to be used by other DSNLEXERs also.
|
||||
*
|
||||
* @param aKeywordTable is an array of KEYWORDS holding \a aKeywordCount. This
|
||||
* token table need not contain the lexer separators such as '(' ')', etc.
|
||||
* @param aKeywordTable is the count of tokens in aKeywordTable.
|
||||
* @param aLineReader is any subclassed instance of LINE_READER, such as
|
||||
* STRING_LINE_READER or FILE_LINE_READER.
|
||||
*/
|
||||
DSNLEXER( const KEYWORD* aKeywordTable, unsigned aKeywordCount,
|
||||
LINE_READER* aLineReader );
|
||||
|
||||
virtual ~DSNLEXER();
|
||||
|
||||
/**
|
||||
* Function PushReader
|
||||
|
|
|
@ -96,7 +96,6 @@ void GRBezier( EDA_Rect* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
|||
* @param aDC the device context into which drawing should occur.
|
||||
* @param aPointCount the number of points in the array \a aPoints.
|
||||
* @param aPoints The points to draw.
|
||||
* @param aPointArray an array holding the wxPoints in the polygon.
|
||||
* @param doFill true if polygon is to be filled, else false and only the boundary is drawn.
|
||||
* @param aPenColor the color index of the border.
|
||||
* @param aFillColor the fill color of the polygon's interior.
|
||||
|
@ -120,7 +119,6 @@ void GRClosedPoly( EDA_Rect* ClipBox,
|
|||
* @param aDC the device context into which drawing should occur.
|
||||
* @param aPointCount the number of points in the array \a aPointArray.
|
||||
* @param aPoints the points to draw.
|
||||
* @param aPointArray an array holding the wxPoints in the polygon.
|
||||
* @param doFill true if polygon is to be filled, else false and only the boundary is drawn.
|
||||
* @param aPenWidth is the width of the pen to use on the perimeter, can be zero.
|
||||
* @param aPenColor the color index of the border.
|
||||
|
@ -144,7 +142,7 @@ void GRClosedPoly( EDA_Rect* ClipBox,
|
|||
* @param ClipBox defines a rectangular boundary outside of which no drawing will occur.
|
||||
* @param aDC the device context into which drawing should occur.
|
||||
* @param x The x coordinate in user space of the center of the circle.
|
||||
* @param x The y coordinate in user space of the center of the circle.
|
||||
* @param y The y coordinate in user space of the center of the circle.
|
||||
* @param aRadius is the radius of the circle.
|
||||
* @param aColor is an index into our color table of RGB colors.
|
||||
* @see EDA_Colors and colors.h
|
||||
|
|
|
@ -108,7 +108,7 @@ wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList,
|
|||
* Function AddHotkeyName
|
||||
* Add the key name from the Command id value ( m_Idcommand member value)
|
||||
* @param aText = a wxString. returns aText + key name
|
||||
* @param aList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands
|
||||
* @param aDescrList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands
|
||||
* @param aCommandId = Command Id value
|
||||
* @param aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
||||
* = false to add <spaces><(keyname)>
|
||||
|
|
|
@ -42,6 +42,10 @@ struct IO_ERROR
|
|||
{
|
||||
wxString errorText;
|
||||
|
||||
/**
|
||||
* Constructor ( const wxChar* )
|
||||
* handles the case where _() is passed as aMsg.
|
||||
*/
|
||||
IO_ERROR( const wxChar* aMsg ) :
|
||||
errorText( aMsg )
|
||||
{
|
||||
|
|
|
@ -336,15 +336,14 @@ public:
|
|||
*
|
||||
* @param aWrapee is a string that might need wraping in double quotes,
|
||||
* and it might need to have its internal quotes doubled up, or not.
|
||||
* Caller's copy may be modified, or not.
|
||||
*
|
||||
* @return const char* - useful for passing to printf() style functions that
|
||||
* must output utf8 streams.
|
||||
* @return std::string - whose c_str() function can be called for passing
|
||||
* to printf() style functions that must output utf8 encoded s-expression streams.
|
||||
* @throw IO_ERROR, if aWrapee has any \r or \n bytes in it which is
|
||||
* illegal according to the DSNLEXER who does not ever want them
|
||||
* within a string.
|
||||
*/
|
||||
virtual const char* Quoted( std::string* aWrapee ) throw( IO_ERROR );
|
||||
virtual std::string Quoted( const std::string& aWrapee ) throw( IO_ERROR );
|
||||
|
||||
//-----</interface functions>-----------------------------------------
|
||||
};
|
||||
|
|
|
@ -234,10 +234,11 @@ public:
|
|||
* Second = VALUE: "VAL**"
|
||||
* the new module is added to the board module list
|
||||
* @param aModuleName = name of the new footprint
|
||||
* (will the component reference in board)
|
||||
* (will be the component reference in board)
|
||||
* @return a pointer to the new module
|
||||
*/
|
||||
MODULE* Create_1_Module( const wxString& module_name );
|
||||
MODULE* Create_1_Module( const wxString& aModuleName );
|
||||
|
||||
void Edit_Module( MODULE* module, wxDC* DC );
|
||||
void Rotate_Module( wxDC* DC,
|
||||
MODULE* module,
|
||||
|
@ -285,11 +286,11 @@ public:
|
|||
*
|
||||
* Read active libraries or one library to find and load a given module
|
||||
* If found the module is linked to the tail of linked list of modules
|
||||
* @param aLibraryFullFileName - the full filename of the library to read. If empty,
|
||||
* @param aLibraryFullFilename - the full filename of the library to read. If empty,
|
||||
* all active libraries are read
|
||||
* @param aModuleName = module name to load
|
||||
* @param aDisplayMessageError = true to display an error message if any.
|
||||
* @return a MODULE * pointer to the new module, or NULL
|
||||
* @return a pointer to the new module, or NULL
|
||||
*
|
||||
*/
|
||||
MODULE* Get_Librairie_Module( const wxString& aLibraryFullFilename,
|
||||
|
@ -299,6 +300,7 @@ public:
|
|||
/**
|
||||
* Function Select_1_Module_From_List
|
||||
* Display a list of modules found in active libraries or a given library
|
||||
* @param active_window = the current window ( parent window )
|
||||
* @param aLibraryFullFilename = library to list (if aLibraryFullFilename
|
||||
* == void, list all modules)
|
||||
* @param aMask = Display filter (wildcart)( Mask = wxEmptyString if not
|
||||
|
|
|
@ -540,10 +540,10 @@ public:
|
|||
* sub-hierarchy will be deleted. If it is only a copy, the GetDrawItems() and the
|
||||
* sub-hierarchy must NOT be deleted.
|
||||
*
|
||||
* @Note
|
||||
* @note
|
||||
* Edit wires and buses is a bit complex.
|
||||
* because when a new wire is added, modifications in wire list
|
||||
* (wire concatenation) there are modified items, deleted items and new items
|
||||
* because when a new wire is added, a lot of modifications in wire list is made
|
||||
* (wire concatenation): modified items, deleted items and new items
|
||||
* so flag_type_command is UR_WIRE_IMAGE: the struct ItemToCopy is a list of
|
||||
* wires saved in Undo List (for Undo or Redo commands, saved wires will be
|
||||
* exchanged with current wire list
|
||||
|
|
|
@ -157,7 +157,7 @@ public:
|
|||
* @param aFilename = file name to read.
|
||||
* @param aDescList = current hotkey list descr. to initialise.
|
||||
*/
|
||||
int ReadHotkeyConfigFile( const wxString& Filename,
|
||||
int ReadHotkeyConfigFile( const wxString& aFilename,
|
||||
struct Ki_HotkeyInfoSectionDescriptor* aDescList );
|
||||
|
||||
/**
|
||||
|
|
|
@ -26,6 +26,12 @@
|
|||
*/
|
||||
|
||||
#include "richio.h"
|
||||
|
||||
// quiet the deprecated warnings with 3 lines:
|
||||
#include <wx/defs.h>
|
||||
#undef wxDEPRECATED
|
||||
#define wxDEPRECATED(x) x
|
||||
|
||||
#include <wx/xml/xml.h>
|
||||
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include <sch_lib_table.h>
|
||||
#include <sch_lib_table_lexer.h>
|
||||
#include <set>
|
||||
|
||||
using namespace std;
|
||||
using namespace SCH;
|
||||
|
@ -156,21 +157,59 @@ void LIB_TABLE::Format( OUTPUTFORMATTER* out, int nestLevel ) const
|
|||
out->Print( nestLevel, ")\n" );
|
||||
}
|
||||
|
||||
|
||||
void LIB_TABLE::ROW::Format( OUTPUTFORMATTER* out, int nestLevel ) const
|
||||
throw( IO_ERROR )
|
||||
{
|
||||
out->Print( nestLevel, "(lib (logical \"%s\")(type \"%s\")(full_uri \"%s\")(options \"%s\"))\n",
|
||||
logicalName.c_str(), libType.c_str(), fullURI.c_str(), options.c_str() );
|
||||
out->Print( nestLevel, "(lib (logical %s)(type %s)(full_uri %s)(options %s))\n",
|
||||
out->Quoted( logicalName ).c_str(),
|
||||
out->Quoted( libType ).c_str(),
|
||||
out->Quoted( fullURI ).c_str(),
|
||||
out->Quoted( options ).c_str()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
const LIB_TABLE::ROW* LIB_TABLE::FindRow( const STRING& aLogicalName )
|
||||
STRINGS LIB_TABLE::GetLogicalLibs()
|
||||
{
|
||||
// only return unique logical library names. Use std::set::insert() to
|
||||
// quietly reject any duplicates, which can happen in the fall back table(s).
|
||||
set<STRING> unique;
|
||||
STRINGS ret;
|
||||
|
||||
const LIB_TABLE* cur = this;
|
||||
|
||||
do
|
||||
{
|
||||
for( ROWS_CITER it = cur->rows.begin(); it!=cur->rows.end(); ++it )
|
||||
{
|
||||
unique.insert( it->second->logicalName );
|
||||
}
|
||||
|
||||
} while( ( cur = cur->fallBack ) != 0 );
|
||||
|
||||
// return a sorted, unique set of STRINGS to caller
|
||||
for( set<STRING>::const_iterator it = unique.begin(); it!=unique.end(); ++it )
|
||||
ret.push_back( *it );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
PART* LIB_TABLE::GetPart( const LPID& aLogicalPartID ) throw( IO_ERROR )
|
||||
{
|
||||
// need LIPD done.
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const LIB_TABLE::ROW* LIB_TABLE::FindRow( const STRING& aLogicalName ) const
|
||||
{
|
||||
// this function must be *super* fast, so therefore should not instantiate
|
||||
// anything which would require using the heap. This function is the reason
|
||||
// ptr_map<> was used instead of ptr_set<>, which would have required
|
||||
// instantiating a ROW just to find a ROW.
|
||||
LIB_TABLE* cur = this;
|
||||
const LIB_TABLE* cur = this;
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -203,7 +242,8 @@ bool LIB_TABLE::InsertRow( auto_ptr<ROW>& aRow, bool doReplace )
|
|||
rows.insert( key, aRow );
|
||||
return true;
|
||||
}
|
||||
else if( doReplace )
|
||||
|
||||
if( doReplace )
|
||||
{
|
||||
rows.erase( aRow->logicalName );
|
||||
|
||||
|
@ -229,9 +269,10 @@ void LIB_TABLE::Test()
|
|||
// To pass an empty string, we can pass " " to (options " ")
|
||||
SCH_LIB_TABLE_LEXER slr(
|
||||
"(lib_table \n"
|
||||
" (lib (logical www) (type http) (full_uri http://kicad.org/libs) (options \" \"))\n"
|
||||
" (lib (logical meparts) (type dir) (full_uri /tmp/eeschema-lib) (options \" \"))\n"
|
||||
" (lib (logical old-project) (type schematic)(full_uri /tmp/old-schematic.sch) (options \" \"))\n"
|
||||
" (lib (logical www) (type http) (full_uri http://kicad.org/libs) (options \" \"))\n",
|
||||
,
|
||||
|
||||
wxT( "inline text" ) // source
|
||||
);
|
||||
|
@ -258,6 +299,7 @@ void LIB_TABLE::Test()
|
|||
|
||||
STRING_FORMATTER sf;
|
||||
|
||||
// format this whole table into sf, it will be sorted by logicalName.
|
||||
Format( &sf, 0 );
|
||||
|
||||
printf( "test 'Parse() <-> Format()' round tripping:\n" );
|
||||
|
@ -275,6 +317,14 @@ void LIB_TABLE::Test()
|
|||
}
|
||||
else
|
||||
printf( "not found\n" );
|
||||
|
||||
printf( "\nlist of logical libraries:\n" );
|
||||
|
||||
STRINGS logNames = GetLogicalLibs();
|
||||
for( STRINGS::const_iterator it = logNames.begin(); it!=logNames.end(); ++it )
|
||||
{
|
||||
printf( "logicalName: %s\n", it->c_str() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -58,13 +58,6 @@ public:
|
|||
|
||||
public:
|
||||
|
||||
/* was needed for ptr_set<> but not ptr_map<>
|
||||
bool operator<( const ROW& other ) const
|
||||
{
|
||||
return logicalName < other.logicalName;
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function GetLogicalName
|
||||
* returns the logical name of this library table entry.
|
||||
|
@ -223,46 +216,54 @@ public:
|
|||
*/
|
||||
PART* GetPart( const LPID& aLogicalPartID ) throw( IO_ERROR );
|
||||
|
||||
|
||||
#if 0 // moved here from LPID
|
||||
/**
|
||||
* Function GetLogicalLibraries
|
||||
* returns the logical library names, all of them that are in the
|
||||
* library table.
|
||||
* Function GetLogicalLibs
|
||||
* returns the logical library names, all of them that are in pertinent to
|
||||
* a lookup done on this LIB_TABLE.
|
||||
*/
|
||||
STRINGS GetLogicalLibraries();
|
||||
STRINGS GetLogicalLibs();
|
||||
|
||||
//----<read accessors>----------------------------------------------------
|
||||
// the returning of a const STRING* tells if not found, but might be too
|
||||
// promiscuous?
|
||||
|
||||
/**
|
||||
* Function GetLibraryURI
|
||||
* Function GetLibURI
|
||||
* returns the full library path from a logical library name.
|
||||
* @param aLogicalLibraryName is the short name for the library of interest.
|
||||
* @param aSchematic provides access to the full library table inclusive
|
||||
* of the schematic contribution, or may be NULL to exclude the schematic rows.
|
||||
* @return const STRING* - or NULL if not found.
|
||||
*/
|
||||
STRING GetLibraryURI( const STRING& aLogicalLibraryName,
|
||||
SCHEMATIC* aSchematic=NULL ) const;
|
||||
const STRING* GetLibURI( const STRING& aLogicalLibraryName ) const
|
||||
{
|
||||
const ROW* row = FindRow( aLogicalLibraryName );
|
||||
return row ? &row->fullURI : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function GetLibraryType
|
||||
* Function GetLibType
|
||||
* returns the type of a logical library.
|
||||
* @param aLogicalLibraryName is the short name for the library of interest.
|
||||
* @param aSchematic provides access to the full library table inclusive
|
||||
* of the schematic contribution, or may be NULL to exclude the schematic rows.
|
||||
* @return const STRING* - or NULL if not found.
|
||||
*/
|
||||
STRING GetLibraryType( const STRING& aLogicalLibraryName,
|
||||
SCHEMATIC* aSchematic=NULL ) const;
|
||||
const STRING* GetLibType( const STRING& aLogicalLibraryName ) const
|
||||
{
|
||||
const ROW* row = FindRow( aLogicalLibraryName );
|
||||
return row ? &row->libType : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function GetOptions
|
||||
* Function GetLibOptions
|
||||
* returns the options string for \a aLogicalLibraryName.
|
||||
* @param aLogicalLibraryName is the short name for the library of interest.
|
||||
* @param aSchematic provides access to the full library table inclusive
|
||||
* of the schematic contribution, or may be NULL to exclude the schematic rows.
|
||||
* @return const STRING* - or NULL if not found.
|
||||
*/
|
||||
STRING GetOptions( const STRING& aLogicalLibraryName,
|
||||
SCHEMATIC* aSchematic=NULL ) const;
|
||||
#endif
|
||||
const STRING* GetLibOptions( const STRING& aLogicalLibraryName ) const
|
||||
{
|
||||
const ROW* row = FindRow( aLogicalLibraryName );
|
||||
return row ? &row->options : 0;
|
||||
}
|
||||
|
||||
//----</read accessors>---------------------------------------------------
|
||||
|
||||
#if defined(DEBUG)
|
||||
/// implement the tests in here so we can honor the priviledge levels of the
|
||||
|
@ -276,9 +277,10 @@ protected: // only a table editor can use these
|
|||
* Function InsertRow
|
||||
* adds aRow if it does not already exist or if doReplace is true. If doReplace
|
||||
* is not true and the key for aRow already exists, the function fails and returns false.
|
||||
* The key for the table is the logicalName, and all in this table must be unique.
|
||||
* @param aRow is the new row to insert, or to forcibly add if doReplace is true.
|
||||
* @param doReplace if true, means insert regardless if aRow's key already exists. If false, then fail
|
||||
* if the key already exists.
|
||||
* @param doReplace if true, means insert regardless of whether aRow's key already
|
||||
* exists. If false, then fail if the key already exists.
|
||||
* @return bool - true if the operation succeeded.
|
||||
*/
|
||||
bool InsertRow( std::auto_ptr<ROW>& aRow, bool doReplace = false );
|
||||
|
@ -287,7 +289,7 @@ protected: // only a table editor can use these
|
|||
* Function FindRow
|
||||
* returns a ROW* if aLogicalName is found in this table or in fallBack, else NULL.
|
||||
*/
|
||||
const ROW* FindRow( const STRING& aLogicalName );
|
||||
const ROW* FindRow( const STRING& aLogicalName ) const;
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ BOARD_ITEM* DuplicateStruct( BOARD_ITEM* aItem );
|
|||
* - if a call to SaveCopyInUndoList was forgotten in pcbnew
|
||||
* - in zones outlines, when a change in one zone merges this zone with an other
|
||||
* This function avoids a pcbnew crash
|
||||
* @param aBoard = board to test
|
||||
* @param aPcb = board to test
|
||||
* @param aItem = item to find
|
||||
*/
|
||||
static bool TestForExistingItem( BOARD* aPcb, BOARD_ITEM* aItem )
|
||||
|
|
|
@ -277,7 +277,7 @@ EDA_Rect TEXTE_MODULE::GetTextRect( void ) const
|
|||
* Function HitTest
|
||||
* tests if the given wxPoint is within the bounds of this object.
|
||||
* @param refPos A wxPoint to test
|
||||
* @return bool - true if a hit, else false
|
||||
* @return true if a hit, else false
|
||||
*/
|
||||
bool TEXTE_MODULE::HitTest( const wxPoint& refPos )
|
||||
{
|
||||
|
@ -419,6 +419,8 @@ void TEXTE_MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode,
|
|||
size, m_HJustify, m_VJustify, width, m_Italic, m_Bold );
|
||||
}
|
||||
|
||||
/* Rraws a line from the TEXTE_MODULE origin to parent MODULE origin.
|
||||
*/
|
||||
void TEXTE_MODULE::DrawUmbilical( WinEDA_DrawPanel* aPanel,
|
||||
wxDC* aDC,
|
||||
int aDrawMode,
|
||||
|
@ -430,9 +432,7 @@ void TEXTE_MODULE::DrawUmbilical( WinEDA_DrawPanel* aPanel,
|
|||
|
||||
GRSetDrawMode( aDC, GR_XOR );
|
||||
GRLine( &aPanel->m_ClipBox, aDC,
|
||||
parent->GetPosition().x, parent->GetPosition().y,
|
||||
GetPosition().x + aOffset.x,
|
||||
GetPosition().y + aOffset.y,
|
||||
parent->GetPosition(), GetPosition() + aOffset,
|
||||
0, UMBILICAL_COLOR);
|
||||
}
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ public: TEXTE_MODULE( MODULE* parent, int text_type = TEXT_is_DIVERS );
|
|||
/**
|
||||
* Function GetClass
|
||||
* returns the class name.
|
||||
* @return wxString
|
||||
* @return wxString = "MTEXT"
|
||||
*/
|
||||
virtual wxString GetClass() const
|
||||
{
|
||||
|
|
|
@ -242,11 +242,12 @@ void GenDrillMapFile( BOARD* aPcb, FILE* aFile, const wxString& aFullFileName,
|
|||
|
||||
|
||||
/** Creates the drill map aFile in HPGL or POSTSCRIPT format
|
||||
* @param aPcb BOARD
|
||||
* @param aPcb = the BOARD
|
||||
* @param aPlotter = a PLOTTER instance (HPGL or POSTSCRIPT plotter).
|
||||
* @param aHoleListBuffer = std::vector<HOLE_INFO> list of holes descriptors
|
||||
* @param aToolListBuffer = std::vector<DRILL_TOOL> drill list buffer
|
||||
*/
|
||||
void Gen_Drill_PcbMap( BOARD* aPcb, PLOTTER* plotter,
|
||||
void Gen_Drill_PcbMap( BOARD* aPcb, PLOTTER* aPlotter,
|
||||
std::vector<HOLE_INFO>& aHoleListBuffer,
|
||||
std::vector<DRILL_TOOL>& aToolListBuffer )
|
||||
{
|
||||
|
@ -269,14 +270,14 @@ void Gen_Drill_PcbMap( BOARD* aPcb, PLOTTER* plotter,
|
|||
|
||||
/* Always plot the drill symbol (for slots identifies the needed
|
||||
* cutter!) */
|
||||
plotter->marker( pos, aHoleListBuffer[ii].m_Hole_Diameter,
|
||||
aPlotter->marker( pos, aHoleListBuffer[ii].m_Hole_Diameter,
|
||||
aHoleListBuffer[ii].m_Tool_Reference - 1 );
|
||||
if( aHoleListBuffer[ii].m_Hole_Shape != 0 )
|
||||
{
|
||||
wxSize oblong_size;
|
||||
oblong_size.x = aHoleListBuffer[ii].m_Hole_SizeX;
|
||||
oblong_size.y = aHoleListBuffer[ii].m_Hole_SizeY;
|
||||
plotter->flash_pad_oval( pos, oblong_size,
|
||||
aPlotter->flash_pad_oval( pos, oblong_size,
|
||||
aHoleListBuffer[ii].m_Hole_Orient, FILAIRE );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ static bool CmpHoleDiameterValue( const HOLE_INFO& a, const HOLE_INFO& b )
|
|||
* Create the list of holes and tools for a given board
|
||||
* The list is sorted by increasing drill values
|
||||
* Only holes from aFirstLayer to aLastLayer copper layers are listed (for vias, because pad holes are always through holes)
|
||||
* @param Pcb : the given board
|
||||
* @param aPcb : the given board
|
||||
* @param aHoleListBuffer : the std::vector<HOLE_INFO> to fill with pcb holes info
|
||||
* @param aToolListBuffer : the std::vector<DRILL_TOOL> to fill with tools to use
|
||||
* @param aFirstLayer = first layer to consider. if < 0 aFirstLayer is ignored (used to creates report file)
|
||||
|
|
|
@ -137,7 +137,7 @@ public: EXCELLON_WRITER( BOARD* aPcb, FILE* aFile,
|
|||
|
||||
|
||||
/**
|
||||
* SetFormat
|
||||
* Function SetFormat
|
||||
* Initialize internal parameters to match the given format
|
||||
* @param aMetric = true for metric coordinates, false for imperial units
|
||||
* @param aZerosFmt = DECIMAL_FORMAT, SUPPRESS_LEADING, SUPPRESS_TRAILING, KEEP_ZEROS
|
||||
|
@ -147,12 +147,11 @@ public: EXCELLON_WRITER( BOARD* aPcb, FILE* aFile,
|
|||
void SetFormat( bool aMetric, zeros_fmt aZerosFmt, int aLeftDigits, int aRightDigits );
|
||||
|
||||
/**
|
||||
* SetOptions
|
||||
* Function SetOptions
|
||||
* Initialize internal parameters to match drill options
|
||||
* @param aMetric = true for metric coordinates, false for imperial units
|
||||
* @param aZerosFmt = DECIMAL_FORMAT, SUPPRESS_LEADING, SUPPRESS_TRAILING, KEEP_ZEROS
|
||||
* @param aLeftDigits = number of digits for integer part of coordinates
|
||||
* @param aRightDigits = number of digits for mantissa part of coordinates
|
||||
* @param aMirror = true to create mirrored coordinates (Y coordinates negated)
|
||||
* @param aMinimalHeader = true to use a minimal header (no comments, no info)
|
||||
* @param aOffset = drill coordinates offset
|
||||
*/
|
||||
void SetOptions( bool aMirror, bool aMinimalHeader, wxPoint aOffset )
|
||||
{
|
||||
|
@ -163,7 +162,7 @@ public: EXCELLON_WRITER( BOARD* aPcb, FILE* aFile,
|
|||
|
||||
|
||||
/**
|
||||
* CreateDrillFile
|
||||
* Function CreateDrillFile
|
||||
* Creates an Excellon drill file
|
||||
* @return hole count
|
||||
*/
|
||||
|
@ -180,14 +179,14 @@ private:
|
|||
* Create the list of holes and tools for a given board
|
||||
* The list is sorted by increasing drill values
|
||||
* Only holes from aFirstLayer to aLastLayer copper layers are listed (for vias, because pad holes are always through holes)
|
||||
* @param Pcb : the given board
|
||||
* @param aPcb : the given board
|
||||
* @param aHoleListBuffer : the std::vector<HOLE_INFO> to fill with pcb holes info
|
||||
* @param aToolListBuffer : the std::vector<DRILL_TOOL> to fill with tools to use
|
||||
* @param aFirstLayer = first layer to consider. if < 0 aFirstLayer is ignored
|
||||
* @param aLastLayer = last layer to consider. if < 0 aLastLayer is ignored
|
||||
* @param aExcludeThroughHoles : if true, exclude through holes ( pads and vias through )
|
||||
*/
|
||||
void Build_Holes_List( BOARD* Pcb, std::vector<HOLE_INFO>& aHoleListBuffer,
|
||||
void Build_Holes_List( BOARD* aPcb, std::vector<HOLE_INFO>& aHoleListBuffer,
|
||||
std::vector<DRILL_TOOL>& aToolListBuffer,
|
||||
int aFirstLayer, int aLastLayer, bool aExcludeThroughHoles );
|
||||
|
||||
|
|
|
@ -509,9 +509,9 @@ bool TestFlags( const wxString& flg_string, long flg_mask, const wxChar* flg_nam
|
|||
* Test flag flg_mask or flg_name.
|
||||
* @param flg_string = flsg list to test: can be a bit field flag or a list name flsg
|
||||
* a bit field flag is an hexadecimal value: Ox00020000
|
||||
* a list name flsg is a string list of flags, comma separated like square,option1
|
||||
* @param flg_mask = flsg list to test
|
||||
* @param flg_mask = flsg list to test
|
||||
* a list name flag is a string list of flags, comma separated like square,option1
|
||||
* @param flg_mask = flag list to test
|
||||
* @param flg_name = flag name to find in list
|
||||
* @return true if found
|
||||
*/
|
||||
{
|
||||
|
|
|
@ -342,10 +342,11 @@ static void gen_arc( std::vector <wxPoint>& aBuffer,
|
|||
/**
|
||||
* Function BuildCornersList_S_Shape
|
||||
* Create a path like a S-shaped coil
|
||||
* @param aBuffer = a vector <wxPoint>& buffer where to put points
|
||||
* @param aBuffer = a buffer where to store points (ends of segments)
|
||||
* @param aStartPoint = starting point of the path
|
||||
* @param aEndPoint = ending point of the path
|
||||
* @param aLength = full lenght of the path
|
||||
* @param aWidth = witdth of lines
|
||||
* @param aWidth = segment width
|
||||
*/
|
||||
int BuildCornersList_S_Shape( std::vector <wxPoint>& aBuffer,
|
||||
wxPoint aStartPoint, wxPoint aEndPoint,
|
||||
|
|
Loading…
Reference in New Issue