* macros.h now has TO_UTF8() and FROM_UTF8() which are working converters
to and from UTF-8 encoding for any wxWidgets build mode. We can switch to
them at any time. I am using them now for specctra conversions and
elsewhere where I wanted gauranteed UTF8 encoding.
* added OUTPUTFORMATTER::Quoted( const wxString& ) to simplify converting
to UTF8 encoded s-expression atoms. The recommended technique is now simply:
out->Quoted( wxString ).c_str()
* DSNLEXER::NextTok() now uses two separate modes to parse quoted strings.
This gives us the freedom to control our own destiny separate from the
constraints put on us by the Specctra DSN spec.
* Added Documentation/s-expressions.txt to explain all this.
* Enhanced our quoting protocol by moving away from doubling up double quotes
to a C line escape mechanism.
* Now support multi-line strings, which when properly escaped, can still be
read in as a token originating on a single line.
* TokenList2DsnLexer.cmake now supports comments, which start with a leading
# character, and may be either on their own line or on a line after a token.
* DSNLEXER::PopReader() now pops even the last LINE_READER* and returns it.
++pcbnew:
* SPECCTRA_DB now inherits from new class SPECCTRA_LEXER, which led to a great
deal of simplification and code factoring.
* Moved specctra keywords into specctra.keywords.
* TokenList2DsnLexer.cmake now wraps each token enum in its own namespace. It
also no longer setup of the "using" directive in the header file, which was
bad behavior. C++ enum values will have name collisions unless the enums
themselves are different namespaces.
++new:
* Sweet library is now a DSO/DLL.
* Brought in SWIG to do a wrap of the Sweet DSO/DLL for unit testing
and scripting. The SWIG DSO/DLLs are built separate from the Sweet DSO/DLL
and are also optional.
* Added the basic structure to the Sweet parser in sch_part.cpp.
* Got inheritence working off of the 'extends' keyword and PART::inherit()
* Tossed the units support out of sweet.keywords, since we agreed to go dimensionless.
++richio:
* Added the problemInputLine support to PARSE_ERROR, so UI can show the
offending line of bytes. Yes bytes, not even guaranteed to be characters.
Rename EDA_Rect::Inside to EDA_Rect::Contains ( EDA_Rect::Inside( const EDA_Rect& aRect ) was very ambiguous )
Fix some Doxygen warnings and erroneous comments; Add comments.
Added: in file dialog, multiple file selection.
Added: Draw mode selector (in left toolbar):
Raw mode:
a Gerber image is drawn on screen without buffering.
Artifacts happen if there are negative items drawn, if more than one Gerber file is shown.
Stacked mode:
each Geber image is drawn in a buffer and after drawn on screen
No artifact with negative items.
Each Gerber image covers previous images.
OR mode (transparency mode):
each Geber image is drawn in a buffer and after drawn on screen
No artifact with negative items.
Each Gerber image is "ORed" with previous images, like in Pcbnew.
Try to optimize Draw function in buffered modes.
(Useful for PC that have problems with "blit" graphic function)
Fix minor issues.
Revise TokenList2DsnLexer.cmake to take outCppFile and outHeaderFile optinally
and enum mandatorily. Standardize the script's invocation technique within
all the CMakeLists.txt files.