diff --git a/.gitignore b/.gitignore
index 85bc6b187f..7a0c2f6897 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,8 +32,7 @@ Testing
 version.h
 config.h
 install_manifest.txt
-Documentation/doxygen
-Documentation/development/doxygen
+doxygen/out
 *.bak
 *.pyc
 common/pcb_plot_params_keywords.cpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0d9c74db8e..981b9470b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -995,11 +995,11 @@ if( KICAD_USE_SENTRY )
 endif()
 
 #================================================
-# Add the documentation
+# Add the doxygen target
 #================================================
 find_package( Doxygen )
 
-add_subdirectory( Documentation )
+add_subdirectory( doxygen )
 
 # Generate config.h.
 configure_file( ${PROJECT_SOURCE_DIR}/CMakeModules/config.h.cmake
diff --git a/Documentation/changelogs/CHANGELOG-2007.txt b/Documentation/changelogs/CHANGELOG-2007.txt
deleted file mode 100644
index a0d98bf06b..0000000000
--- a/Documentation/changelogs/CHANGELOG-2007.txt
+++ /dev/null
@@ -1,1547 +0,0 @@
-KiCad ChangeLog 2007
-====================
-
-2007-Dec-29 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    First draft (and code..) about new zone handling, using polygons to define an outline.
-    Now currently not useable because the fill function (and many other important functions) is not implemented.
-    Many functions are not yet implemented: merging zones, cutout, DRC ...
-    Nevertheless, one can create, modify edit and save zone outlines
-
-
-2007-Dec-23 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-  * Because of the discussion 4 months ago about using Boost::Python, and
-    because of an excellent boost::ptr_vector class, I want to make some of the
-    boost libraries be necessary for building Kicad.  These would be:
-    1) boost pointer container library (immediately)
-        http://www.boost.org/libs/ptr_container/doc/ptr_container.html
-        See the work in specctra.cpp to see where this is going:
-        typedef boost::ptr_vector<ELEM> ELEM_ARRAY found within class PARENT.
-        I found that gcc 4.2.1 was complaining about the standard ubuntu libboost-dev
-        package and would not compile ptr_vector class.  But the svn of boost
-        fixed this.
-    2) boost::python when building python in.
-  * Added FIND_PACKAGE(Boost) to CMakeLists.txt
-
-
-2007-Dec-22 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-    added strlower() to common.h and string.cpp.
-    fixed compiler warnings in common/gr_basic.cpp and pcbnew/clean.cpp
-+pcbnew
-    started the DSN file import/export for SPECCTRA routers, adding dsn.cpp and
-    specctra.cpp, with "stand alone" compile support for it in pcbnew/CMakeLists.txt.
-
-
-2007-Dec-17 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    WinEDA_PcbFrame::Other_Layer_Route() was leaving in the bridging segment
-    when the DRC denied the via insertion.
-
-
-2007-Dec-17 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    some changes about zones: enhanced dialog, and files reorganisation
-
-
-2007-Dec-14 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    WinEDA_PcbFrame::Other_Layer_Route() now returns bool, so that if the DRC
-    would not allow the new via placement, then it can be checked and the layer
-    change can also then be aborted.  Previously the layer change would happen
-    in mid track even if the via could not be placed.
-
-
-2007-Dec-13 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * surbrill.cpp's int WinEDA_PcbFrame::Select_High_Light( wxDC* DC )
-    was re-written to use the GENERAL_COLLECTOR, and the scanList is set to
-    give pads a higher search priority than tracks, vias or zones.
-    The objective was to use the pad if possible, rather than a track on a pad,
-    so the pad can be sent to eeschema.  Finding the track only (even though
-    on a pad) would not send anything to eeschema.
-
-
-2007-Dec-12 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Fized zone drawing bug in svn HEAD only.
-    pcbnew/zones.cpp, see:
-    http://tech.groups.yahoo.com/group/kicad-users/message/2993
-
-
-2007-Dec-11 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-  * Fixed hotkey table for '+' and '-' bug.  The lookup table in
-    common/hotkeys_basic.cpp had bad entries for + and -.  These hotkeys
-    were not working on Linux.
-  * Added polygon directory to Doxyfile.
-
-
-2007-Dec-09 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+cvpcb:
-    listboxes.cpp FootprintListBox::m_ActiveFootprint member was not initialized.
-    Can crash cvpcb (WINDOWS only, i believe)
-
-
-2007-Dec-09 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    changes in file organisation and classes to prepare zone redesign. No real new code.
-    class zone functions and definitions moved in class_zone.h and .cpp
-
-
-2007-Dec-07 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    Very minor bug in drill map : inaccurate via shapes (I believe EXCELLON drill file has no problems)
-
-
-2007-Dec-06 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all
-    Solved zoom key command problems (under linux and windows)
-    (seen http://sourceforge.net/tracker/index.php?func=detail&aid=1844960&group_id=145591&atid=762476)
-
-+pcbnew
-    solved bug when loading a footprint in modedit: invisible text attribute was lost (trunk and tag)
-
-
-2007-Dec-4 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    added the D() macro to fctsys.h to ease conditional debug printf()s.
-    worked on http://sourceforge.net/tracker/index.php?func=detail&aid=1844960&group_id=145591&atid=762476
-    but could not resolve it in 1/2 day.
-
-
-2007-Dec-4 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * drc.cpp and dialog_drc.cpp update.
-    Added double click support on a MARKER or unconnected DRC_ITEM in the listboxes.
-    On Linux, it sometimes pops up the menu from PcbGeneralLocateAndDisplay()
-    for some reason after repositioning the cursor.  That is not intended, but
-    after several attempts to work around it, I realized it is not so bad to
-    have this happen.
-  * Added right click popup menus to the list boxes.  User must first select
-    the item he wants to go to, as the right click does not change the selection.
-  * Added WinEDA_BasePcbFrame::CursorGoto( const wxPoint& ) by factoring it
-    out of pcbnew/find.cpp
-    Done now, its ready for folks to start using it and testing it.
-
-
-2007-Dec-02 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    Solved an annotation problem: in multiple parts per package components,
-    when sorted by position, parts were not grouped by package.
-
-
-2007-Dec-2 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    drc.cpp and dialog_drc.cpp intermediate update.
-
-
-2007-Nov-30 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * added virtual GetPosition() to BOARD_ITEM and derivatives.
-  * added classes DRC, REPORT_ISSUE, DRC_ITEM and rearranged drc.cpp entirely
-    to comprize the DRC class.  The result has finer granularity of functions
-    and each is fairly well documented in English, see drc_stuff.h.
-    Keeping old stuff commented out at bottom of drc.cpp until some more usage
-    and testing is done.
-  * Made the DRC dialog modeless, so it can sit off to the side while the MARKER
-    are inspected one by one.
-
-
-2007-Nov-29 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Removed a bug (function block() ) which crashes pcbnew when erasing a zone by block delete
-
-
-2007-Nov-27 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * changed class MARQUEUR to class MARKER name only.
-  * Moved BOARD's MARKERs from m_Drawings to vector<MARKER*> m_markers so
-    they can be easily deleted and navigated to from the drc dialog.
-  * deprecated the MARKER::Unlink() function.
-  * Added
-        BOARD::Add( BOARD_ITEM*, int )
-        BOARD::GetMARKER(int)
-        BOARD::Delete( BOARD_ITEM* )
-        BOARD::DeleteMARKERs();
-  * Changed BOARD::~BOARD() to use DeleteMARKERs().
-  * Revised screen drawing routine to know about BOARD::m_markers.
-  * Revised BOARD::Visit() to know about BOARD::m_markers.
-  * Revised pcbnew/find.cpp to know about BOARD::m_markers.
-  * removed wxYield() from drc.cpp
-
-
-2007-Nov-26 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    DRC code and dialog rework start.  This breaks DRC, until I get out the
-    other end of the tunnel.
-
-
-2007-Nov-24 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * dialog_track_options uses a portable technique for SetFocus(), namely the
-    function OnInitDialog( wxInitDialogEvent& event ).
-  * started work on dialog_drc, not checked in. basic wxHtmlListBox is working with dummied text.
-+all
-    makefile.include's now use CXX instead of CC for compiling.
-
-
-2007-Nov-15 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Removed a bug (function Delete_Zone() ) which crashes pcbnew when erasing a zone by popup menu
-
-
-2007-Nov-13 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema & pcbnew
-  * The "Page Settings" dialog box has been enhanced; it now includes a
-    wxStdDialogButtonSizer, and is also now designed to be expandable.
-+ pcbnew
-  * The "DRC Control" and "Netlist:" dialog boxes have also been enhanced. Each
-    of those dialogs now includes a wxStdDialogButtonSizer and a "Cancel" button,
-    (so each of those dialogs can now (otherwise) be cancelled by pressing the
-    "Esc" key), and is also now designed to be expandable.
-
-
-2007-Nov-11 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    Fixed modedit.cpp bug which occurred when selecting a non pad item (such
-    as a text field) in the module editor, then selecting Dimensions -> Pad Settings
-    in the module editor.
-
-
-2007-Nov-11 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema & pcbnew & gerbview
-  * The "Colors" dialog box has been enhanced; the distance between adjacent
-    controls now increases (and in both horizontal and vertical directions)
-    when that dialog is resized. And the "Cancel" button is no longer centre-
-    justified; it is now right-justifed instead.
-+ eeschema
-  * A wxStdDialogButtonSizer is now used within the "EESchema Colors" dialog box,
-    meaning that the sequence of the "OK", "Cancel", and "Apply" buttons within
-    that dialog now depends upon which (OS) version of KiCad is being used (and
-    thus matching the nature of the corresponding dialogs within Pcbnew and GerbView
-    in that regard). (As of yet, the vertical distance between adjacent controls
-    does not increase when this dialog is resized, but that aspect will also be
-    implemented when time permits.)
-+ gerbview
-  * The "GerbView Layer Colors:" dialog box has been updated, and is now similar
-    in nature to the corresponding dialogs within EESchema and Pcbnew. Tool tips
-    have also been provided for the "Show All" and "Show None" buttons.
-
-
-2007-Nov-10 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    More comprehensive dialog in netlist plugin interface.
-    Eeschema configuration now shows the plugin netlist list
-
-
-2007-Nov-09 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ 3d-viewer
-  * The 3d_canvas.cpp file has been updated to use a const parameter, as suggested
-    within (Bug) Request ID 1828487.
-+ pcbnew
-  * Sizers have now been provided for the "Pcbnew Layer Colors:" dialog box (previously
-    identified as the "Colors:" dialog box), and tool tips have been provided for the
-    "Show All" and "Show None" buttons.
-  * The reglage.cpp file (which is not currently used) has been removed, and replaced
-    with reglage.cpp.notused.
-
-
-2007-Nov-02 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ all
-    removed not used files
-
-
-2007-Nov-07 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ all
-  * The common/svg_print.cpp, common/svg_print.h, and common/svg_print.pjd files (which
-    are not currently used) have been removed, and replaced with svg_print.cpp.notused,
-    svg_print.h.notused, and svg_print.pjd.notused. And common/makefile.include has
-    also been updated so that none of those files are now listed at all.
-+ eeschema
-  * A "Cancel" button has now been provided within each of the "Component properties",
-    "EESchema Annotation", "EESchema Erc", "Global Label properties", "Label properties",
-    and "Text properties" dialog boxes, and each of those dialogs can now (otherwise) be
-    cancelled by pressing the "Esc" key. (In due course, each of those dialogs will be
-    refined yet further; this is just an incremental enhancement.)
-  * The eestatus.cpp file (which is not currently used) has been removed, and replaced
-    with eestatus.cpp.notused.
-
-
-2007-Nov-05 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema
-  * The previously provided "Close" button within the "Netlist" dialog box has
-    now been replaced with a "Cancel" button, and this dialog can now (otherwise)
-    be cancelled by pressing the "Esc" key. General cleanup and beautification of
-    eeschema/netlist_control.cpp.
-+ pcbnew
-  * The color of each text string provided within the "Swap Layers:" dialog box is
-    now set to blue for each string specifying that the associated layer is *not*
-    being swapped with any other layer, or to fushia for each string specifying that
-    the associated layer *is* being swapped with another layer. (This change was
-    made after being suggested by Dick Hollenbeck.)
-+ gerbview
-  * The color of each text string provided within the "Layer selection" dialog box
-    is similarly now set to blue for each string specifying that the associated
-    Gerber layer is *not* being exported to any pcbnew layer, or to fushia for each
-    string specifying that the associated Gerber layer *is* being exported to a
-    pcbnew layer.
-
-
-2007-Nov-2 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    fixed a crashing bug which happened if you "dragged" a module with
-    tracks.  Then deleted one of the pad connected tracks, then deleted the
-    next track attached to the first one.  Memory was being corrupted because
-    PcbGeneralLocate() and display was not being called on the 2nd track to
-    be deleted because the m_Flags test:
-        bool ItemFree = (GetCurItem()==0  || GetCurItem()->m_Flags==0);
-    was returning false. Solution was to SetCurItem(NULL) after deleting a
-    TRACK.  This makes sense, SetCurItem() is used for designating a "selected"
-    item, and a deleted TRACK is not even in the BOARD anymore and should not
-    be selected or selectable.  I think this bug may have been causing spurious
-    crashes for the last couple of months.
-
-
-2007-Nov-02 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all:
-    solved: eeschema, pcbnew and cvpcb did not find libraries when they were
-    in the default library path, but in a subdirectory
-    (this is because the default path was not added to the name if the name had
-    already a path)
-
-
-2007-Nov-02 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-  * Sizers have now been provided for the "Swap Layers:" dialog box, and the
-    previously provided radiobuttons have been replaced with buttons and static
-    text strings. (In the previous version of this dialog, radiobuttons were being
-    used in an inappropriate manner. The most "orthodox" way of implementing the
-    functionality within this dialog would be to provide a combobox for each layer,
-    but as up to 30 strings would be needed within the dropdown list associated with
-    each of those controls (one string for each of the layers, and another string to
-    deselect the layer), such controls would be less than user-friendly. Hence a
-    button is now provided for each layer instead (and which, like the previously
-    provided radiobutton, invokes the "Select Layer:" dialog box after being clicked
-    on). Two static text strings are also provided for each layer, with one of them
-    being used to identify that layer, and the other being used to identify which
-    layer that each layer is currently being swapped to.) The previously provided
-    "Select" and "Deselect" buttons are no longer required, and are thus no longer
-    provided.
-+ gerbview
-  * The "Layer selection" dialog box (invoked during the "Export to Pcbnew" command)
-    has similarly been updated. (This dialog did use spacers before, but once again,
-    the previously provided radiobuttons were being used in an inappropriate manner.)
-
-
-2007-Nov-01 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-  * Provided new definitions of FIRST_COPPER_LAYER and LAST_COPPER_LAYER within
-    include/pcbstruct.h, and used those definitions within various other files.
-    Beautified and generally refined 3d-viewer/3d_draw.cpp and pcbnew/plotgerb.cpp.
-
-
-2007-Oct-31 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+kicad:
-    rename mdiframe.cpp to mainframe.cpp
-    create commandframe.cpp to handle the command frame (which have the 4 "fast launch" buttons)
-
-
-2007-Oct-31 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ all
-  * Added Doxygen configuration file, whose standard name is Doxyfile.  Output
-    is set to go to ./doxygen directory just off the project tree.
-  * Added a note to todo.txt which asks folks to start using "Doxygen compatible"
-    comments in member functions and classes.  Run Doxygen on the project, then
-    look at the documentation for class INSPECTOR as an example.
-+ pcbnew
-  * zones.cpp, Trace_Pcb(), & EDGE_ZONE class:
-    Reversed the usage of EDGE_ZONE::Pnext and Pback in the list management to be
-    consistent with other classes and with BOARD_ITEM::IterateForward() and
-    BOARD::~BOARD().
-  * Fixed a display bug when high contrast mode is enabled and the track tool
-    is selected.
-
-
-2007-Oct-31 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all:
-    gcc 4.2.1 compatibility: change char * to const char * whenever it was necessary,
-    mainly in .xpm files
-
-
-2007-Oct-30 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    added BOARD_ITEM::Save() and to all derived classes as well.  Made virtual
-    and removed all UI code from these utility functions.
-    removed WriteDesc() functions from all BOARD_ITEM derived classes, although
-    Keeping old ones in commented out form for a while for reference.
-    @todo: delete these from *.cpp files eventually.
-    zones.cpp, clean up in prep for enhancements.
-+ gerbview
-    fixed bug which came about when BOARD::~BOARD() started deleting the objects
-    that a BOARD owns.  export_to_pcbnew.cpp was not consistent with this
-    design and was crashing.  Also, export_to_pcbnew.cpp now uses the simple
-    BOARD::Save() function.  It was another place to maintain the PCB file format,
-    rather than simply putting that knowledge into one place like BOARD::Save().
-+ all
-    beautified gr_basic.cpp and made CLIP_LINE macro a static inline function.
-
-
-2007-Oct-30 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+cvpcb: listboxes.cpp problem solved: exists only under windows
-    now apply to windows only, because this Workaround creates a problem undex linux
-+others:
-    some very minor problems solved
-+eeschema:
-    in B.O.M.: the footprint field can be added to the field list
-
-
-2007-Oct-29 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+cvpcb: listboxes.cpp problem solved: Workaround for a curious bug in wxWidgets:
-     if we switch from a long list of footprints to a short list (a filtered footprint list),
-     and if the selected item is near the end of the long list,
-     the new list is not displayed from the top of the list box
-+eeschema:
-    Implemented: graying in/out of "Edit/Undo", "Edit/Redo" menu items,
-    when Undo/Redo stack is empty/filled.
-+pcbnew:
-    Implemented: action for ID_POPUP_PCB_DELETE_MARKER
-
-
-2007-Oct-27 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ all:
-    remove unused files.
-    some translations
-+cvpcb:
-    set flag wxFRAME_FLOAT_ON_PARENT when create the footprint 3D frame and the
-    display frame
-    minor other changes
-+ pcbnew:
-    Use collector class to locate items in modedit.
-    This is a big enhancement,
-    but a small work for me because Dick made all the work.
-
-
-2007-Oct-26 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew:
-    Add class_marker.cpp and class_marker.h and move MARQUEUR functions in class_marker.cpp
-    Change MARQUEUR::HitTest to take in account the zoom level.
-    change global var EDA_Appl to g_EDA_Appl
-
-
-2007-Oct-25 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ cvpcb
-  * Fine-tuned contents of dialog_display_options.cpp, dialog_display_options.h,
-    and dialog_display_options.pjd, so that the controls within the associated
-    ("Display Options") dialog box now also expand if that dialog is expanded.
-+ all
-  * The share/selcolor.cpp file (which is no longer used) has been removed, and
-    replaced with share/selcolor.cpp.notused
-
-
-2007-Oct-24 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ cvpcb:
-    2 missing .prj files added (and updated)
-    dialog_display_option.cpp is rebuild from its dialog_display_option.prj source
-
-
-2007-Oct-23 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema
-  * Sizers have now been provided for the "EESchema Preferences" dialog box,
-    together with "OK", "Cancel", and "Apply" buttons. And an additional bitmap
-    button and checkbox have also been provided for the purpose of editing the
-    color and visibility of the grid.
-
-
-2007-Oct-21 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ all
-  * Provided an MAYBE_RESIZE_BORDER field within all of the .pjd files (used by
-    DialogBlocks), and restored the MAYBE_RESIZE_BORDER field to cleaningoptions_dialog.h
-
-
-2007-Oct-21 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ all
-    added UIpolicies.txt
-
-
-2007-Oct-21 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew:
-    rename dialog_clean_pcb.pjd to cleaningoptions_dialog.pjd,
-    accordind to the corresponding cpp filename.
-    enter the new tool tips in cleaningoptions_dialog.pjd.
-+all:
-    USE_RESIZE_BORDER is now defined (default) in fctsys.h.
-    Therefore, under windows, dialogs are now resizable (like under unix)
-
-
-2007-Oct-21 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema & pcbnew & gerbview
-  * Sizers have now been provided within the "Colors" dialog box.
-
-
-2007-Oct-19 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * "Clean tracks" changed to "Track operations".
-  * Housekeeping on clean.cpp completed.
-    Added static void ConnectDanglingEndToVia( BOARD* pcb ) in clean.cpp which
-    extends tracks to via centers.  Call it from "extend to pads", works nice.
-  * Added tooltip text to cleaningoptions_dialog.cpp's m_ConnectToPadsOpt
-    but don't know if DialogBlocks will parse this backwards.
-  * Made compilable, somebody broke #define VIA_???? s throughout.  Would not compile.
-  * SEGVIA::SetPos() & GetPos() added.
-
-
-2007-Oct-17 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew:
-    Removed enhancements in connectivity computation because
-    rastnest computation does not work (errors) with short track segments
-    (lenght < width) . This is not a bug, but an algorithm problem, so
-    I must work on algos.
-
-
-2007-Oct-17 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-  * Rolled back previous changes (made in revision 336) that edited the values of
-    vias' Shape property (following feedback from Jean-Pierre Charras concerning
-    the true significance of that property).
-
-
-2007-Oct-13 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew:
-    remove a change for Read VIA because via attributes
-    (TROUGH VIA, BLIND VIA or BURIED VIA) are autorisations for layer connection,
-    and are not a real layer indicator.
-    If a via connect layers from copper to component, it can have a BURIED VIA attribute.
-    the meaning is for this via the layer pair can be changed for other layer pair
-    if after editing this via connect 2 tracks which are only int internal layers,
-    its layer pair can be changed.
-    If a via has a TROUGH VIA attribute, it connects ALL layers, whenever tracks
-    connected to it.
-    Note: curenty: only TROUGH VIA are handled.
-    Other types (BLIND VIA and BURIED VIA) are only experimental.
-    A **lot** of code is needed for a full support.
-    enhancements in connectivity computation
-
-
-2007-Oct-15 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-  * Made some changes involving vias so that these would have the correct value
-    of the Shape property assigned to them - while being created, and while files
-    are being saved, and while files are being loaded.
-
-
-2007-Oct-14 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew:
-  * housekeeping and translation to English on bottom third of pcbnew/clean.cpp.
-    No algorithm changes were intended, only improved readability.
-  * my todo: figure out how to intercept double clicks on a wxWidgets text control
-    so I can complete the work I started on MARQUEUR error tracking.
-
-
-2007-Oct-13 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew:
-    ratsnest.cpp translated into english.
-    Many infos on the LEE algorithm used here added.
-    todo (by myself): connect.cpp translation.
-    onrightclick() bug (created by last change) solved: one could reselect an item,
-    while moving a previously selected item (pcbnew crashes).
-
-
-2007-Oct-13 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema
-  * The previously provided "Quit" button within the "List of Material" dialog box
-    has been replaced with "OK", "Cancel", and "Apply" buttons. Greater consistency
-    has also been achieved after clicking on the "Create List" button; none of the
-    prevailing settings are subsequently saved (previously, some, but not all, of
-    the settings were subsequently saved). (However, settings can still be saved by
-    clicking on either of the "OK" or "Apply" buttons instead.) Assorted cleanup
-    and beautification of associated source code.
-  * The genliste.cpp file (which is no longer used) has been removed, and replaced
-    with genliste.cpp.notused
-
-
-2007-Oct-12 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ all
-  * m_NetCode is now private or protected throughout.
-    added SetNet() and GetNet() to all classes which have this member name.
-    ditto for m_Sous_NetCode, for which there is now SetSubNet() and GetSubNet().
-+ pcbnew
-    added more disambiguating text to the PcbGeneralLocateAndDisplay() popup
-    menu for tracks. We need all the info we can get there I found after using
-    the software for many hours.
-
-
-  Jean-Pierre:
-
-  I never thought I would find a greater problem in using Kicad than having to
-  lay down all the ground and power tracks, rather that just linking vias into
-  pre-established zones or "tagged layers".
-
-  But I have, hundreds of my tracks and vias are showing
-  unconnected under my BGA, (where say the track or via is NetCode==0) and it
-  should not be, because the damn track ties the BGA pad to a nearby via.
-  How can the software be made to think these three items are on the same net,
-  without re-entering all the damn tracks?
-
-  This issue has been coming up for months on the user list, it must be dealt with now.
-  There is always the same lame answer, "make sure your tracks go to the center of the pads".
-  Nonsense, the software picked the track end points, not me, and grid was on when it did it.
-  There are bugs here.
-
-  Does Recalcule_all_net_connexion() work, and why is not called from anywhere?
-
-
-
-2007-Oct-11 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * D_PAD::Draw() refinements.
-  * WinEDA_DrawFrame::SetToolID() will redraw the DrawPanel if the track
-    button is selected or de-selected and the high-contrast mode is in play.
-  * If high-contrast mode is in play, the Select Layer Pair dialog completion
-    will redraw the DisplayPanel, now that SMD pads' colors are so dependent
-    on these variables.
-
-
-2007-Oct-11 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * D_PAD::Draw() so that it shows SMD pads as greyed out when in high contrast
-    mode and not on current layer.  Slight variation on this when laying down
-    tracks: m_Route_Layer_BOTTOM or m_Route_Layer_TOP layers' SMD pads are
-    not greyed out.
-  * Changed English UI text for "Cotation" to "Dimension".
-
-
-2007-Oct-11 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-  * The "Target Properties" and "Pads Global Edit" dialog boxes can now (otherwise)
-    be cancelled by pressing the "Esc" key, and the caption of the "OK" button
-    within the latter dialog box has been capitalised (so that an icon is now
-    provided within that button within the Linux version of KiCad).
-  * The pcbpiste.cpp file (which is no longer used) has been removed, and replaced
-    with pcbpiste.cpp.notused
-+ cvpcb
-  * The affiche.cpp file (which is no longer used) has been removed, and replaced
-    with affiche.cpp.notused
-
-
-2007-Oct-11 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-  * The previously provided "Exit" button within the "Colors:" dialog box has been
-    replaced with "OK", "Cancel", and "Apply" buttons, and the code for editing the
-    visibility of the Grid layer from that dialog now is "cleaner" than before.
-    Details associated with buttons within that dialog box moved from set_color.cpp
-    to set_color.h (matching implementation for GerbView's corresponding dialog box).
-  * Fixed bug which previously prevented the Copper layer from being selected as the
-    current layer when only one copper layer is enabled (and made some modifications
-    to the code for selecting the next copper layer and previous copper layer).
-+ gerbview
-  * The code for editing the visibility of the Grid layer from the "GerbView Layer
-    Colors:" dialog box is "cleaner" than before, and assorted other beautification.
-+ eeschema
-  * The options.cpp file (which is no longer used) has been removed, and replaced
-    with options.cpp.notused
-
-
-2007-Oct-10 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * bug fix: prevent OnRightClick() from calling PcbGeneralLocateAndDisplay()
-    when creating a new track.
-  * bug fix: popup menu was not handling Mires, because the collector was not
-    being asked to find them.
-  * added TRACK::ShowWidth() and call it from BOARD_ITEM::MenuText().  There was
-    not enough information in Selection Clarification at a busy junction to
-    make a reasonable choice.
-  * SEGVIA::MenuText() shows via width, rather than net_code.
-  * Beautified ratsnets.cpp, I would like to understand it better.  It would help
-    if the comments were in English.
-+ all
-  * Changed English UI text "Mire" to "Target" according to this post:
-    http://tech.groups.yahoo.com/group/kicad-users/message/1380
-  * rewrote msgpanel.cpp so it retains wxStrings and therefore can repaint its
-    window when being uncovered, resized or whatever.
-
-
-2007-Oct-9 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    changed pcbnew/onrightclick.cpp so that a right click only shows the
-    Selection Clarification menu if there is no selected object or if the
-    click is in a position different from where the selection was previously
-    made.
-
-
-2007-Oct-09 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema:
-    cross-probing minor bug solved ( due to last modification): pins/pads not probed
-
-
-2007-Oct-08 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ gerbview
-    Display on screen now updates properly (in Linux version) after clicking on
-    the "OK" button provided within the "GerbView Layer Colors" dialog box.
-
-
-2007-Oct-7 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema
-    create new file cross-probing.cpp
-    move RemoteCommand() to cross-probing.cpp and create SendMessageToPCBNEW()
-
-+ pcbnew
-    bug in move pad fixed (could crash pcbnew)
-    Small change in selection clarification (side effect removed):
-    - Escape or click on title does not show the next popup menu.
-    - the title is displayed under linux
-    - definition CUIVRE_N translated into COPPER_LAYER_N
-
-
-2007-Oct-07 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ all
-  * Various dialog boxes can now (otherwise) be cancelled by pressing the "Esc" key.
-    (Some dialog boxes still require attention in that regard though, so that task
-    is not yet complete.) And the captions of the "OK" button within various dialog
-    boxes have been fully capitalised (meaning that an icon is now provided within
-    each of those buttons within the Linux version of KiCad).
-  * DIALOG_STYLE (defined within include/wxstruct.h) now includes MAYBE_RESIZE_BORDER
-    field. (Refer to 2007-Oct-2 UPDATE notes for the relevance of this.)
-  * Beautification and house keeping.
-+ eeschema
-  * The editpart.cpp and libedpart.cpp files (which are no longer used) have been
-    removed, and replaced with editpart.cpp.notused and libedpart.cpp.notused
-+ cvpcb
-  * Additional "OK", "Cancel", and "Apply" buttons have now been provided for the
-    "Options" dialog box which lists various display options for footprints.
-+ pcbnew
-  * Invoking the "Select Layer Pair:" dialog box is no longer possible whenever only
-    one (copper) layer is currently enabled. And it is no longer possible to select
-    the same layer to be both the Top Layer and Bottom Layer (for any Layer Pair).
-  * Deselecting layers during the "Swap layers" command is now more user-friendly,
-    due to the provision of an additional "(Deselect)" radiobutton within the (child)
-    "Select Layer:" dialog box (which is always invoked whenever a different
-    radiobutton within the "Swap Layers:" dialog box is clicked on). (It had
-    previously been necessary to cancel the "Select Layer:" dialog box before being
-    able to click on the "Deselect" button within the "Swap Layers:" dialog box.)
-  * Definition for NB_LAYERS changed from (EDGE_N + 1) to (LAST_NO_COPPER_LAYER + 1)
-    (Although EDGE_N is currently the "last" layer, that wouldn't necessarily still
-    be true if any additional layers are ever defined in the future.) And comparisons
-    to 29 (or 28) have been replaced with comparisons to NB_LAYERS (when appropriate).
-+ gerbview
-  * The previously provided "Exit" button within the "GerbView Layer Colors" dialog
-    box has been replaced with "OK", "Cancel", and "Apply" buttons; and both the
-    visibility and color of the Grid layer can now be edited from the same dialog.
-  * Deselecting (Gerber) layers during the "Export to Pcbnew" command is now more
-    user-friendly, due to the provision of an additional "(Deselect)" radiobutton
-    within the (child) "Select Layer:" dialog box (which is always invoked whenever
-    a different radiobutton within the "Layer selection:" dialog box is clicked on).
-    (It had previously been necessary to cancel the "Select Layer:" dialog box before
-    being able to click on the "Deselect" button within the "Layer selection:" dialog
-    box.)
-  * The "Export to Pcbnew" command now requires at least one Gerber file to have been
-    already loaded. And Gerber files can now be loaded into any of the 32 (Gerber)
-    layers provided. (It had previously been necessary to avoid having any gaps within
-    the sequence of used Gerber layers.)
-
-
-2007-Oct-6 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew
-    create new file cross-probing.cpp
-    move RemoteCommand() and SendMessageToEESCHEMA() to cross-probing.cpp
-
-
-2007-Oct-3 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    made BOARD_ITEM::UnLink() virtual
-    added BOARD_ITEM::DeleteStructure().
-    added EDA_BaseStruct::DeleteStructList()
-    deleted gerbview/struct.cpp, pcbnew/struct.cpp,
-    BOARD::~BOARD() now deletes objects that it owns.
-    Collectors now finds MARQUEURs also
-    added MARQUEURS::Display_Infos()
-    added MARQUEURS::HitTest()
-
-
-2007-Oct-2 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ all
-    The lack of border resizing in dialogs has been a problem.  In my world,
-    dialog boxes are resizable.  I use large fonts, I like to see stuff.
-    So now for __UNIX__ they are resizeable, for windows not.
-    See fctsys.h and the #define for MAYBE_RESIZE_BORDER.  For windows it defaults
-    to zero which means resizeable is not featured.  A compiler command line
-    option of "USE_RESIZE_BORDER" can override this windows default.
-
-
-2007-Oct-01 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew/eeschema
-    Cross-probing pcbnew to eeschema:
-        A left click on a pad in pcbnew moves the eeschema cursor on the corresponding component pin
-        A left click on a footprint ref or value in pcbnew moves the eeschema cursor on the corresponding component ref or value
-        A left ckick on a footprint moves the eeschema cursor on the corresponding component anchor
-+ pcbnew
-    removed drc.cpp change line 584, and translate comments in english.
-    nothing broken:
-        -> a pad with its netcode = 0 means the pad ** must be left unconnected ** (not attached to *  a net).
-        -> a track with its netcode = 0 means the track is not attached to a net (cannot be connected to any pad).
-
-
-2007-Sep-30 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    Added dedicated Show() function for SEGVIA.  Enhanced BOARD_ITEM::MenuText()
-    for SEGVIA.
-
-
-2007-Sep-29 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * drc.c made a change near line 584 to comment out pt_pad->m_NetCode test against
-    zero.  This was preventing me from laying out my board.  It's possible that
-    this broke something else, but it is also clear that something was broke before
-    this change, because I could not put down some tracks.
-  * beautification, house keeping.
-
-
-
-2007-Sep-29 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew
-    create new file onleftclick.cpp
-    move onleftcligk() and onleftDcligk() from edit.cpp to onleftclick.cpp
-
-
-2007-Sep-27 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ all
-    test case for OnLeftClick() handling enhancements.
-    TAB key removed, because is not needed for block selection and double click.
-    (SHIHT ou CTRL or ALT key is sufficient to suppress the popup menu
-    if needed for a double click )
-    Some work is still needed, of course
-+ pcbnew
-    Color grid setting now works
-
-
-2007-Sep-26 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ all
-    test case for OnLeftClick() handling from a release circumstance.
-    a few simple changes to void WinEDA_DrawPanel::OnMouseEvent( wxMouseEvent& event ),
-    but they affect all programs in a subtle way.
-    TAB key allow double clicking, but is not needed for block selection.
-
-+ pcbnew
-    GENERAL_COLLECTOR::GetCount() returns int, not unsigned.  Was tired of the
-    compiler complaining when using an int ndx.
-
-
-2007-Sep-25 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * removed reference to global display options DisplayOpt.DisplayZones in
-    collectors.cpp so collectors.cpp can continue to be used in multiple future
-    (non-display related) general contexts.  I don't want unnecessary dependencies
-    in there.  The way to completely ignore a type is to exclude it from scanList.
-    The way to sometimes ignore a type is to add support for this in COLLECTORS_GUIDE.
-  * Moved TYPEZONE to end of AllBoardItems, added GENERAL_COLLECTOR::AllButZones to
-    provide support for DisplayOpt.DisplayZones.
-  * Added aHotKeyCode to PcbGeneralLocateAndDisplay()
-+ gerbview
-  * viewer was getting stuck in a loop when loading a bad gerber file.  Fixed
-    the bug, but line 223 through 225 of readgerb.cpp needs review.
-  * beautified a few files with uncrustify, (any I had to look at).
-
-
-2007-sept-25 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew:
-    * add class_board_item.cpp file and move BOARD_ITEM::MenuText() and BOARD_ITEM::MenuIcon() in it
-    * Add zone detection, forgotten in PcbGeneralLocateAndDisplay()
-+ class_collector.h:
-    add  void COLLECTOR::Remove( unsigned int item_position ), needed by zone detection, see PcbGeneralLocateAndDisplay
-
-
-2007-Sep-25 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ gerbview
-    The "Exit" button previously provided within the dialog box invoked from the
-    "Preferences -> File ext" menu entry has now been replaced by "OK" and "Cancel"
-    buttons. Similarly, the "Accept" button previously provided within each of the
-    dialog boxes invoked from the "Preferences -> Options" and "Preferences -> Display"
-    menu entries has now been replaced by an "OK" button. And each of those three
-    dialog boxes can now (otherwise) be cancelled by pressing the "Esc" key.
-
-
-2007-sept-22 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ all
-    * small change in hotkeys handling
-        (Ki_HotkeyInfo: new member m_IdMenuEvent to call an existing event handler from a hotkey list)
-
-+ eeschema:
-    * added drag component in pop up menu and hotkeys
-    * plot svg format: incorrect arc draw fixed
-
-
-2007-Sep-22 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    GENERAL_COLLECTOR::Collect() was skipping thru hole pads even though they
-    were visible.
-    Highlight tool now sends message to eeschema when a pad is selected.
-
-
-2007-Sep-20 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ eeschema
-  * beautify, add debug Show() functions, changed ReturnFieldName()
-    to return "const wxString&" for speed, added GetFieldValue().
-  * tracking down questionable behavior (a bug?) in erc regarding pwr_flag, still looking
-
-
-2007-sept-20 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ all
-    * hotkeys handling finished
-+ pcbnew
-    * bug fix: a subtle bug in place via : partial drc only was made.
-
-
-2007-Sep-14 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * controle.cpp, added Function AllAreModulesAndReturnSmallestIfSo() which is
-    called from PcbGeneralLocateAndDisplay()
-  * onrightclick.cpp changed to calls to BOARD_ITEM::MenuText(), and switched
-    to member functions for createPopupMenus() so we can get all the state
-    information we need for the proper menus.
-  * BOARD_ITEM::MenuText() got new argument BOARD*, and elaboration for
-    TRACKs and VIAs and Pcb Graphics.
-  * Fixed a problem in GENERAL_COLLECTOR::Inspect() so it now knows that MODULEs
-    have their own visibility controls (same for pads and pcb texts).  This
-    interpretation must always match the drawing code's interpretation.
-  * Made TRACK::TRACK( const TRACK& ) protected to enforce use of TRACK::Copy()
-
-
-2007-Sep-13 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ kicad
-  * Inverted the logic associated with filters.  Filters now enable a file
-    in the project manager.  The default is to ignore all files.
-  * The filter for *.sch files is smarter, in that it looks to display only
-    top level *.sch files, rather than all *.sch files.
-+ Others
-    More beautification
-
-
-2007-sept-13 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ all
-    * EDA_BaseStruct.SetType() removed.
-    The m_StructType member of class EDA_BaseStruct is no more modified in kicad.
-    Now Virtual functions can be widely used.
-    * The old EDA_BaseStruct.ReturnClassName() was removed.
-    the virtual EDA_BaseStruct.GetClass() is used instead.
-
-+ gerbview: hotkeys Ok.
-
-
-2007-Sep-13 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema & pcbnew & gerbview
-    A Cancel button has now been provided for the "Colors" dialog box, which also
-    permits it to (otherwise) be cancelled by pressing the "Esc" key; the button
-    whose color matches that of the color currently selected (for the layer being
-    edited) also has the initial focus set to it.
-
-
-2007-Sep-11 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * Changed PcbLocateAndDisplay() to be tool specific in its search and to present
-    a popup menu when there are multiple items under the mouse.  It is also
-    a framework for future enhancements.
-    @todo: grep for @todo and finish off those tasks.
-  * Introduced a formal notion of "selected item".  This is done with the addition
-    of the WinEDA_BasePcbFrame::SetCurItem() function.  So now you have to first
-    select an item with the left mouse button before you attempt to use the
-    right button popup menu.  Right button no longer has an effect on the
-    currently selected item.  The currently selected item is shown in the MsgPanel.
-    When none is selected, the m_Pcb is shown.
-  * Tweaked the OnRightClick() popup menus so that the most likely choices are
-    at the top.
-  * Added wxString BOARD_ITEM::MenuText() const and BOARD_ITEM::MenuIcon() and
-    both need more work, work which I will not have time to do.
-
-
-2007-Sep-10 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * Searched and did not see any usage of TRACK::Copy(int), where int was other
-    than '1', so renamed it to TRACK::CopyList(int) and commented it out because
-    with int==1, this makes Copy(1) equivalent to the new Copy(void).
-  * Made TRACK::Copy() capable of copying SEGZONE too.
-
-
-2007-sept-10 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ gerbview
-    Programmable hotkeys added. Fixed a compilation probleme in ansi mode (non unicode mode).
-
-
-2007-Sep-8 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * Made good progress in onrightclick.cpp for multiple items under the mouse.
-  * Fixed some macros in macros.h so they can be followed with a semicolon and
-    used like simple expressions.
-    All changes not yet committed.
-
-2007-sept-6 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema & pcbnew
-    Programmable hotkeys update.
-    some features are still subject to change (mainly path for config files: see 2007-aug-30 UPDATE))
-    The preference menu has a command to create and reread config hotkey files.
-    the hotkey ? lists the current hotkeys.
-
-
-2007-Sep-4 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * Made GENERAL_COLLECTORS_GUIDE and GENERAL_COLLECTOR useable.  They can now
-    serve as a fully functional replacement for PcbGeneralLocateAndDisplay(),
-    see DEBUG code in BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay().
-  * Made GENERAL_COLLECTOR capable of Collect()ing from a MODULE as well as a BOARD.
-  * pcbnew/onrightclick.cpp changed English from "Free Module" to "Unlock Module".
-  Next I hope to add some UI to handle multiple items under the mouse in onrightclick.cpp
-
-
-2007-sept-04 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew
-    better comments in editrack-part2 (the todo remark solved)
-+ todo.txt: note about editrack-part2 modified (problem solved)
-
-
-2007-Aug-31 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & gerbview
-  * Added TRACK::Copy() which can copy a SEGVIA or a TRACK.
-  * Changed export_to_pcbnew.cpp so it created a SEGVIA properly, a significant change.
-    Moved and changed a big block of code in export_to_pcbnew.cpp so we can
-    properly construct the SEGVIA().  Not tested.
-  * Make EDA_BaseStruct::m_StructType private so we can trap where it is being
-    changed.  (It should never be changed after construction, see comment above
-    EDA_BaseStruct::SetType().)
-
-
-2007-Aug-30 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-  * Removed SEGVIA::IsViaOnLayer, and instead implemented an override to
-    virtual BOARD_ITEM::IsOnLayer() called SEGVIA::IsOnLayer().
-  * Tweaked TRACK::Visit() to not traverse the KICAD_T scan list and a
-    corresponding change to BOARD::Vist() so we can now get VIA priority
-    if desired.  (Have to traverse m_Tracks twice, wonder if we could use
-    two lists: m_Tracks and a new m_Vias?)
-  * Changed signature of MODULE::Display_Infos( WinEDA_DrawFrame* frame ) so
-    it gets called virtually with any BOARD_ITEM* which is actually a MODULE*.
-    This was a bug.
-  * With virtual functions, it is now critical that the correct object type
-    be instantiated.  This was not happening in ioascii.cpp when reading
-    the vias.  Bug fixed.
-  * GENERAL_COLLECTOR getting closer to useable.
-
-
-2007-aug-30 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema & pcbnew
-    more about programmable hotkeys.
-    Most existing hotkeys are programmable and displayed in popup menus or tools
-    Work still in progress but most features are ok.
-    some features are not fixed (mainly the configuration files path, which is
-    currently the home directory under unix systems and kicad/template under windows))
-
-
-2007-Aug-29 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    Started abstract class COLLECTORS_GUIDE.
-    Renamed classtrc.cpp to classtrc.cpp.notused
-    Changed some comments in class BOARD's header to english, clarifying
-    linked list contents.
-
-
-2007-aug-27 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ all
-    Display grid size in mils or mm in popup menu according to the current unit choice
-
-
-2007-Aug-24 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ eeschema & pcbnew
-  * Removed class EDA_BaseLineStruct, which brought no behavioral advantage, only data.
-    Classes which were based on it got its data members added and their initializers.
-  * Changed type of EDA_BaseStruct::m_StructType from int to KICAD_T which is an
-    enum.  This makes debugging easier since gdb will show the name of the
-    KICAD_T rather than simply a number.  Added NOT_USED = -1 to KICAD_T enum for
-    3d which was using -1.
-  * More beautification using latest uncrustify and the committed uncrustify.cfg
-
-
-2007-Aug-24 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-    A new option has now been provided which permits Gerber files to be generated
-    in which the contents of the Edges Pcb layer are not also included with the
-    contents of each other layer.
-
-
-2007-Aug-23 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ eeschema & pcbnew
-  * Fixed MODULE::Visit() and BOARD::Vist() so they traverse certain lists
-    only once and they are working nicely now.
-  * You can test the GENERALCOLLECTOR::Scan() code by compiling with DEBUG=1 on
-    the command line and enabling the stuff near line 124 in
-    pcbnew/controle.cpp, then watch Show( std::cout ) show the selected items in
-    xml format on your console. (launch pcbnew from command line.)
-    @todo:
-    The layer selection mechanism used by the collector is still inadequate, so
-    tomorrow I will add a new class COLLECTORS_GUIDE which can be used by a
-    COLLECTOR to control its operation. It adds the concept of layer
-    locking, even though PCBNEW does not support that in the UI yet.
-
-
-2007-Aug-22 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ eeschema & pcbnew
-  Things are still pretty transient, should be stable a day or two:
-  * Fixed a filename case sensitivity problem that would show up on Linux
-    but probably not on Windows: bitmap/Reload.xpm needed uppercase R.
-  * Wedged a new class BOARD_ITEM underneath all PCB drawable classes. This is
-    a big change and may introduce a bug or two, but it is worth it for the
-    future, because we can add virtual functions there that do not impact
-    the entire project (since everything is derived from EDA_BaseStruct).
-    The corresponding class in EESCHEMA seems to be DrawPartStruct, so we had
-    nothing in PCBNEW like that.
-    BOARD_ITEM::GetLayer() and SetLayer() introduced, more functions to come.
-    Much of this work is geared towards making collectors.cpp's ARROWCOLLECTOR::Inspect()
-    very very simple, and that can be a model for future work.
-  * Changed min() and max() macros to MIN() and MAX() because min() and max()
-    are actually reserved according to the C++ standard! (and their usage prevented
-    the use of #include <vector>).
-  * Added files class_collector.h, collectors.h, and collectors.cpp.
-    File collectors.cpp is still unfinished.
-  * Started using a function and class comment style that will make sense to the
-    Doxygen source code documenter program.
-  * Beautified more un-beautified files.
-
-
-2007-aug-21 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema & pcbnew
-    First version of programmable hotkeys by editing hotkey configuration files.
-    some hotkeys are not programmable (Zoom)(work in progress)
-
-
-2007-Aug-21 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ administrative
-    Added copyright.h as a proposed copyright header for Mr. Charras's review.
-    Added uncrustify.cfg, the configuration file for the "uncrustify" C++ beautifier.
-
-
-2007-Aug-20 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & eeschema
-  * Moved allowed m_Flags values from pcbnew.h, general.h, and eeschema/delete.cpp to base_struct.h
-    near m_Flags itself.  Several of the flags values were changed.  I am only
-    comfortable with this change if m_Flags is not written to disk anywhere,
-    and we need to give that some thought.  If m_Flags is a memory only usage
-    and not saved to disk, then this change should be safe.  I could not find
-    any case where m_Flags was being saved to disk, but I could have missed one.
-    The reason for the change was to consolidate into one place the allowed values
-    so that as new flags are allocated there is no conflict.
-  * Moved most all the pcbnew/affiche.cpp functions to virtual member functions of their
-    respective classes with the name Display_Infos().
-  * Moved GetEquipot() global function to BOARD::FindNet().
-  These changes are working towards a concise locate.cpp module, on the way
-  to implementing the multiple choice support.  Mass edits should be slowing down
-  in a day or so.
-
-
-2007-Aug-20 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ eeschema & pcbnew
-    The comments provided within postscript files now fully comply with Adobe's
-    Document Structuring Convention.
-
-
-2007-aug-20 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema & pcbnew
-    modify hotkeys.cpp code (large modifications).
-    Added: common code in hotkeys_basic.cpp (in common) and hotkeys_basic.h (in include)
-    In the future, i hope hotkeys will be programmed by a config file
-
-+ pcbnew
-    filename drc_dialog.prj changed to dialog_drc.prj
-        (according to the fulename dialog_drc.cpp and dialog_drc.h created by dialogblock from the .prj)
-
-
-2007-Aug-19 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ all
-  * Made BASE_SCREEN::m_CurrentItem private so we can force usage of the new
-    SetCurItem() function, and use it to put a breakpoint on the only place
-    that m_CurrentItem is changed, namely in the new SetCurItem() function.
-    ( Added new function GetCurItem() as well to class BASE_SCREEN in
-    drawpanel_wxstruct.h.)  Using a stack trace at the breakpoint we can tell
-    who called it.  There were in excess of 450 edits to get this done so I
-    had to commit it asap so other folks could get on with edits without a
-    merge conflict.
-  * Started work on the COLLECTOR class which will assist in giving a choice
-    in PCBNEW when there is more than one click candidate at the same mouse
-    or cursor coordinates.  COLLECTOR not committed yet.
-  * More beautification.
-  * The mouse click and part synchronization from EESCHEMA to PCBNEW would
-    track fine but would not always position the PCBNEW part on screen.  Now
-    we center it unconditionally.  No change was made in the reverse direction
-    since that code uses the long established Find support.
-
-
-2007-Aug-14 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ eeschema & pcbnew
-  * Added mouse click, TCP/IP socket based,  part synchronization in the reverse
-    of how it was working, so a mouse click on a module in PCBNEW will take
-    EESCHEMA to the part with the same reference.
-  * More beautification, working with developer of uncrustify.  Almost ready
-    to add the customized uncrustifiy configuration file to this project.
-  * Fixed a bug in pcbnew/tracepcb.cpp's WinEDA_PcbFrame::Trace_Pcb( wxDC* DC, int mode )
-    which was using a bool for the MaskLay variable, causing through hole pads
-    on modules on copper layer not to be shown when the copper components were
-    set to invisible.
-
-
-2007-aug-11 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema
-    modify hotkeys.cpp code.
-
-
-2007-Aug-10 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & common
-    Improved MODULE::FindPadOrModule().
-    Ran more source files through auto-beautifier.
-    Renamed dupltrac.cpp to dupltrac.cpp.notused.
-
-
-2007-aug-10 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema
-    better hotkeys.cpp code.
-
-
-2007-Aug-09 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & common
-    Released the new Visitor paradigm.   Wrote MODULE::FindPadOrModule() using
-    it.
-
-
-2007-aug-09 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema
-    Some new hotkeys (see hotkeys.cpp).
-    Now, the key ? display the current existing hotkeys
-
-
-2007-Aug-08 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & common
-  * Renamed locate.cpp's distance() to DistanceTest() and moved it to trigo.cpp.
-    Pass more parameters to DistanceTest and removed globals that were used by
-    distance() in locate.cpp.
-    Moved and renamed DistanceTest function proto from protos.h to trigo.h.
-  * Implemented HitTest() for class_cotation, class_mire, and a few other classes
-    by factoring out existing code from locate.cpp.  locate.cpp should operate
-    exactly the same as before.
-  * Improved or implemented the Show() function for several classes.
-  * Detected that the suspected class_module hit-testing bug was not real,
-    i.e. no bug found.
-
-
-2007-aug-08 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ eeschema
-    bug in class_hierarchy_sheet.cpp.
-
-+ pcbnew
-    small change in block commands:
-        rastnest was updated for each footprint, while moving footprints.
-        Now it is updated at the end of changes.
-    enhancements in block.cpp and connect.cpp
-
-
-2007-Aug-07 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & common
-  * More searching work.  Made HitTest() virtual.  Factored out a HitTest()
-    function for both class_module and class_pad from existing code.
-  * Embellished the Show() function for several of the classes.  Could be the
-    basis of a possible future XML export, but with the native format being
-    ascii already, this is of questionable value as an export.
-  * Discovered a long time existing bug in class_module hit-testing.
-    Still need to understand it. It could just be an improperly formatted module.
-
-
-2007-Aug-06 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & common
-    Started sketching out a new search architecture.  To learn more:
-    look for "INSPECTOR" text in base_struct.h.
-
-
-2007-Aug-05 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew & common
-  * Added some conditional DEBUG code for showing the pcb object tree in
-    simple XML format.   See class EDA_BaseStruct's new Show() function.
-  * Changed the function name of Locate( const wxPoint& ref_pos ) to bool HitTest(..)
-    in both class_text_mod and base_struct.
-  * More beautification and commenting.
-
-
-2007-Aug-04 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    Read-ability formatting, I am playing with a C++ beautifier called "uncrustify".
-        I had to patch it and spent 2 days getting it configured.  Patch not
-        sent upstream yet.
-    Fixed a bug in "display local ratsnest pad or module": if you had a small
-        module and the mouse clicked its reference text, the ratnest for
-        the associated module would not show.  The work around was to add
-        support to Show_1_Ratsnest() so it could take a TYPETEXTEMODULE as
-        the result of the hit-testing.  But I think a longer term better
-        solution will be to create a specific search function for this kind
-        of hit-testing, one which could disregard text and look only for
-        pads and modules.
-
-
-2007-aug-02 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew
-    Drc test now generates a DRC file report.
-
-
-2007-Jul-31 UPDATE   Geoff Harland <gharlandau@yahoo.com.au>
-================================================================================
-+ pcbnew
-    Drill Map and Drill Report files now list the diameters of each drill in
-    the selected drill unit first, and then in the other drill unit.
-    Drill report files also now list the tool assigned to each drill, and
-    the correct hole count and oval count for each drill size; the
-    file creation date and the selected drill unit are also listed.
-
-
-2007-Jul-30 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew
-    Some file are added (missing .prj files)
-    Better Drc test:
-        Zones can be tested.
-        better pad to pad test.
-
-
-2007-Jul-25 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-    ** Some minor enhancements
-+ pcbnew
-    In Drc diags, better (more explicit) messages
-    Change (and simplify) code in  'update' as well as 'insert' modules into main PCB from within the module editor,
-    because it had a bug (crashes when there was no footprint in pcb)
-
-
-
-2007-June-21 UPDATE Tim Hanson <tim@hardcarve.com>
-================================================================================
-+ pcbnew
-    1. added button to 'update' as well as 'insert' modules into main PCB
-        from within the module editor.  Made them functional, of course.
-    2. added control-o, control-s & control-f to pcbnew,
-        though I'm not perfectly happy with the implementation -- wxwidgets puts
-        the control-characters in alphabetical order!
-
-
-2007-June-25 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew
-    minor enhancement in Edit footprint dialog (more help tool tips).
-    better hotkey.cpp (code cleaning and info messages)
-
-
-2007-June-19 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    After locking a module with 'L', update the status window with the locked
-    status.  Side step some asserts from wxWidgets which were happening when
-    running compiled for debug.
-
-
-2007-June-16 UPDATE   Richard A Burton <richardaburton@gmail.com>
-================================================================================
-+ pcbnew
-    fix debug assert starting pcbnew with wx2.6
-+ build
-    add install targets for resources and docs
-
-
-2007-June-15 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ pcbnew
-    **  only modules on the present layer are subject to individual module
-        moves, rotations, or layer swaps, with the 'M', 'G', 'R' or 'S' hotkeys.
-    **  only unlocked modules are subject to the individual module moves,
-        rotations, or layer swaps, with the 'M', 'G', 'R' or 'S' hotkeys.
-    **  implemented the 'L' hotkey to quickly lock or unlock a module,
-        just by hovering over it and hitting the 'L' or 'l' key. The lock is
-        toggled.
-    **  Enhanced locate.cpp's Locate_Prefered_Module(BOARD * Pcb, int typeloc)
-        significantly, it now has a widely ranging behavior based on the
-        typeloc argument.
-
-
-2007-June-14 UPDATE Igor Plyatov <plyatov@mail.ru>
-================================================================================
-+ eeschema
-    Added sorting by value or position in to the annotation window
-    (Thanks for patch to Andrey Fedorushkov).
-
-2007-June-13 RELEASE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+All:
-    merging my development with svn version
-
-+ pcbnew:
-    bug fix (problem in postscript generation due to the internationalization
-    of floating point number notation )
-    added tool to select layer pair and monitor active layer
-
-+ eeschema
-    bug fix:
-        crash libedit when loading certain components (linux only)
-        incomplete generation of erc file list
-
-
-2007-June-13 UPDATE   Richard A Burton <richardaburton@gmail.com>
-================================================================================
-+ build:
-    dynamic linking by default, use make -f makefile.gtk KICAD_STATIC_LINK=1
-    or uncomment the bit in libs.linux for static
-
-
-2007-June-11 UPDATE   Richard A Burton <richardaburton@gmail.com>
-================================================================================
-+ build:
-    removed several 2 line scripts for configuring wx builds and put them in
-    how-to-build-kicad.txt
-    improved KICAD_STATIC_LINK handling so it can be overridden on the command
-    line e.g. "make -f makefile.gtk KICAD_STATIC_LINK=0"
-
-
-2007-June-11 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+ Started this change log file.
-
-
-2007-June-5 UPDATE    Richard A Burton <richardaburton@gmail.com>
-================================================================================
-+ pcbnew:
-    fixed 3d-display image export (blank box in image)
-+ build:
-    fixed makefile clean targets so they don't fail if already clean
-    fixed wx2.6 compatibility
-
-
-2007-May-25 RELEASE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+ pcbnew:
-    bug: problem with 3D shapes.
-+ Gerbview:
-    Better (but crude...) support to export gerber files to pcbnew.
-
diff --git a/Documentation/changelogs/CHANGELOG-2008.txt b/Documentation/changelogs/CHANGELOG-2008.txt
deleted file mode 100644
index 17bffde446..0000000000
--- a/Documentation/changelogs/CHANGELOG-2008.txt
+++ /dev/null
@@ -1,1561 +0,0 @@
-KiCad ChangeLog 2008
-====================
-
-2008-Dec-31 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Eeschema:
-    Note: this is a work in progress!
-    Files modification.
-    More about italic and bold fields in libraries
-    Use DLIST to handle fields in lib entries
-    Bugs and problems solved in fields edition (some are windows only).
-
-
-2008-Dec-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Eeschema:
-    Note: this is a work in progress!
-    Change dialog to edit fields in libedit.
-    Most of code created by Dick to edit fields in shematic is reused (this was the goal).
-    Component dialog properties -in libedit) is not modified, and fields can be also edited with it.
-    New dialog box is similar to the component dialog box used in schematic.
-    But all features do not work (work in progress!)
-    TODO (by me):
-    use vector to handle fields in libraries, like schematic.
-    Finish work, and test it.
-
-2008-Dec-29 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-  * gr_basic.h DOXYGEN comments.  made a couple functions static and removed
-    those from gr_basic.h since they are private to gr_basic.c.  changed the
-    polygon code to use wxPoints since that is what the underlying wxWidgets
-    API uses.
-++gerbview
-  * More work on drawing polygons, erasure of polygons completed.
-  * Added full support for aperture macro 6, MOIRE.
-  * Example 2 in RS274xrevd_e.pdf almost draws properly now.  Need ARC support
-    in polygons, and need polygon aperture type support to complete.
-
-
-2008-Dec-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Eeschema:
-    More about italic and bold texts options in fields and graphic texts
-
-
-2008-Dec-22 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Pcbnew:
-    Added dialog box to edit graphic items (graphic segments, circles, arcs)
-    properties
-
-
-2008-Dec-22 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++All
-    Cleaning code to draw/plot texts:
-    Now only one function is used to draw and plot texts in pcbnew in all formats
-    Italics texts are allowed in pcbnew (work in progress)
-
-2008-Dec-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++All
-    Cleaning code to draw/plot texts (work in progress):
-    Now only one function is used to draw and plot texts (not for pcbnew)
-    (easier to maintain and ensure texts have the same size in ploting and drawing)
-    In eeschema, italic and bold texts allowed (in pcbenew, texts thickness is already adjustable)
-
-
-2008-Dec-18 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++all
-  * Virtualize DrawFrame class methods required to eliminate compiling
-    drawframe.cpp multiple times depending on the application being built.
-  * Move zoom.cpp and drawframe.cpp to common library and update CMake files.
-  * drawpanel.cpp - Extracted mouse wheel events out of mouse event handler,
-    generate commands for mouse wheel events, and moved panning from DrawFrame
-    class into DrawPanel class.
-  * Initial ground work for new zoom implementation.
-
-
-2008-Dec-15 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++gerbview
-    Implemented most of the "thermal" aperture macro, at least so that it
-    displays as concentric circles OK.  Still need to do the cross hairs.
-    Fixed a bug loading aperture macros from disk, could crash gerbview.
-    Switched TRACKs to after polygons in tracepcb.cpp, temporary solution until
-    I have more time.
-
-
-2008-Dec-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew
-    Display a short net name on vias and pads (if zoom level allows it).
-    Short net names are net names without hierarchy path
-    Add m_ShortNetname and change m_Netname to private in classes D_PAD and EQUIPOT
-
-
-2008-Dec-08 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++all
-  * Remove all instances of application pointers both global and embedded
-    member variables.  Use wxGetApp() for improved readability and type
-    safety.
-
-
-2008-Dec-6 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew & gerbview
-  * As a final migration step, made BOARD_ITEM::SetNext() and
-    BOARD_ITEM::SetBack() _private_, starting at BOARD_ITEM in the class
-    hierarchy so that the compiler will tell us where they are used illegally.
-    Classes derived from BOARD_ITEM then also cannot expose SetNext() and
-    SetPrev(), and this forces everthing related to BOARD_ITEM through DLIST for
-    list manipulation.  The compiler turned up a couple I had missed, two of which
-    were the back pointers of  MODULE::m_Reference->Back(), m_Value->Back(), which I
-    do not think are needed since the MODULE owns these texts, not the other way around.
-    This should be the final nail in the coffin for undisciplined list manipulation
-    within pcbnew and gerbview.
-  * Converted BOARD::Delete() into BOARD::Remove() and then added an inline for
-    BOARD::Delete() which deletes what Remove() returns.
-  * Removed BOARD::DeleteMARKER( int ) since BOARD::Delete() works.
-  * Removed gerbview's undelete.cpp and made gerbview use pcbnew's,
-    by moving the two supporting functions into the common base class
-    of WinEDA_BasePcbFrame, had to add some "#if !defined(GERBVIEW)"s.
-
-
-2008-Dec-5 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew & gerbview
-  * Renamed Struct3D_Master to S3D_MASTER.
-  * MODULE::m_3D_Drawings is now a DLIST<>
-  * Removed AddToChain(), DeleteStructList() and replaced with calls to DLIST<>
-    members so that list item counting stays accurate.
-
-
-2008-Dec-05 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++all
-  * Simplified and improved grid implementation.  User grid will no longer
-    be displayed if it is the same as any of the default grid sizes.
-  * Removed unused grid code in BASE_SCREEN class.
-  * Source file share/drawpanel.cpp now compiled into common library.
-  * Declare WinEDA_Appl so you can use wxGetApp() instead of passing app
-    pointers all over the place.
-  * Fixed assertion in debug build of 3D viewer.
-  * Some general code beautification and redundant header file removal in files
-    changed by the grid implementation.
-
-
-2008-Dec-3 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew & gerbview
-  * added g_CurrentTrackList, and made g_CurrentTrackSegment and g_FirstTrackSegment
-    be #defines into this DLIST<TRACK>, see pcbnew.h.
-  * Changed to DLIST<> for almost all the list heads in BOARD.
-    Switched datatype of BOARD::m_Track, BOARD::m_Zone, etc to DLIST<>.
-    This simplifies BOARD::~BOARD() somewhat, and adds automatic counting of list elements and encapsulation
-    of all list operations into DHEAD member functions, see common/dlist.cpp.
-  * Removed TRACK::Insert() since it no long fits with the new BOARD::m_Track and BOARD::m_Zone datatypes.
-  * Removed the g_UnDeleteStack support from <any>::UnLink(), this may leave a deficiency, but this code needs
-    to be external to UnLink() anyway.
-  * Made TRACK::SetNext() and TRACK::SetBack() private so they may not be used,
-    the only way to put a TRACK on a list is through DLIST<TRACK>::PushFront()
-    and other member functions of DLIST<TRACK>.
-  * Switched to std::vector<TRACK*> in track.cpp to hold the temporary static list.
-  * Renamed some KICAD_Ts to more closely match the corresponding classname.
-++gerbview
-  * Switched to GR_COPY mode for drawing so we can see the erasures.  debugged
-    erasures in rs274d.cpp.
-  * Now using order specific TRACK loading, so erasures come after objects they
-    are intended to erase.  Still need layer ordering and polygon ordering support, my todo.
-
-    I do not like DeleteStructList() and plan to migrate away from it, DLIST<>:DeletAll()
-    does something like it.
-
-
-=======
-2008-Dec-03 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew
-    Switch to polygons in zones (old way no more supported)
-    areas can be now filled using solid polygons, or using segments to fill areas inside polygons.
-    results are same, but using segments can be better (faster redraw time) for polygons having a lot
-    of segments (more than 10000)
-
-2008-Dec-02 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++build fixes
-  * Changed wxWidgets library find order so monolithic build is no longer
-    required (at least on MinGW).
-  * Changed CreateSVNVersionHeader.cmake to fall back to "build_version.h"
-    when 'svn info' command fails.  The default macro that ships with CMake
-    will not create build files when 'svn info' fails.
-
-
-2008-Nov-25 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-    edit component in schematic editor.  works pretty well, I'm done.
-
-
-2008-Nov-24 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-    edit component in schematic editor.  It is not complete but further.
-    Keep your old eeschema binary, this one does not fully work yet, another day or so.
-    Switched away from wxGrid to wxListCtrl, and that class is poorly documented
-    so much time pioneering how to use it. Should go faster now.
-
-
-2008-Nov-23 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-  + Made _protected_ EDA_BaseStruct's:
-    EDA_BaseStruct* Pnext;              /* Linked list: Link (next struct) */
-    EDA_BaseStruct* Pback;              /* Linked list: Link (previous struct) */
-    EDA_BaseStruct* m_Parent;           /* Linked list: Link (parent struct) */
-    EDA_BaseStruct* m_Son;              /* Linked list: Link (son struct) */
-  + Split TRACK::Draw() out for SEGVIA
-  + Added dlist.h & dlist.cpp for DLIST<> template.  All the _inline_ list manipulation
-    code throughout the package is rediculous.  I don't mind list traversal, only
-    list manipulation.  DLIST<> templates can be used to consolidate reliable
-    list manipulation operations and get this code out of the mainline.
-    These functions are shared/inherited for any derivation, so only one copy exists
-    in the final program image.  To use, simply declare e.g. DLIST<D_PAD> or similar.
-    See dlist.h, template class DLIST for function comments.
-  + added EDA_BaseStruct::m_List to assist in debugging list manipulation functions.
-+eeschema
-    Started on the edit component in schematic editor.  It is not complete and
-    breaks the usefulness of the editor at this moment.  Do not build this version
-    if you want to fully use eeschema.
-
-
-2008-Nov-22 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew
-    Some cleanup in dialog pad edition.
-    Added:
-    Zones now have a min thickness filled area parameter
-    that ensure a minimun width for filled copper areas
-    (areas below this min thickness are removed)
-    Shapes also are better
-
-
-2008-Nov-19 UPDATE Jerry Jacobs <jerkejacobs@gmail.com>
-================================================================================
-++kicad-library
-    Moved {number}DIP packages to DIP-{number}__{WIDTH} seperated library dip_sockets.mod
-    Created DIP Packages board
-++kicad.pro template
-    Added dip_sockets library to pcbnew libraries in template file
-
-
-2008-Nov-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew
-    First version of pcbnew using polygonal filled areas in zones in rats nets calculations.
-    Needs more tests.
-
-
-2008-Nov-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-kbool:
-    Using the last version (1.9) of kbool, downloaded from the wxArt2D project site
-    (see www.wxart2d.org)
-    But the version 1.8 bug still is here.
-    So using the workaround remains mandatory.
-    (this is not a problem because thermal shapes are better...)
-
-
-
-2008-Nov-14 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+gerbiew
-  + Added support for displaying most aperture macros embedded in a RS274X compatible file.
-    Cleanup of rs274d.cpp and added the beginning of the isDark support, which we
-    need to discuss. GERBER::m_ImageNegative can toggle during the course of reading
-    a rs274x file and sometimes this means erasing things.
-  + Tested pcbnew's gerber plotting, still working.  Done
-    with aperture macros for now, but we need to handle the isDark support to
-    top it off after discussion.
-
-
-2008-Nov-8 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew
-    Thermal shapes modification for round and oblong pads.
-    This is a workaround for a bug (i believe) of kbool.
-    New thermal shapes have NO angle < 90 degrees between 2 adjacent segments.
-    For shapes that have angle < 90 degrees between 2 adjacent segments,
-    under certains circumstances kbool drops some holes and creates a bad filled area.
-    (see zones_convert_brd_items_to_polygons.cpp)
-
-
-2008-Nov-8 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+gerview
-    Added support for reading in aperture macros embedded in a RS274X compatible file.
-    Cannot display them yet.
-    General cleanup of gerbview.  GERBER_Descr replaced with class GERBER.
-    ReturnToolDescr() replaced with GERBER::GetDCODE().
-    D_CODEs are created lazily now.  pcbnew's gerber plotting needs testing, might
-    have broke something there, accidentally.
-
-
-2008-nov-5 UPDATE Andrey Fedorushkov <andrf@mail.ru>
-================================================================================
-+all:
-   Add cyrillic font support.
-   Add russian GOST worksheet support.
-
-2008-nov-2 CLEANUP Jerry Jacobs <jerkejacobs@gmail.com>
-================================================================================
-++kicad:
-   Cleanup comment/codestyle to make things more clear for newbie codeviewer
-   and developers.
-    + buildmnu.cpp
-    + commandframe.cpp
-    + kicad.cpp
-    + treeprj_frame.cpp
-
-
-2008-oct-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++All
-    Use double instead float when possible, ande code cleaning.
-    Some changes for a better code compatibility with others compliers (MSVC)
-    (__MSVC__ must be defined when using MSVC)
-    (double round(double) and typeof unkown in MSVC)
-    Note: I cannot test kicad under MSVC.
-
-
-2008-Oct-19 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-    Fixed SCH_COMPONENT() copy constructor with Jean-Pierre's bug catch.
-    Developed a non-functional fbp file using wxFormBuilder for the new
-    dialog_edit_component_in_schematic dialog which I plan on coding in the
-    next couple of weeks as time permits.
-
-2008-oct-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Solved a bug when creating a new zone outline that could crash pcbnew
-    More about copper zones filled without grid (by polygons)
-    Currently for tests only (work in progress).
-    now working: Thermal reliefs parameters can be set.
-
-2008-oct-11 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    More about copper zones filled without grid (by polygons)
-    Currently for tests only (work in progress).
-    now working
-        thermal reliefs.
-        texts on copper zones.
-        Removing insulated copper islands.
-    currently : not implemented:
-        trapezoidal pads
-
-2008-oct-07 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    More about copper zones filled without grid (by polygons)
-    Currently for eyes and tests only (work in progress).
-    now working
-        thermal reliefs.
-        texts on copper zones.
-    To select this feature choose No Grid in zone grid filling.
-    Work in progress:
-    currently : not implemented:
-        Removing insulated copper islands.
-        trapezoidal pads
-
-
-2008-Oct-6 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-    First work on arbitrary number of user fields, i.e. name/value pairs,
-    per schematic component.  Use std::vector to hold fields, added GetField()
-    function to SCH_COMPONENT.
-
-
-2008-oct-02 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    First tests about copper zones filled without grid (by polygons)
-    Currently for eyes and tests only.
-    To select this feature choose No Grid in zone grid filling.
-    Work in progress:
-    currently : not implemented:
-        thermal reliefs (pads are always covered by copper zones).
-        texts on copper zones.
-        Removing insulated copper islands.
-
-2008-Oct-1 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    gen_modules_placefile.cpp: backed out of the "Cu & Cmp" centric terminology
-    and moved towards using layer names which are BOARD specific.
-
-
-2008-Sep-26 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    more about use polygons in zone fill algos on technicals layers:
-    plot Ok. holes are handled
-
-2008-Sep-26 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Starting work to use polygons in zone fill algos.
-    Currently, use this to add zone on non copper layers (technical layers)
-    Only for eyes.
-    Plot outputs do not handle this.
-    Problems with holes in zones.
-    Also: first used of wxFormBuilder
-
-
-2008-Sep-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Fixed a bug in modedit which crashes pcbnew when closing the properties module dialog
-    Both in trunk and tagged versions
-
-
-2008-Sep-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    code cleaning
-    PartTextStruct class name changed to a name : SCH_CMP_FIELD
-
-2008-Sep-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Fixed a problem in zone filling algo: due tu differents ways to truncate coordinates
-    between 2 functions (one round coordinates, and others truncate coordinates),
-    some start points used to fill zones can be inside the zone outlines,
-    but placed outside when init matrix parameters when rounding them instead of truncate.
-    So zone was filled inside and outside when happens.
-
-
-2008-Sep-9 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-    Fixed a bug plotting pins with circles in them from eeschema.
-    Added type FILL_TYPE.
-
-
-2008-Aug-26 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all:
-    subtle bug solved: no response to the first left click command after opening a dialog box
-    (after an item edition, for instance)
-
-2008-Aug-22 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    bug solved: netlist calculations could crash eeschema under very rare circumstances.
-    recent bug solved: background filled shapes (filled but not solid: texts are readables inside shapes)
-        were drawn (and plotted) as filled (solid) shapes
-
-2008-Aug-18 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    bug solved: Horizontal Oblong pads holes have a bad T Code size in the drill file.
-
-
-2008-Aug-15 UPDATE   Jerry Jacobs <jerkejacobs@gmail.com>
-================================================================================
-+About dialog
-modified: (common.cpp) GetAboutBuildVersion() is a custom build version for the about dialog
-          (config.h.cmake)
-          (CreateSVNVersionHeader.cmake) KICAD_ABOUT_VERSION macro added
-
-added:  (about_dialog.cpp) InitKiCadAbout() initalise the about dialog
-
-removed: (common/infospgm.cpp) is no longer needed
-
-
-2008-Aug-11 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    libedit:
-        solved : a bug which can crash eeschema on a double click.
-        modified : pin lenght edit in pin edit dialog. The value (handle by spin control) was not editable with recent wxWidgets versions
-
-2008-Aug-09 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    bug solved: pads holes not printed.
-    enforced controls against malformed libraries
-
-2008-Aug-06 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Removed an obsolete option in the plot menu, in gerber format.
-    Cleanup code.
-    Solved a minor bug: rastnest was not displayed after a move module
-    and if the command was aborted
-
-2008-Juil-31 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    Added component sheet X,Y location in BOM.
-    Netlist generation: now spaces in names are replaced by '_' for pcbnew (which does not accept spaces)
-    Bug: print all pages did not work.
-    Please note in complex hierarchy, the current "Print All" function needs to be enhanced,
-    because it does not draw all sheets but only all different sheets
-
-2008-Jule-08 UPDATE   Andrey Fedorushkov <andrf@mail.ru>
-================================================================================
-+pcbnew:
-    Added displayed length highlighted net to pcbnew/affiche.cpp
-
-
-2008-June-22 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all:
-    Default path kicad/share added when searching kicad data (like library, internat ...)
-    Kicad data Default paths are now (windows version and linux server install)
-    1 - kicad/share
-    2 - kicad
-
-
-2008-June-15 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    Bug solved: Eeschema crashed when creating a new subsheet with the same
-    filename as an existing filename, if loading this existing file.
-
-
-2008-June-11 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all:
-    Online doc format changed to PDF format.
-    This is **very** easier to handle, because :
-    - Openoffice has a very good pdf export function.
-    - Only one file for application
-    - Is standart (The old html format used a zipped archive, not standart)
-    - the doc tree is less complex (see doc/help/fr or doc/help/en for the new tree).
-
-    If a localized doc file is not found, the english version is automatically loaded instead.
-    No need to copy the same pdf file in subdirectory.
-
-
-2008-June-06 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all:
-    minor changes
-    added void SetLocaleTo_C_standard(void) and void SetLocaleTo_Default(void)
-    This is wrapper to the C setlocale( LC_NUMERIC, "C" )
-    and setlocale( LC_NUMERIC, "" )function,
-    but could make more easier an optional use of locale in kicad in floating point notations
-
-
-2008-May-30 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    removed GPC library due to its unacceptable (and stupid) license
-    using the powerfull kbool library insteed (see polygon/kbool)
-+all:
-    minor changes
-
-
-2008-May-22 UPDATE Martin Kajdas <kajdas@cox.com>
-================================================================================
-+all
-    Moved all XPM files to <kicad>/bitmaps directory and fixed all related files
-+PCBnew
-    Changed File/Export shortcut from 'x' to 'e'
-
-
-2008-May-21 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    Solved: problem in manual part selection for multiple parts per package components
-
-
-2008-May-17 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-    Removed bitmaps.cpp.  Made a static library target named "bitmaps" which
-    gets linked into any app needing bitmaps.  Changed bitmaps.h to simply
-    include an alphabetized listing of the bitmap arrays.
-    We can now continue to migrate all remaining bitmaps into:
-        > the <base>/bitmaps directory
-        > the <base>/bitmaps/CMakeLists.txt file there
-        > the include/bitmaps.h file.
-
-
-2008-May-16 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    Solved: bad update of toolbars (eeschema and libedit):
-        undo/redo buttons were not always updated after a change.
-
-+kicad
-    the project tree now (as earlier) reads subdirs list files when starting
-    kicad. This feature can be disabled (see treeprj_frame.cpp)
-
-2008-May-15 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    Solved netlist problems for multiple parts per package components
-    in complex hierarchies.
-
-
-
-2008-May-5 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+common.c
-    wrote wxString& operator << ( wxString&, const wxPoint& ) by moving code
-    from DRC_ITEM::ShowCoord()
-+pcbnew
-  * embellished DRAWSEGMENT::MenuText() and DRAWSEGMENT::Display_Infos()
-  * wrote wxString BOARD_ITEM::ShowShape( Track_Shapes aShape )
-  * wrote wxPoint DRAWSEGMENT::GetEnd() which calculates the end point of an arc
-  * wrote DRAWSEGMENT::GetLength()
-  * Added S_ARC support to the specctra_export.cpp for EDGES_PCB with DRAWSEGMENTS
-    of arcs.   Arc and lines can be intermixed, its just that they must be
-    contiguous.  The user can now use the improved DRAWSEGMENT::Display_Infos() to
-    find any bad or non-contiguous DRAWSEGMENTS, since that function now shows
-    the two endpoints of any segment.
-
-
-2008-May-2 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-+cmake
-  * Use Subversion to automatically generate build date and revision level
-    when building with CMake.  Header file build_version.h will still need
-    manual updates when using the hand written make files.
-
-
-2008-May-4 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Added DRAWSEGMENT::GetStart(), GetEnd() and support S_ARC and S_SEGMENT
-    with it for now.
-  * Added arc support to pcb perimeter of the specctra export.
-
-
-2008-May-2 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Added ZONE_CONTAINER::GetBoundingBox() and used it to clean up
-    ZONE_CONTAINER deletion.
-  * For end of edge dragging activity: used full DrawPanel->Refresh()
-    to clean up all XOR artifacts.
-
-
-2008-May-1 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Fixed bugs in layer name handling within the BOARD
-
-
-2008-Apr-30 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    made in some dialogs the ESC key working (linux version, already working under windows)
-    screen number and screen count now are set
-
-
-2008-Apr-29 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Added WinEDA_PcbFrame::UpdateToolbarLayerInfo() by factoring it out of
-    ReCreateLayerBox().
-  * Changed call in void WinEDA_PcbFrame::SetToolbars() from ReCreateLayerBox()
-    to UpdateToolbarLayerInfo().
-  * Removed calls to SetToolbars() from:
-      > share/drawpanel.cpp's void WinEDA_DrawPanel::OnMouseEvent( wxMouseEvent& event )
-      > void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
-
-
-2008-Apr-28 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Layer names were not being set into the htoolbar listbox properly if the
-    BOARD was loaded via the command line as happens when kicad chain loads
-    pcbnew. Also, layer names were not being set if a second board was loaded
-    that had the same number of layers as the previous board. The solution was
-    to comment out the listbox rebuild test in WinEDAChoiceBox*
-    WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent )
-  * files.cpp:  added Clear_Pcb( false ) to LoadOnePcbFile() and call it if
-    not appending.  This way a user can get into the file selection dialog and
-    still abort (change his mind) without losing the current board.  Removed calls to
-    Clear_Pcb() where LoadOnePcbFile() would now do that.
-  * edtxtmod.cpp: fixed the drawing relics when moving and rotating module texts.
-
-
-2008-Apr-21 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    PS output: now shows oblong holes with the true shape.
-
-
-2008-Apr-22 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-  * Spent a 1/2 day tracking down two linked list bugs in deleting a
-    DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE.   I cannot believe in the year
-    2008 we should have to debug a linked list function.  This is stuff I expected
-    to do 20 years ago, not today.  The function
-    void WinEDA_SchematicFrame::DeleteSheetLabel( wxDC* DC,
-              Hierarchical_PIN_Sheet_Struct* SheetLabelToDel ) never worked as
-    far as I can tell.
-    Should switch to boost::ptr_vector ASAP everywhere, and leave linked lists in the 1980's.
-  * Hierarchical_PIN_Sheet_Struct::Hierarchical_PIN_Sheet_Struct() was not
-    setting the m_Parent.
-
-
-2008-Apr-21 UPDATE   Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-  * Added WinEDA_LibeditFrame::GeneralControle( wxDC* DC, wxPoint Mouse );
-  * Added WinEDA_ViewlibFrame::GeneralControle( wxDC* DC, wxPoint Mouse );
-  Needed: Move redundant code to WinEDA_DrawFrame::GeneralControle
-
-  ** Current sheet only Annotation and clear annotation now works for complex hierarchies
-
-
-2008-Apr-17 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-  * Made a little more sense out of the GetScreen() problem by making it
-    non-virtual, and having the two types of frame classes (eeschema's and pcbnew's)
-    each return their respective types of screens {SCH,PCB}_SCREEN*.
-  * Added GetBaseScreen() as the virtual function which always returns BASE_SCREEN*.
-  * Made WinEDA_DrawFrame::GeneralControle( wxDC* DC, wxPoint Mouse ){ dummy }
-  * Added WinEDA_SchematicFrame::GeneralControle( wxDC* DC, wxPoint Mouse );
-  * Moved to void <class>::Place( WinEDA_SchematicFrame* frame, wxDC* DC ) from
-    void <class>::Place( WinEDA_DrawFrame* frame, wxDC* DC ) so that these
-    functions can use the new SCH_SCREEN* WinEDA_SchematicFrame::GetScreen()
-    function (the non-virtual one that returns SCH_SCREEN* not BASE_SCREEN*).
-  * Made some menus conformant to UIpolicies.txt regarding uppercase.
-  * Beautified 5-10 files.
-
-
-2008-Apr-17 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    very small bug in display component info removed
-+pcbnew
-+cvpcb
-    removed bug: forgotten paths when adding lib files when not in the default lib path
-    (same problem as in eeschema, solved in 2008-Apr-09 Update)
-
-
-2008-Apr-16 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    In complex hierarchies, multiples parts per packages now should work,
-    without restrictions
-    Update and use annotate_dialog.pjd to create annotate dialog
-
-
-2008-Apr-15 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    More code cleaning and Files cleaning and reorganization.
-    change DrawSheetLabelStruct class name to a better name: Hierarchical_PIN_Sheet_Struct
-    For simple Hierarchies, files are now compatables with old eescheam versions
-    In complex hierarchies, multiples parts per packages have still problems,
-    but i hope to solve that soon
-    (in fact all the last changes were made for that)
-
-
-2008-Apr-14 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    code cleaning. SCH_ITEM class used for all schematic items in eeschema.
-    Files reorganization.
-
-
-2008-Apr-09 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    code cleaning.
-
-
-2008-Apr-09 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    removed bug: forgotten paths when adding lib files when not in the default lib path
-    Also: adding SCH_COMPONENT.m_PartPerPackageSelections to handle multiple parts per package selection
-        in a complex hierarchy, but yet, no other code to do that.
-
-
-2008-Mar-30 UPDATE  Jonas Diemer <diemer-at-gmx.de>
-================================================================================
-+eeschema
-+pcbnew
-    Display a warning on a file format version mismatch.
-
-2008-Mar-31 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-    Tweaked class MsgPanel so that the screen drawing only happens from
-    its OnPaint() function.
-+pcbnew
-    Added virtual BOARD_ITEM::Draw() and forced all BOARD_ITEM derived classes
-    to implement it so that all these functions are also virtual.
-    Made the offset argument default to the new wxPoint BOARD_ITEM::ZeroOffset.
-    Coded DRAWSEGMENT::Draw() from Trace_DrawSegmentPcb() and removed the latter.
-    Coded EQUIPOT::Draw(), and BOARD::Draw().  Both are dummies for now, but
-    both can be reasonably implemented in the future.
-
-
-2008-Mar-30 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    Solved: eeschema crashes when create a new sheet, using the default filename and enter it.
-    Solved: eeschema crashes when delete a sheet label (pin sheet), undo this and move the label.
-    (bad value (not updated) for the DrawSheetLabelStruct.m_Parent member after redo command in sheet edit).
-
-+all:
-    Added comments in gestfich.cpp to explain the default paths used by kicad to find help files and lib files
-
-
-2008-Mar-30 UPDATE  Jonas Diemer <diemer-at-gmx.de>
-================================================================================
-+eeschema
-    Removed artifacts resulting from redraws in XOR-Mode.
-
-2008-Mar-24 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    Ensure graphic and footprint texts have a sufficient size to be seen on screen.
-    (bug 1909165, due to text on edge layer with a 0 value for X size)
-
-2008-Mar-22 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    Netlist dialog redesigned, netlist.cpp code modified
-    and added an option to remove not locked footprints
-    when not found in netlist
-
-
-2008-Mar-21 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    pcbplot.cpp now saves the selected layers as wxConfig options,
-    i.e. retentitively.  The ESC key now works in that dialog.
-    Make upper/lower case conformat to UIpolicies.txt
-    Put buttons at bottom, "Close" as bottom button.
-
-
-2008-Mar-21 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    Removed an very old bug in onrightclick.cpp which crashes eeschema when
-    right clicking in a field inside a component.
-    Old code should never works,    but ...
-
-
-2008-Mar-20 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    refined the dialog_freeroute_exchange
-    If possible (i.e. if freeroute.jnlp is found in kicad binary directory) javaws is called insteed of the default browser)
-    So @todo removed
-
-2008-Mar-19 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-    Renamed some classes and their corresponding KICAD_T types so they are both
-    simpler, shorter and more closely match each other: the type and the classname.
-    Wedged a class SCH_ITEM underneath most eeschema drawable items, and this
-    class came from DrawPartStruct which was largely disfunctional.  Eeschema
-    now more closely matches what we have in pcbnew with the BOARD_ITEM base class.
-    The corresponding class in eeschema is now SCH_ITEM.  Put in some of Jonas'
-    patch for the dragging of a block.  Needs testing, especially dragging
-    text since there is no GetBoundingBox() for that yet.  As an interrim solution
-    we could make SCH_ITEM::GetBoundingBox() return a HUGE rectangle so that any class
-    not implementing GetBoundingBox() in eeschema will get properly re-drawn,
-    in theory.
-
-    We are currently using XORing for dragging a single object and using full
-    redraws for dragging a block.  I suppose this can be an experiment for a
-    week or so.  I would not expect that dragging a block of labels with no
-    other object to work currently (i.e. *visually* correctly).
-
-
-2008-Mar-19 UPDATE Igor Plyatov <plyatov@mail.ru>
-================================================================================
-  * Support for Gnome/KDE menu added.
-  * install.txt rewritten and must be used as main source of information for
-    KiCad installation.
-  * how-to-build-kicad.txt deprecated.
-  * how-to-build-for-windows.txt deprecated.
-
-
-2008-Mar-18 UPDATE  Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    refined the dialog_freeroute_exchange.pjd file, adding tooltips, wording
-    changes, wxID_CANCEL so ESC key closes, and added this comment also:
-    // @todo:
-    // 1) add freeroute.jnlp to the Kicad project
-    // 2) change this next C++ line simply run $ "javaws freeroute.jnlp" as a system
-    //    command, bypassing the browser altogether.  Merely need a PATH to javaws.
-
-
-2008-Mar-18 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    MODULE::GetBoundingBox() takes in account the clearence around the pads
-    (the clearence limit shape around pads (when shown) was not always erased )
-
-
-2008-Mar-17 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Fixed a crashing bug which occured when you run the module editor, select
-    "Update module in current board" and then run the DRC checker after that.
-  * Changed to void CreateSortedPadListByXCoord( BOARD* aBoard, std::vector<D_PAD*>* aVector )
-    So caller can safely forget to delete the array of pad pointers and the vector's
-    destructor handles this automatically.
-  * Delete pad from within PCBNEW, not module editor, now uses PostDirtyRect()
-
-
-2008-Mar-14 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+eeschema
-  * cleaned up some xor artifacts, see eeschema/getpart.cpp's comment:
-    // switch from normal mode to xor mode for the duration of the move, first
-    // by erasing fully any "normal drawing mode" primitives with the PostDirtyRect(),
-    // then by drawing the first time in xor mode so that subsequent xor
-    // drawing will fully erase this first copy and then the previous copy.
-  * redraw the entire screen at end of a component move.
-  * added many calls to Refresh() to eeschema/onleftclick.cpp and in such cases
-    I now pass a NULL DC to TestDanglingEnds()
-
-
-2008-Mar-14 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-    some code cleaning and comment translations.
-    added:
-    /** EDA_Rect::Merge( EDA_Rect & aRect )
-     * Modify Position and Size of this in order to contain the given rect
-     * mainly used to calculate bounding boxes
-     * @param aRect = given rect to merge with this
-     */
-
-
-2008-Mar-14 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    Added a tool to the upper toolbar which gives and easy access to freeroute
-    Solved a bug in plot postscript format when drawing oblong pads:
-        Bad oblong pad size after drawing a round pad
-
-
-2008-Mar-13 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    Dirty rect used in footprint rotation, flip and delete.
-    Better calculation of the footprint dirty rect.
-
-
-2008-Mar-13 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all
-    Added bool EDA_Rect::Intersects().
-+eeschema
-    Added provisionary calls to eeschema/eeredraw.cpp for
-    if( panel->m_ClipBox.Intersects( item->GetBoundingBox() ) )
-
-
-2008-Mar-11 UPDATE   Per Uddén <p.udden@telia.com>
-================================================================================
-+3d-viewer
-  * Fix TODO: Add S_ARC and S_CIRCLE shape render to board edge and module edge.
-    Ex. Now is a board with arcs at corners showing correctly.
-
-
-2008-Mar-10 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Improved some comments on new functions dirty area functions
-  * Changed
-    void    ConvertPcbUnitsToPixelsUnits( EDA_Rect& aRect ); to
-    void    ConvertPcbUnitsToPixelsUnits( EDA_Rect* aRect );
-    which I prefer because it is clearer to the human reader of the calling
-    context that the passed argument is to be modified.  References as function
-    arguments are fine, but if they are to be modified, passing by pointer
-    gives human reader a clearer picture when looking at the calling context.
-  * TRACK::GetBoundingBox() now (1) rounds up the radius, and (2) returns a bounding
-    box which is [pos,dim) in nature, [inclusive, exclusive).
-  * Changed from "new wxDCClip()" to use an automatic wxDCClip() variable in
-    drawpanel.cpp
-  * Removed a printf() from "release" build of drawpanel.cpp
-  * Added WinEDA_DrawPanel::PostDirtyRect()
-  * Renamed Supprime_Une_Piste() to Remove_One_Track() and it now uses
-    PostDirtyRect().
-  * void WinEDA_PcbFrame::Delete_net( wxDC* DC, TRACK* Track ) now redraws
-    the screen after a net deletion.
-  * eeschema/dialog_find.cpp: set the initial keyboard focus to the text control
-
-
-2008-Mar-10 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    Pcbnew can import footprints in gpcb format in Nelib format only
-    Pcbnew automatically recognizes pcbnew or gpcb format when importing a footprint.
-        Due to differences between pcbnew and gpcb,
-        only gpcb newlib files containing only one footprint (one element) are useables.
-    Dirty rectangle calculation debugged.
-    WinEDA_DrawPanel::ConvertPcbUnitsToPixelsUnits( EDA_Rect& aRect ) can be used to convert a bouding box to a clip box
-    (see example in deltrack.cpp)
-+eeschema:
-    restored: missing lines in schedit.cpp (problems in a lot of commands)
-
-
-2008-Mar-06 UPDATE Igor Plyatov <plyatov@mail.ru>
-================================================================================
-+help
-    Eliminated bug "help files not found!".
-
-
-2008-Mar-5 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew
-    Solved problem in fill zone calculations when using buried or blind vias (like micro vias)
-
-
-2008-Feb-18 UPDATE Igor Plyatov <plyatov@mail.ru>
-================================================================================
-+common
-    Path for the help files changed to doc/help.
-+help
-    help moved to the doc/help.
-+doc
-    Separated from KiCad source code to the trunk/kicad-doc.
-+library
-+modules
-    Separated from KiCad source code to the trunk/kicad-library.
-
-
-2008-Mar-3 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Completed transision to BOARD::GetLayerName() and away from ReturnPcbLayerName().
-    LayerNames and LAYER_T are saved in the *.brd file and may be edited
-    there with a text editor until the UI is in place to edit them in PCBNEW.
-    To understand the strategy, see BOARD::GetLayerName() in class_board.cpp
-    and see WinEDA_BasePcbFrame::ReadSetup().  I will be adding "Board" menu
-    item to Preferences, but there is more to come before the UI gets done:
-    net classes.
-  * Clear_Pcb() now deletes the existing BOARD() and new's a new BOARD() so that
-    the default BOARD::m_Layer[] values can be set in the new BOARD's constructor.
-
-
-2008-mars-03 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-3d display:
-    Added Jonas Diemer's patch (enhanced movings from mouse and tools)
-
-
-2008-Mar-1 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    Changed ioascii.cpp to save and load board specific layer names, for DEBUG
-    build only. I want to add class LAYER, see below. Added
-    BOARD::SetLayerName(), BOARD::SetLayerType(), and BOARD::GetLayerType().
-    Will add a UI for editing those soon as soon class LAYER is stable. The
-    BOARD::SetLayerXXXX( int layerNdx, VALUE ) functions would simply route to
-    LAYER::SetXXXX( VALUE ). Then layer specific global variables would migrate
-    to the BOARD::LAYER[]s.
-
-    Jean-Pierre please have a look at pcbstruct.h's class LAYER which is just a
-    prototype for now.  EDA_BoardDesignSettings::m_LayerColor would go away,
-    and then I would add LAYER[] to EDA_BoardDesignSettings or BOARD.
-    Whether EDA_BoardDesignSettings or BOARD I don't have a strong preference.
-    I understand this is a bunch of work, and there are tricks needed to handle
-    adding and deleting the number of layers....
-
-
-2008-Feb-29 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    controle.cpp: fixed the magnetic track if tracks are parallel.
-
-
-2008-Feb-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    Renaming the sheet filename now works in simple and complex hierarchies.
-    Use carefully because this can change the whole schematic structure.
-    Gen Bom List now works in unicode build version
-    (label list generation crashed eeschema in unicode build version)
-+all
-    Display filename and full sheet name ("sheet path") in sheet reference
-    the full sheet name has no meanning in pcbnew.
-
-
-2008-Feb-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    Fixed: problem which could crash eeschema when a sub schematic file in a hierarchy was not found.
-
-
-2008-Feb-27 UPDATE  Wayne Stambaugh <stambaughw{at}verizon{dot}net>
-================================================================================
-+ eeschema
-  * fixed escape key handling and add accelerate keys in annotate dialog.
-  * factored out eeschema frame class to prevent rebuild of entire project
-    when making changes to eeschema frames.
-  * refactor main eeschema event loop by factoring out most of the non-drawing
-    events.
-+ cmake
-  * small fix to root CMakeList file to prevent GCC flags being used with
-    other compilers.
-
-
-2008-Feb-26 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    changed in class DrawSheetStruct m_s member name to m_AssociatedScreen
-    some others minor problems solved.
-    some files "uncrustified"
-    Major problem in undo/redo when a sheet is deleted not yet solved
-    Only for a complex hierarchy, could lost data.
-    When a sheet is deleted by block delete. it is put in undo list.
-    It is really deleted after 10 changes (when the undo list is full).
-    At this time, the associated data is also deleted.
-    If another (not deleted) sheet shares the same data, this data is lost.
-    Need work to solve this problem and keep the undo/redo feature.
-
-
-2008-Feb-25 UPDATE   Wayne Stambaugh <stambaughw{at}verizon{dot}net>
-================================================================================
-+eeschema
-  * converted annotate_dialog layout to Gnome HIG per UIPolicy.txt factor
-    out dialog code from annotate.cpp.
-  * refactor and uncrustify schframe.cpp and schedit.cpp
-  * modify eeschema CMakeList.txt to reflect code changes.
-
-
-2008-Feb-22 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * specctra_export.cpp: added DSN 'outline' support from EDGE_MODULEs.
-    lines and circles, not arcs.
-  * factored out EDGE_MODULE::ShowShape() from EDGE_MODULE::Show().
-  * drc.cpp changed AsSecondItem to HasSecondItem and test it in generating
-    the file report and when making the popup menu in the dialog_drc and
-    when generating the html list item.
-
-
-2008-Feb-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    added : full text conversion between text, label, global label and hierarchical label
-    some problems fixed:
-    - annotation incorrectly cleared.
-    - reference not copied in component copy.
-    - incorrect redo when changing the chip name in component edition
-
-    bugs not fixed:
-    - incorrect annotation in complex hierarchy with multi parts per package (duplicates created).
-
-
-2008-Feb-20 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    Fixed bug in getpart.cpp:
-    eeschema crashed when aborting a new component place command
-    Global Symbols now have their shapes
-    Bad global label shape fixed when reading a schematic file
-
-
-2008-Feb-20 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    specctra_export.cpp fixed the offset problem with freerouter.net.
-    http://tech.groups.yahoo.com/group/kicad-devel/message/1076
-
-
-2008-Feb-19 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    Add ZONE_CONTAINER support to the ID_PCB_HIGHLIGHT_BUTT tool and
-    WinEDA_PcbFrame::DrawHightLight().  Added TYPEZONE_CONTAINER to
-    GENERAL_COLLECTOR::AllButZones[] so that containers are editable even
-    when the "Show Zones" toggle is off.  This came from using the software
-    and realizing that if something is visible (zone containers remain visible
-    even when Show Zones is off) then it should be selectable.  Otherwise it is
-    confusing and frustrating.
-
-
-2008-Feb-18 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Start to use BOARD::GetLayerName() in anticipation of configurable layer
-    names per board.
-  * Comment out a printf() which will lock up pcbnew when
-    it is run under kicad project manager and the interprocess fifo gets filled.
-  * Cross probe was not showing the not found message properly.  wxString was
-    being used for two purposes, input and Printf() destination.
-+gerbview
-    Now loads all gerber files given on the command line, not just one.  The
-    first file is loaded into layer 1 (index 0), the second one is loaded
-    into layer 2 (index 1) etc.
-
-
-2008-Feb-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema
-    Fixed bug in gen bill of material (dialog_build_BOM.cpp):
-    eeschema crashed when created a B.O.M. (i think: unicode version only)
-
-
-2008-Feb-18 UPDATE Igor Plyatov <plyatov@mail.ru>
-================================================================================
-+eeschema
-    Added menu View with all possible elements from the top toolbar.
-    Find item added in to the Edit menu.
-+all
-    Translated part of IDs to english.
-
-
-2008-Feb-15 UPDATE Igor Plyatov <plyatov@mail.ru>
-================================================================================
-+eeschema
-    Added item "Delete" in "Edit" menu.
-    Added menu "Place" with all possible elements from the right toolbar.
-
-
-2008-Feb-13 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    specctra export: now generate unique pin names from module padnames in the
-    case where there are non-unique pad names within a module.  Tested with
-    Electra demo, and *.dsn files load OK in there as well as in freerouter.
-    Stopped using reserved layer name "signal" and instead output a full
-    padstack consisting of all pertinent layers for via, pads, and keepouts.
-
-
-2008-Feb-12 UPDATE   Tim Hanson sideskate@gmail.com
-================================================================================
-+eeschema
-    * commiting my changes to allow multiple instances of a given schematic file within a hierarchy:
-    ** internally, m_currentScreen has been replaced with m_currentSheet,
-        which is a list or 'path' of screens.  The path of screens is used to generate
-        a series of timestamps, which is converted to flat component reference via a look-up
-        table in the schematic files.
-    ** this means that m_currentScreen is no longer used -- use GetScreen().
-    ** GetScreen is virtual, as some of the dialogs keep around a WinEDA_BaseScreen pointer.
-    ** all sub-sheets in a given schematic must have different names to generate a meaningful netlist.
-
-
-2008-Feb-12 UPDATE Igor Plyatov <plyatov@mail.ru>
-================================================================================
-+eeschema
-    Added item "New" in "File" menu
-+all
-    Russian translation update.
-
-
-2008-Feb-11 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * Added case TYPETRACK, TYPEVIA, and TYPEMODULE support to Board::Add() so
-    that we can over time hide more of the storage architecture of a BOARD and
-    isolate those dependencies in fewer places.
-  * Fixed some pad orientation issues in specctra_export.
-  * Added VIA_MICROVIA & VIA_BLIND_BURIED support to SPECCTRA::makeVIA().
-  * Commented out the specctra design import menu choice for now, don't have
-    time or need for this import.
-  * Specctra export adds 1/2 mil to clearance rules for freerouter so that
-    the routed board clears our DRC checker OK.
-  * Session import seems done now.
-
-
-2008-Feb-7 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    added "const" to SEGVIA::GetDrillValue() const;
-    added GetDrillValue() to DRC instead of accessing SEGVIA::m_Drill directly.
-    changed specctra_export so it aborts if all reference designators are not
-    unique.  Unless they are unique we cannot import the routed session.  A
-    good example is the xylinx board which now fails to export.
-    first rough work on SEGVIA::makeVIA() but needs much more work.  Simple
-    session files with vias at least import.  Now encode drill diameter in
-    padstack name for later session import.
-    updated todo.txt file.
-
-
-2008-Feb-7 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    specctra import of *.ses, did tracks and components.
-    renamed copy_track.cpp to copy_track.cpp.notused
-    removed copy_track.cpp from pcbnew/CMakeLists.txt
-    added setlocale() around import and export for float text style.
-
-
-2008-Feb-6 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    started specctra imports of *.ses and *.dsn, by adding menus to File | Import.
-
-
-2008-Feb-4 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-    specctra_export.cpp now supports blind/buried/microvias. Fixed how modules
-    are displayed on back of board. Added a circle keepout for each copper-less
-    through hole.
-
-
-2008-Feb-3 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew
-  * specctra_export.cpp was not exporting the nets correctly, now fixed.
-  * Had a problem with an isolated pad modification on a single module instance
-    in the context of several unmodified instances of same module, now fixed.
-  * Fixed oval pads to make freerouting.net happy.
-    See: http://www.freerouting.net/usren/viewtopic.php?f=3&t=317#p408
-    Done with specctra export for now, will think about adding controls (by dialog)
-    on the export later.
-  * Beautification of a few modules.
-
-
-2008-Jan-31 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    remove the old EDGEZONE class.
-    A ZONE_CONTAINER class is used instead to handle the creation of a new zone outline
-
-
-2008-Jan-29 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew:
-    SPECCTRA export does most items now, except existing tracks.  Soon will
-    need testing.
-
-
-2008-Jan-28 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    - Better criteria to find starting poind in zone filling: the filling alg. uses
-    pads, vias and track ends to find where start the filling.
-    - Added a tool + option in popup menu in track mode (select track width):
-    when creating a track, if activated: if we starts on an existing track,
-    the new track takes the width of the existing track
-
-
-2008-Jan-27 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+all:
-    I got a patch from Mr. Wayne Stambaugh which makes it possible to compile
-    infospgm.cpp once and link the same *.o file multiple times.
-    Jean-Pierre, if you not yet using CMake, you should edit your make.include
-    so that infospgm.cpp is only compiled once for everything, not once per
-    program.  Wayne is a competent developer who contacted me about contributing.
-    I consider him a welcome addition to the developers, Dick.
-
-
-2008-Jan-25 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew:
-  * SPECCTRA export does padstacks ok, except that oval pad's arcs need to be split
-    into quarter circle arcs, and no consideration is given to "layer types".
-    See page bottom of page 74 of the SECCTRA Design Language Reference, May 2000.
-  * HISTORY_NUMBER was spelt with a zero.
-  * Width was spelt as Widht
-
-
-2008-Jan-25 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    - void Change_Side_Module( MODULE* Module, wxDC* DC ) is now member of class BOARD.
-
-    - Better support for micro vias and buried vias (drill files now are useable for board manufacturers)
-    But not yet tested by a board manufacturer. Be carefull.
-    Todo: tools to conversion  between via through and buried via and buried viad optimisation.
-    But must works for micro vias (needed for my next board)
-    (in pcbnew micro vias are blind vias between 2 adjacent layers: micro vias must be enabled
-    in Dimensions/track and via menu, and placed by ctrl v.
-    They are intended to connect small pitch BGA pins to the inner layer, and can be drilled by laser
-    if the hole diameter is small < 0.2mm. A laser can only drill a hole between 2 adjacent layers ).
-
-    ** Currently use buried via for tests only, not for production **.
-
-
-2008-Jan-24 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew:
-  * Export a specctra *.dsn file includes some padstacks, not ovals yet.
-  * Many many refinements to specctra.cpp and specctra.h.
-  * added COLLECTOR::BasePtr(), which is used in qsort.  Could have used
-  * std::sort() instead.
-  * Wrote D_PAD::Compare()
-  * updated todo.txt
-
-
-2008-Jan-24 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Bugs about fill zones removed (not all, of course).
-    Fixed an old bug in block delete (could crashes pcbnew after deleting footprints).
-
-2008-Jan-23 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew:
-  * Export a *.dsn file includes ZONE_CONTAINERs, was actually able to load
-    a board with zones into the freerouter.net package!  No components, traces yet,
-    just zones and layers.  Fixed parsers and Format()ers.
-  * Rewrote SPECCTRA_DB::readTIME() to dodge a missing strptime() on windows.
-
-
-2008-Jan-23 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Plot option in GERBER format Plot (Exclude Edge Pcb layer) modification:
-    - the default is OFF (like odl pcbnew versions)
-    - this setup is now save in config (is persistant)
-
-    In Zone creation, now delete last created corner works.
-
-2008-Jan-22 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew:
-  * Actually able now to export a *.dsn file, but the contents of the file
-    is incomplete, not a complete input BOARD.
-  * Added DRAWSEGMENT::Show() for debugging.
-  * Changed specctra.h's POINT to use double for coordinates.  Changed format
-    string for Format()ing a double.
-  * Changed specctra_export.cpp to actually output an incomplete file.
-  * Added BOARD::GetCopperLayerCount() and BOARD::GetLayerName().
-
-
-2008-Jan-21 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew:
-    Added specctra_export.cpp, specctra.cpp, specctra.h, dsn.cpp, and dsn.h to
-    pcbnew's link requirements. Updated CMakeLists.txt to reflect this. This
-    increased pcbnew's size by 175kb so far. Started the actual export (i.e.
-    BOARD to DSN::PCB copying logic) which is going into specctra_export.cpp's
-    void WinEDA_PcbFrame::ExportToSPECCTRA( wxCommandEvent& event ) so that the
-    huge header file, specctra.h need only be included in one or two *.cpp
-    files. The specctra export menu support was added to id.h, wxPcbStruct.h,
-    menubarpcb.cpp, and pcbframe.cpp. After dsn export, I intend to add an
-    import, and a session file feedback merge. See the revised
-    how-to-build-kicad.txt for the new boost c++ libraries requirement.
-
-
-2008-Jan-21 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    labels and texts display changed when rotated 180 degres:
-    horizontal text are now right justified insteed of 180 degree rotated, and are readable.
-
-+pcbnew:
-    bug 1874663 solved (edit a pad netname does not work very well)
-
-2008-Jan-20 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    On line DRC when creating a zone outline.
-    Needs more work to display errors DRC.
-
-
-2008-Jan-18 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all:
-    filtering small mouse moves ( < 5 pixels) when clicking.
-    Starting a wire or a track is now more easily because these small moves do not start a block commnad.
-
-+pcbnew:
-    rework of drill filles creation (excellon and reports)
-    needed to have a clean implantation of buried vias and mainly microvia
-    which involve a more complex drill files generation
-    This is better to continue work on zones because :
-    hight density boards = use of BGA = microvias + good zones handling
-    When a board has buried or blind vias (microvia are blind vias),
-    pcbnew creates a drill file per layer pair. for a 4 layer board:
-    drill file for layer1 to layer 2
-    drill file for layer2 to layer 3
-    drill file for layer3 to layer 4
-
-
-2008-Jan-18 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-    how-to-build-kicad.txt: added the Boost C++ Libraries installation info
-    and requirement.
-
-
-2008-Jan-16 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Move Zone outlines added
-    Zone outline DRC works (needs improvements)
-    some bugs solved, but polyline.cpp still needs work.
-    gendrill: code cleaning.
-
-2008-Jan-14 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    code cleaning:
-     DRAWSEGMENT class functions moved in the new files class_drawsegment.cpp et .h
-
-
-2008-Jan-12 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+eeschema:
-    missing footprints in export netlist (bug 1867321)
-    Affected: PadsPcb converter did not list all footprints
-
-+pcbnew:
-    fixed: memory not freeed in block copy (minor bug)
-    Support for micro vias (generation of drill files not finished)
-
-2008-jan-06 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Block commands now works with zones.
-    Some code cleanning.
-
-
-2008-Jan-5 UPDATE   Dick Hollenbeck <dick@softplc.com>
-================================================================================
-+pcbnew:
-  * Added pad_shapes.h and blended it into class_pad.h and PolyLine2Kicad.h.
-    Renamed the pad shapes in there to avoid namespace conflicts.
-    RECT became PAD_RECT, CIRCLE became PAD_CIRCLE, etc.
-  * common.cpp's ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
-    has commented out code that I tested as part of a possible new scheme to support
-    custom layer names per project.
-  * More specctra dsn import export work.
-
-
-2008-jan-05 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    Added: Delete cutout outline in zone popup menu
-    the GUI about zones is now working.
-    Some work is needed ( a zone in a zone of the same net is not merged )
-    Currently No DRC for outlines
-
-
-2008-jan-04 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+pcbnew:
-    More about zones:
-        Outlines can be edited. Outlines are merged if needeed.
-        Currently No DRC for outlines
-
-
-2008-jan-01 UPDATE  Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-+all
-    wxstruct modified and wxPcbStuct.h added:
-        classes relatives to pcbnew, cvpcb and gerbview are moved in wxPcbStuct.h
-
diff --git a/Documentation/changelogs/CHANGELOG-2009.txt b/Documentation/changelogs/CHANGELOG-2009.txt
deleted file mode 100644
index d58d79ff65..0000000000
--- a/Documentation/changelogs/CHANGELOG-2009.txt
+++ /dev/null
@@ -1,1013 +0,0 @@
-KiCad ChangeLog 2009
-====================
-
-
-2009-Dec-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Added option to use some usual Gerber files extension, depending on the layer
-    Do not allow in plot menu to output files for non enabled layers.
-++Kicad and Gerbview
-    Display Gerber files that use usual files extension (in tree project or dialog files)
-    (See http://en.wikipedia.org/wiki/Gerber_File)
-
-2009-Dec-20 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    Renamed dialog_layers_setup* files.
-    Got rid of the header file since there was only one file including it.
-    Auto-position the column titles based on flexgridsizer column widths.
-    Added m_TitlePanel with contrasting background color (whose color value may not
-    be ideal for all platforms).
-
-
-2009-Dec-11 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    Finished the Layer Setup Dialog.  I assumed that the new layer order will
-    be in place soon.  It works fine now, but the layer order is probably
-    misleading, since it does not reflect the current stackup but rather the
-    future stackup.  I dropped support for a single layer board. The minimum
-    is two copper layers.  Avoid the side you don't want anything on.
-
-    Within a month I should have the layer visibility and selection widget
-    in place.
-
-
-2009-Dec-10 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-  * Factored out the DSNLEXER class so it can be re-used more generally.  The
-    constructor takes a keyword table, so it can be used for arbitrary DSN
-    syntax files of your own chosing.  Simply create an enum {} with all your
-    unique tokens in it.  Then create a KEYWORD table.  See SPECCTRA_DB::keywords[].
-    The reason you want an enum is to give the C++ debugger better type information
-    so it can show symbolic integer symbols.
-  * Factored out common richio.cpp and richio.h
-    which is what DSNLEXER uses.
-  * Fixed some minor issues with reading circuit descriptor from a *.dsn file.
-
-
-2009-Dec-6 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew & gerbview
-  * Moved ReturnLayerName() to static BOARD::GetDefaultLayerName() and migrated
-    to a Specctra DSN compatible default layer naming scheme:
-        Component becomes Front, Copper becomes Back.
-  * set_color.h: Cmp becomes Front, Cu becomes Back.
-  * D_PAD::DisplayInfo() changed to use actual copper layer names.
-  * more layer setup dialog work, moved all programmatic wxControl instantiation
-    into the wxFormbuilder environment, but this is fraught with danger:
-    wxFlexGridSizer used the tallest control to establish the row heights, so
-    be careful about changing control borders in the scroll panel. The vertical
-    size can explode since just a couple of pixels times the number of rows
-    is substantial.  Currently I am setting a 5 pixel border only left, top, and right
-    but not bottom.
-  * Set copper layer count is back in place as a hack until I can get the enabled
-    layer bit map fully operational.
-
-
-2009-Dec-3 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    Make the source file to the specctra freerouter help panel be html, not *.h
-    This makes it easier to preview the page in a browser.  Then autogenerate
-    the *.h file from the html using a CMake script.
-
-2009-Dec-2 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-Compiler warning, object name, bug, and string fixes.
-* Fixed EESchema options dialog focus bug so escape key now works in GTK.
-* Rename schematic objects for improved readability.
-* Fixed GCC compiler warnings in plot code.
-* Added paragraph in UIpolicies.txt about setting dialog box sizes.
-* Lots of message box string clean up.
-
-2009-Nov-05 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    control of masks clearance: Pad Editor Dialog rewritten to handle mask clearances
-    and a locad Net clearance
-
-2009-Nov-5 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-    CMakeLists.txt support for AUI.
-
-
-2009-Nov-04 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Added: control of masks clearance
-    - Solder mask clearance can be now defined at footprint and pad level
-    - Solder paste clearance can be now defined as a global value
-        and also at footprint and pad level.
-        The clearance is defined by a constant value and a value proportional to the pad size.
-        The final value is the sum of the 2 partial values
-    Note: this is a work in progress:
-        currently, the pad dialog is not finished and does not
-        have an option to enter the mask values
-    Planned:
-        option to define a net clearance at pad level and footprint level,
-        as an alternate value to the Netclasses values.
-        this option could be useful to create fiducials, and for very small footprints.
-
-
-2009-Nov-1 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * Added exporting of netclass vias to specctra_export.
-  * DIALOG_DESIGN_RULES now remembers its last selected TAB and screen position and
-    window size, and its grid columns are automatically expanded to fit the
-    column titles.  Remembering screen position and size allows someone with
-    multiple monitors to have a given window always come up on the monitor last chosen
-    for it.
-
-
-2009-oct-30 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-Replace library editor pin properties dialog box and minor update.
-* Replaced library pin properties dialog with wxFormBuilder version.
-* Remove DialogBlocks version of pin properties dialog.
-* Add pin properties dialog support code to pin object.
-* Create single event handler for displaying pin properties dialog.
-* Remove left over DialogBlocks project file for annotate dialog.
-* Fixed escape key bug in library editor new component dialog.
-* Add GetUnitsLabel() to get human readable units for dialog labels.
-* Translate French comments in all modified files.
-* Some minor clean up of Doxygen comments.
-
-2009-oct-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Rewrite the GUI relative to the tracks widths and vias diameters and drills selection
-    and edition, for compatibility with new netclass approach.
-    Now vias dimensions are defined by their diameter and drill values
-    (This is also a simpler an better way than the old one that considers
-    via diameters and drill values as independant parmeters)
-    When set a via to a "custom" value, the diameter and the drill values are set.
-    (of course one can use the drill defualt value of the netclass)
-    So the via hole edit options (in popup menu) does not exist no more.
-    The global tracks widths and vias diameters and drills changes are now
-    accessible by a specific dialog frame.
-
-
-2009-oct-27 UPDATE Jerry Jacobs <xor.gate.engineering@gmail.com>
-================================================================================
-++common
-    Doxygen output directory changed to Documentation/doxygen
-    Cleanup of HOTKEY IDs
-    Creation and cleanup of hotkey submenu
-
-++misc
-    Moved pcbcfg.cpp to pcbnew_config.cpp
-    Moved eeconfig.ccp to eeschema_config.cpp
-    Fixed typos
-
-2009-oct-23 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Rework on print function: fixed the fully broken print function in Modedit
-    and better code.
-    Removed the display vias option tool in Modedit and Gerbview left toolbar,
-    because this option has no sense here.
-
-2009-oct-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    * Work on Net Classes: tracks and vias sizes, vias drill
-    come from netclass netclasses values. Global values removed.
-    * Added for DRC drill vias and microvias min drill value
-
-2009-oct-20 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-Replace component library editor draw item dialog box.
-* Created new component library editor draw item dialog box with
-  wxFormBuilder.
-* Removed previous DialogBlocks version of the draw item dialog box.
-* Removed some additional global variables used in component library
-  editor.
-* Add IsFillable() method to draw item base object.
-
-wxWidgets 2.9 string fixes and other minor updates.
-* Replace all known instances of (const wxChar*) casts to GetChars() for
-  wxWidgets 2.9 compatibility.
-* Cleaned up get component dialog so last part gets saved on wild card
-  selections.
-* Remove redundant schematic component drawing code.
-* Added SCH_COMPONENT constructor to create new component from library
-  component object.
-* Add message panel helpers to WinEDA_DrawFrame and update old message
-  panel access code.
-* Using library viewer to add component to schematic now respects unit
-  and body style selection.
-
-2009-oct-14 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-Fix save last grid size and other minor updates.
-* Create single event handler for grid size events.
-* Fix all frame windows to use new grid size event handler.
-* Use offset relative to ID instead of ComboBox index to save last grid size.
-* Move last grid size load/save setting into WinEDA_DrawFrame.
-* Add equality and assignment operators the GRID_TYPE.
-* Add current grid helper methods to BASE_SCREEN.
-* Add GetPins helper to LIB_COMPONENT to replace GetNextPin where applicable.
-* Add AppendMsgPanel helper to WinEDA_DrawFrame.
-* Improve rounding for display of coordinates when millimeter units are selected.
-
-2009-oct-01 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-* Component library viewer restores state between uses.
-* Fixed automatic zoom calculations in library viewer.
-* Make library entry list dialog restore previous selection.
-* Fix bounding box calculation for vertical field and text draw objects.
-* Changed library draw object comparison to test for greater and less than.
-* Initial preparation for merging separate library component draw item lists.
-
-
-2009-sept-29 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-* Eliminate external direct manipulation of component draw item pointer.
-* Add draw item remove, add, and locate methods to library component object.
-* Remove redundant locate pin, field, and draw item code.
-* Fix add new pin drawing bug that left initial pin draw in place.
-* Improved best zoom calculations for small components.
-* Library component bounding box calculation now includes fields.
-* Removed unnecessary header file "libcmp.h".
-* Fixed potential locate draw item bug in library editor hot key handler.
-
-2009-sept-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    * make pcbnew compatible with last changes
-        (Delete base screen in WinEDA_DrawFrame destructor to prevent potential memory leak.)
-    * Starting complementary work on Net Classes (moving target)
-
-2009-sept-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-Component library editor improvements and minor bug fixes.
-* Component library objects renamed for improved readability.
-* Fields now move when selected in library editor.
-* Add copy constructor to all library draw and library component objects.
-* Added copy constructor to EDA_BaseStruct.
-* Delete base screen in WinEDA_DrawFrame destructor to prevent potential memory leak.
-* Fixed memory access bug when replacing and adding a component to library.
-* Moved library component block manipulation code into component object.
-* Removed all of the global variables used by the library editor main window object.
-* The usual code cleaning and refactoring.
-
-2009-sept-22:
-Command ID refactoring and other minor improvements.
-* Split out application specific command IDs to prevent unnecessary rebuilding.
-* Eliminate duplicate menu and tool bar command IDs.
-* Split component library editor and viewer definitions to separate header files.
-* More component library and document file merge code.
-* A bunch of minor string readability and consistency fixes.
-
-2009-sept-18:
-Component library object and other minor improvements.
-* Create static component library methods to manage library list.
-* Rename component library, component, and alias objects to more readable name.
-* Use pointer to component instead of root name to prevent redundant library searches.
-* Add append message helper to message panel that calculates string length.
-* Initial ground work for merging library and library document files.
-* Improved component library file load error checking.
-* Minor component library editor improvements.
-
-
-2009-sept-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Speed up ZONE_CONTAINER::Copy method
-    Speed up NETINFO_ITEM* BOARD::FindNet( const wxString& aNetname ) by using afast binary search
-    Switch to kbool V2.1. This version solves others problems in zones calculations.
-    Adding another way to generate thermal shape; DO NOT USE: this is for kbool tests only
-    (I am thinking some bugs are remaining, so i am always working on kbool tests.
-    Klaas Olwerda is supporting me)
-
-
-2009-sept-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    moved copper layers properties (layers couns anf layers names) from Design rules
-    to a specific dialog.
-    This must be seen as a TEMPORARY work, until a volunteer creates a better dialog box,
-    because there is currently no other way to change copper layers names.
-
-2009-Sep-10 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    Finished initial NETCLASS work, along with UI.  Put NETCLASS support
-    into DRC.  Fixed DRC dialog so progress during DRC is sensible and visible.
-    The specctra_export probably still needs a little work regarding VIAs.
-    I compiled wxformbuilder from source, so you may need to upgrade to
-    load my *.fbp files.
-
-    Jean-Pierre @   todo:    pcbnew/zones_test_and_combine_areas.cpp needs to
-                             use NETCLASS and not g_DesignSettings.m_TrackClearance
-
-
-2009-sept-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Work on undo/redo in pcbnew finished.
-    Switch to kbool V2.0. This version solves some problems in zones calculations but not all.
-    The Kbool's author, Klaas Holweda, is still working on these problems
-    Thanks to Klaas
-
-
-2009-aug-23 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Work on undo/redo in pcbnew almost finished.
-
-2009-Aug-16 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * first of my work on NETCLASSes, more to come.
-    wrote: BOARD* BOARD_ITEM::GetBoard(), int BOARD_CONNECTED_ITEM::GetClearance( BOARD_CONNECTED_ITEM* ),
-    rewrote: classes NETCLASS, NETCLASSES, BOARD::SynchronizeNetsAndNetClasses(),
-    added: NETCLASS::m_ViaDrillSize, NETCLASS::m_Description.  Removed netname from
-    EQUIPOTs in *.brd file (were redundant with NETCLASSes in *.brd file).  NETCLASSes
-    now follow EQUIPOTs in *.brd file.
-    NETs and NETCLASSes are linked by pointer from class NET.
-    BOARD::SynchronizeNetsAndNetClasses() will validate pointers, NETs and NETCLASSes.
-  * Pay particular attention to the new:
-    int BOARD_CONNECTED_ITEM::GetClearance( BOARD_CONNECTED_ITEM* aItem ) const
-    which considers two netclasses and finds the largest distance from the two
-    involved.
-  * I would love to see class NETINFO_ITEM renamed to NET.
-
-
-2009-Aug-6 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    MsgPanel is dynamically sized based on system gui font.  Before this fix
-    the window height was hardcoded and was too small on systems with large
-    fonts.  See  WinEDA_MsgPanel::GetRequiredHeight();
-
-
-2009-aug-08 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Work on undo/redo in pcbnew in progress.
-    SEG_ZONE is now deprecated.
-    When a zone is fille by segment, the ZONE_CONTAINER handles these segments
-
-2009-july-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Starting work on undo/redo in pcbnew.
-    Currently, undo redo commands are only delete one item (and only for some items)
-
-
-2009-july-25 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++all
-    Rework on undo/redo and block functions
-    Better and simpler coding of block and undo/redo functions
-    The goal is to have the same functions in eeschema and pcbnew.
-    and have a full undo/redo in pcbnew.
-
-2009-july-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    First work about net classes. This is a work in progress and a moving target.
-    Manual routing and DRC do not use yet this feature
-
-
-2009-Jul-13 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    added support to specctra import for the <structure_out> descriptor.
-    <route_descriptor> had confused <structure_descriptor> with the <structure_out_descriptor>
-    The fix facillitates round tripping from the TOPO-R router.
-
-
-2009-july-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Eeschema:
-    Enhanced netlist creation and ERC tests for component having multiple parts per package
-    Connecting power pins of all parts is no more needed.
-    Usually, these components have in schematic duplicated  power pins.
-    Op amps having 4 parts have also 4 duplicated  pins per power input,
-    and therefore the user must place 4 power symboles per physical power pin
-    Now Only one power is needed (now eeschema search for a connected pin
-    between duplicated power pins)
-    Note this is a work in progress because the ERC does not check if these duplicate
-    are connected to the *same* net.
-
-2009-july-06 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++All:
-    Use a common class for markers in pcbnew and eeschema:
-    created a basic class called MARKER_BASE
-    class DRC_ITEM is also common to pcbnew and eeschema
-    class MARKER (in pcbnew) and class MARKER_SCH (eeschema) are derived
-    from this basic class.
-    The main goal is to use a common class for pcbnew and eeschema to handle
-    errors and to have similar dialogs
-    and have more comprehensive ERC messages errors in eeschema
-    This is a work in progress
-
-
-
-2009-july-05 UPDATE Jerry Jacobs <jerkejacobs@gmail.com
-================================================================================
-+ Closing bug 2802441, No single error messages any more, 2009-06-07 over2there.
- Fixed this both in eeschema and cvpcb, for now printing wxstring in a
- messagebox. Should make a nice textctrl dialog.
-+ Added cvpcb directory to Doxyfile
-
-2009-june-19 UPDATE Jerry Jacobs <jerkejacobs@gmail.com>
-================================================================================
-Added Hauptmech patch.
-I Updated doc to match this patch.
-
-++Pcbnew:
-> * Board thickness in the 3D view can be set in *.pcb files (hand edit)
-> * Hotkey files bug: incorrect file extension as default in some open/save dialogs.
-> * Hotkeys made available for pcbnew [add track] and [add module] tools.
-> * Drag and Move hotkeys extended to drag tracks and move nodes/vias when the [add track] tool is active.
-> * Show/Hide Invisible Text button added to lefthand menu
-> * Dropdown list of clearance history available next to trackwidth history.
-
-
-2009-june-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Added: in DRC tests: tests for vias min size and tracks min width.
-    Added: Option to show the via area while creating a new track.
-        Useful in compact designs to know how to place a via during track creation.
-
-2009-june-11 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Eeschema:
-    Added text justification for graphic texts in libedit
-    Minor bug 2803506 fixed (error when mirroring bus entries)
-    Some code cleaning.
-    Better locating algo for arcs in libedit
-
-2009-may-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Eeschema:
-    Changes about thickness of lines in draw/plot functions.
-    Now there is only one thickness parameter for plot and print.
-    This is now the default thickness value,
-        used for items that have a line thickness = 0,
-        and NOT the minimum thickness.
-    reasons:
-        - Obviously, differents parameters to draw and plot are bad.
-            (what you plot is NOT what you see)
-        - small texts are not readable with an minimum thickness value
-            that could be good for others items.
-
-
-2009-may-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++All:
-    Cleaned and optimized code about new hershey fonts and bold texts handling.
-    Bold texts use now the same font as normal texts.
-    Only the pen size used to draw them is bigger.
-    - The max pen size allowed depending on texts sizes is now tested
-        when loading boards and modules, and clamped if too large.
-
-
-
-2009-may-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Finished code cleaning about ratsnets calculations and handling
-    Obscure code removed ( I hope)
-    Better names for some members of BOARD class.
-
-2009-may-24 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    clean code in ratsnet calculations (work in progress)
-    The old code was very difficukt to understand, and was sometime very ugly.
-    Mainly, the list of nets (RATSNEST_ITEM class, formerly EQUIPOT class)
-    are now handled in a std::vector, and not a linked list.
-    This is better, because nets identifiers for pads and tracks are a number called netcode.
-    now, this is the index of the given net in this list, and the code to find a net given by its netcode
-    is very fast.
-
-
-2009-may-12 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++All:
-    Rework on TEXTE_PCB, SCH_TEXT and EDA_TextStruct classes.
-    Code seriously cleaned, obscure and duplicated code removed,
-    and some oddities removed ( like different .m_Orient values in eeschema and
-    pcbnew, for the same text orientation )
-    Multiline texts (in comments and Pcb texts) are now supported.
-    In pcbnew text justifications could work (but not yet used and tested)
-
-
-2009-may-01 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew:
-    Better dialog options for zones on technical layers.
-    Zones on silk screen filled with segments are now plotted
-    Better support of multiline texts (work in progress)
-
-2009-apr-25 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ Eeschema:
-    When annotating: tests and repairs bad (duplicated) time stamps.
-    Can be found in old schematics or converted from others tools ...
-
-2009-apr-24 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Fixed: fully broken netlist import from eeschema when using time stamp.
-    (normal operation worked fine)
-    Added: alawys print diags in dialog window when reading a netlist
-
-2009-apr-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ALL:
-    Code clarification: There were 3 functions to display info:
-    - DisplayInfo (displaying a message info)
-    - class members DisplayInfo and Display_Infos doing the same thing
-      (and sometimes these 2 functions were existing in some classes)
-    This was *very* confusing and created minor bugs
-     (info in eeschema was not always displayed, because the "bad" function was used)
-    Now DisplayInfo is renamed DisplayInfoMessage
-    Ann class member DisplayInfo is used in all classes ( replaces all Display_Infos instances)
-
-2009-apr-12 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++eeschema:
-    Default libraries path are now differents for pcbnew and eeschema (as it do)
-    Fixed: bad library search path for schematic component docs (docs were not found)
-    Added: display actual lib paths in eeschema lib config dialog.
-
-    These next fix give the same behavior than "old" version
-    Use relative paths in libraries and doc filenames when possible
-    i.e when a file is found in a sub path in a default path
-    (very important for Windows/linux/mac compatibility of projects and their configs)
-
-    TODO: allows user to add paths in list. Currently the user path for lib is broken
-    (but the new code could allow the user to add more than one user path)
-
-    TODO: do the same for pcbnew and cvpcb
-
-2009-apr-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++eeschema:
-    - Viewlib: listboxes for lib or component selection are now resizable
-    - library cache name changed from <root_name>.cache.lib to <root_name>-cache.lib
-    Needed by the new code using wxFileName.
-    When wxFileName calculate the filename, it returns <root_name>,
-    and the old code returns <root_name>.cache
-    So to avoid problems or ugly code, the lib cache name is now <root_name>-cache
-    Old cache is used if the lib cache with the new name is not found.
-
-
-2009-apr-07 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew:
-    fixed: bug 2738052 (Delete tool does not delete zones outlines)
-++eeschema:
-    fixed: void history file list in menu
-++All:
-    made GetAssociatedDocument() compatible with last changes in kicad path handling.
-    Get PDF doc associated with a component now works
-    Some work still needed.
-
-2009-apr-06 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++common:
-    overbar patch merged in drawtxt.cpp and mainly in eechema/class_pin.cpp
-    some cleanup and some compiling problems fixed.
-
-++eeschema:
-    changed dialog_eeschema_config.cpp to use wxFormBuilder to create
-    the corresponding equivalent dialog in dialog_eeschema_config_fbp.cpp
-
-2009-apr-05 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++All
-  * Removed all instances #ifdef eda_global, COMMON_GLOBL, and MAIN in order
-    to unobfuscate global variables.
-  * Moved global variables common to all applications into common.cpp.
-  * Moved global variables common to Pcbnew, Gerbview, and Cvpcb into
-    pcbcommon.cpp.
-  * Create pcbcommon library to prevent compiling shared PCB drawing object
-    files multiple times.
-  * Replaced round() with wxRound and eliminate MSVC specific implementation.
-  * Moved project configuration files into the application class.
-  * Moved editor name global variable into the application class.
-  * Created load and save settings methods for basic frame class and begin
-    putting global variables in the class where they are used.
-  * Start replacing obsolete wxWidgets file functions and redundant Kicad
-    file name manipulation code with wxFileName.
-  * Initial library search path implementation using wxPathList.
-  * Define correct wxFileDialog wild cards.
-  * Apply patch Fix typo in about box to keep MAC folks happy.
-  * Lots of general code clean up, spelling error fixes, and uncrustification.
-  * Renamed Affiche_Status_Box to UpdateStatusBar.
-++EESchema
-  * Defined Load() method so library file drawing objects can load themselves.
-  * Defined GetBoundingBox() method so library file drawing objects can
-    calculate their own bounding box.
-  * Fix arc library drawing object bounding box calculation.
-  * Remember last import and export library path in library editor.
-  * Add new library search path support.
-++Kicad
-  * Eliminate the one giant case statement to rule them all command event
-    handler and create per command event handlers.
-++CvPcb
-  * Add new library search path support.
-  * Add message dialogs to prompt user of library file load errors instead of
-    failing silently.
-  * Fix NULL pointer bug were display frame would crash CvPcb when
-    WinEDA_DisplayFrame::Get_Module() could not find foot print module.
-++PcbNew
-  * Add new library search path support.
-  * Add message dialogs to prompt user of library file load errors instead of
-    failing silently.
-
-
-2009-mar-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew:
-    added BOM generator (in postprocess menu)
-
-
-2009-mar-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++All
-    code cleanup in project_config.cpp.
-    Now parameters common to all projects are saved on exit.
-    (they are usally options like colors, draw options ...)
-
-++pcbnew:
-    added option to show or not netnames on pads and tracks
-
-
-2009-mar-23 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-    in DRC: added test pads to holes.
-++Al:
-    minor changes.
-
-
-2009-mar-16 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-    Fixed:
-        bug that crashes pcbnew when removing all footprints
-        (in connection calculations, pointers to pads not reset)
-
-        bug that crashes pcbnew when filling a zone
-            if a module has a trapezoidal pad
-            (trapezoidal pads are not yet implemented in zone filling,
-            they are now calculated as rect shape (todo: a better handling) )
-
-
-2009-mar-12 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++eeschema:
-    Added: option to print ALL users fields in B.O.M.,
-    so if more than 8 fields, they are printed. (issue 2680640)
-
-++pcbnew:
-    Added 5 metric grids (1mm, 0.5mm 0.25mm 0.2mm and 0.1mm) in default grid list.
-    Minor bug in drill map creation (PS format) fixed
-
-2009-mar-11 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-    fixed: a bug that can delete an existing zone after creating a new zone,
-        if the new zone contains this existing zone
-        This is a DRC error, buf can be temporary possible when creating complex zones
-
-2009-mar-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-++gerbview:
-    print,plot: error message displayed when no layer selected.
-
-
-2009-Mar-5 UPDATE Vesa Solonen <vesa.solonen@hut.fi>
-================================================================================
-++pcbnew:
-    bug fix in zones_convert_brd_items_to_polygons.cpp:
-        Fixes "thermal stub bleed" in zone fill. Small (compared to thermal width) pads are handled properly now.
-
-
-2009-mar-05 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-    bug fix in move_or_drag_track.cpp:
-        function SortTrackEndPoints() broken: does not handle pointers to pads for start and end and flags relative to these pointers
-        MergeCollinearTracks( ) broken, because it merge segments having different width or without any connectivity test.
-            2 collinear segments can be merged only in no other segment or vais is connected to the common point
-            and if they have the same width. See cleanup.cpp for merge functions
-        These functions break the connectivity calculations.
-        So they are temporary disabled (see my comments in these functions)
-    bug fix in Marque_Une_Piste(): the last segments created can be see as part of the flagged track:
-        so delete track (or edit track width) deletes the track and some others segments (last created)
-    bug fix 2660689 Unconnected pads in RC4. Also fixed some no deletion of the old track when creating a new track
-
-
-2009-Feb-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Fixed hot key bug that caused undo and redo events in the library editor
-    to be passed to the schematic frame.  Fixes bug #1896790.
-  * Fixed hot key bug that allowed new wire to be placed during block move
-    causing a manage cursor message box to pop up.
-  * Fixed hot key bug that allows an object in block to be deleted during
-    a move or drag operation.
-
-
-2009-Feb-25 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * Markers were not shown when on top of a high-lighted pad.  Moved highlight
-    drawing function into class BOARD and out of Frame.  Call BOARD::DrawHighLight() from
-    within BOARD::Draw() to fix.
-  * Gerbers were not generated if you had EDGE_MODULEs on a copper layer, such as in
-    a MuWaveBasicShape.  The line thickness was not being put into the gerber via a DCODE.
-    These gerber files were bad, and geda gerbv would also complain.
-  * A few window titles were not conformant with UIpolicies.txt.
-  * You could not load a *.pro file from another project into PCBNEW if your current
-    project had none.  Changed wildcard mask.
-  * Deleted gen_self.h and moved that code into muonde.cpp
-
-
-2009-Feb-24 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * dialog boxes calling OnInitDialog are flashing because these functions
-    change the size of controls that are already on screen.  This leads to
-    an annoying resize operation.  So I renamed OnInitDialog(event) to
-    void init() and call it from the constructors.  Did this for
-    dialog_general_options.cpp and dialog_display_options.
-  * dialog_general_options was not setting g_MagneticPadOption and g_MagneticTrackOption
-
-
-2009-Feb-24 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-    bug fix:
-        2628615 	  Error message after right click into zone
-        2625434  	  Crash after trying to edit a line/drawing
-++cvpcb
-    fix: 2625090  CVpcb - language selection
-
-
-2009-Feb-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++gr_basic.cpp
-    Added: Function ClipAndDrawFilledPoly()
-        Used to clip a polygon and display it as Filled Polygon
-        uses the Sutherland and Hodgman algo to clip the given poly against a rectangle.
-        This rectangle is the drawing area
-        this is useful under Linux (2009) because filled polygons are incorrectly drawn
-        if they have too large coordinates (seems due to integer overflows in calculations)
-        Could be removed in some years, if become unnecessary.
-
-
-2009-Feb-17 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    Loading a module into the module editor was changing the layer count
-    of a loaded board.  This is because void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
-    calls bool WinEDA_BasePcbFrame::Clear_Pcb( bool query )
-    which then sets the global g_DesignSettings.m_CopperLayerCount = 2;
-    This is terrible.
-    We need a layer count in each board, not as a global.  For now, comment out the assignment in initpcb.cpp.
-
-
-2009-Feb-17 Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-    Dialog track options redesigned with wxFormBuilder
-    Alt via drill renamed Specific via drill in dialog and popup menu.
-    Added tips in dialog.
-
-
-2009-Feb-09 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++eeschema
-    Changed dialog_edit_label so that it is UIpolicies.txt compliant.  Proper case
-    on window titles, resizeable dialog border, minimum text width handling.
-
-
-2009-Feb-7 Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++All:
-    change grid size type from integer to double (using wxRealPoint insteed of wxSize)
-    This is mandatory in Pcbnew to handle metric user grids without error
-    (was unusable before, using integer grid size).
-    A lot of footprints uses not metric grid.
-    refinements for user grid (mainly in read/write config).
-
-
-2009-Feb-06 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    added "cutout" from a ZONE_CONTAINER capability to the SPECCTRA export.
-    added "netless zone" support to SPECCTRA export.
-
-
-2009-Feb-6 Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-    Added  a forgotten contributor (Tim Hanson) to kicad contributor list.
-
-++pcbnew:
-    Zoom factors in 1.5 progression, and limited to 18 values
-    (near to to Wayne Stambaugh's changes: 15 values are not enought for pcbnew)
-    removed minor problems in zoom box selection (removed blank line).
-    Added user grid selection in modedit and refinements when user grid is selected.
-
-
-++eeschema:
-    Zoom factors in 1.5 progression, and limited to 15 values according to Wayne Stambaugh's changes.
-
-2009-Feb-05 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++All
-  * Change CMakeList.txt so that all PCB object classes that do not need built
-    separately for pcbnew, gerbview, and cvpcb only get built once and added
-    to the common library.
-  * Override all classes derived from WinEDA_BasePcbFrame so that the source
-    code file basepcbframe.cpp only gets compiled once and added to the common
-    library.
-  * Prevent cursor movement keys from moving outside of client area by
-    automatically scrolling the drawing.
-
-
-2009-Feb-4 UPDATE Vesa Solonen <vesa.solonen@hut.fi>
-================================================================================
-++pcbnew:
-++eeschema:
-    Zoom factors in 3th root series of 2. So two intermediates between half/double scale.
-
-2009-Feb-04 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++All
-  * Refactor header files to reduce the number of files that need recompiled
-    when making changes to base classes.
-  * Move sine and cosine look up tables from trigo.h to trigo.cpp to avoid
-    multiple recompiles.
-
-
-2009-feb-01 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++All:
-    change filename drawpanel_wxstruct.h to class_drawpanel.h
-    and move class BASE_SCREEN description from drawpanel_wxstruct.h to a new file: class_base_screen.h
-    minor enhancement for window zoom command.
-    refinements in 3D zones drawing.
-
-2009-jan-31 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++All:
-    Print functions and display zoom level modified to use the new zoom implementation
-    Comments added in some functions.
-    Code cleaning
-    some bugs fixed.
-    Added contributors to list in about Kicad.
-
-2009-Jan-29 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++All
-  * Replace zoom implementation with a more flexible ( and hopefully useful )
-    design.
-  * Removed gr_basic.h from fctsys.h so that the entire project doesn't get
-    rebuilt unnecessarily.
-
-
-2009-Jan-29 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-    common.c added EnsureTextCtrlWidth()
-++eeschema
-  * dialog edit component in schematic: make sure chipname text control is wide
-    enough to handle unusually long chip names.
-  * Retain and re-use user's desired dialog edit component window size.
-    Did not have time to look at dialog edit component in library.
-
-
-2009-Jan-27 UPDATE Vesa Solonen <vesa.solonen@hut.fi>
-================================================================================
-++pcbnew:
-    Zone arc approximation starts with half increment offset from v/h for pads and vias
-    to get more fill space between rows.
-
-2009-Jan-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++pcbnew:
-    Found why remove unused thermal stubs fails sometimes:
-    Only the first filled area in a zone was tested.
-    Solved.
-
-2009-Jan-18 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++All
-  * Replace Kicad file history implementation with wxFileHistory.
-  * Laid groundwork for search paths using wxPathList in EDA_Appl.
-  * Made ReCreateMenuBar actually recreate the menu bar.  Now language updates
-    to menus can be changed without restarting program.
-  * Lots of general housekeeping, simplification, and code beautifying.
-++EESchema
-  * Fix zoom and pan bug in library viewer panel due to incorrect DrawPanel
-    rectangle.
-  * Add zoom accelerator keys to library viewer (works in GTK, not Windows).
-  * Add Postscript header to new print dialog so Linux build works.
-++PcbNew
-  * Add Postscript header to new print dialog so Linux build works.
-
-
-2009-Jan-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++All:
-    Cleaned code in print dialogs.
-    They are now specific to eeschema and pcbnew.
-    Gerbview uses pcbnew dialog.
-    The code is now a lot more easy to understand.
-
-
-2009-Jan-15 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Pcbnew:
-    Added: patch from Rok Markovic (rok@kanardia.eu) to remove unused stubs in thermal pads
-    Modified: print boards when printing in color mode layers on one sheet:
-        now printed in OR mode like drawings on screen
-        Also in SVG mode, but OR mode seems not work very well in SVG mode (tested with inkscape).
-
-
-
-2009-Jan-11 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Pcbnew:
-    Added: print SVG format.
-    SVG print/plot function uses WRITE modeinsteed of OR mode as graphic mode.
-    todo ? uses OR graphic mode with black background color (wait and see)
-++eeschema:
-    Code cleanup for Print SVG format, and used wxFormBuilder in SVG print dialog
-
-
-2009-Jan-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Pcbnew:
-    Calculations to create filled areas in a zone modified and uses 2 pass:
-    1 - filled areas are calculated with pads in zone.
-    2 - If thermal shapes are wanted, they are added (i.e. copper removed after ).
-    Seen comments in zones_convert_brd_items_to_polygons.cpp
-    The initial method was calculate filled areas in one pass.
-    With the 2 pass calculation, the calculation time is more expensive but:
-     - Kbool seems now works correctly in cases where the one pass way does not work
-     - Thermal reliefs can have a better shape (todo..) because when calculating them, the filled
-       areas are known (this was not the case in one pass way)
-
-
-2009-Jan-08 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Eeschema:
-    Print and plot functions now properly prints all sheets in a complex hierarchy
-    plot files created have now a new filename in order to be compatible with complex hierarchies
-
-
-2009-Jan-07 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Eeschema:
-    Print function now properly prints all sheets in a complex hierarchy
-    Note: plot functions are not updated and do not plot all sheets.
-
-
-2009-Jan-07 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++all
-  * Don't pan or zoom on mouse wheel events when the cursor is not in the
-    drawing area.
-  * Reduce all zoom code to a single zoom command handler.
-  * Eliminate redundant zoom command identifiers.
-  * Move pop up zoom command handler from DrawPanel to DrawFrame.
-  * Change hot key zoom handlers to use command events.
-  * Added DrawFrame event table to replace COMMON_EVENTS_DRAWFRAME macro.
-  * Added locale path relative to binary path for development purposes.
-  * Minor code clean ups and duplicate header removal in files that were
-    updated.
-
-
-2009-Jan-04 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-    wxPcbStruct.h: made m_Pcb private, added GetBoard().   Am considering
-    putting each gerber layer into its own BOARD.
-
-
-2009-Jan-02 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
-================================================================================
-++Eeschema:
-    Code cleaning.
-    LibDrawPolyline uses now std::vector<wxPoint> to handle corners.
-    DrawPolylineStruct uses now std::vector<wxPoint> to handle corners.
-
diff --git a/Documentation/changelogs/CHANGELOG-2010.txt b/Documentation/changelogs/CHANGELOG-2010.txt
deleted file mode 100644
index 40f5d1bc27..0000000000
--- a/Documentation/changelogs/CHANGELOG-2010.txt
+++ /dev/null
@@ -1,1010 +0,0 @@
-KiCad ChangeLog 2010
-====================
-
-2010-dec-31 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++all
-  * Exclude boost header include path from Doxygen files.
-  * Coding guide line and doxygen warning fixes.
-++EESchema
-  * Rename OBJ_CMP_TO_LIST to SCH_REFERENCE.
-  * Move code related to SCH_REFERENCE into the object where it belongs in hope
-    that some day the object members can be made private instead of public.
-  * Add GetComponent method to sheet path and sheet path list objects.
-  * Move screen list code into screen list object.
-
-
-2010-Dec-28 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++richio:
-  * Deleted kicad_exceptions, because it required the big #include <wx/wx.h> and
-    that was slowing down compiling.  Moved that stuff back into richio.h where
-    it came from.
-  * Enhanced IO_ERROR to format an errorText.
-  * Added THROW_IO_ERROR() and THROW_PARSE_ERROR() macros to capture the
-    the call site of the thrower.  If you have problems compiling, it is probably
-    due to the definition of __LOC__ in richio.h.  Some compilers may not support
-    __func__ in C++ yet.  Find a macro that identifies your compiler, and we can
-    work out something in the #define of __LOC__.
-
-2010-Dec-28 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++new:
-    Completed most of /new class LIB_TABLE.
-    Completed all of /new class 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
-  * Doxygen comment warning fixes.
-  * Coding policy fixes.
-++common
-  * Add clone method to EDA_ITEM object.
-++EESchema
-  * Replace GenCopy() method with Clone() in all items derived from SCH_ITEM.
-  * Simplify repeat last schematic item with new Clone() method.
-  * Simplify duplicate schematic item method with new Clone() method.
-  * Separate objects in sch_items.h/cpp into separate files per object.
-
-
-2010-dec-20, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-common:
-    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
-
-
-2010-Dec-19 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++new:
-    Completed a good portion of /new class DIR_LIB_SOURCE.
-    Added an autonomous CMakeLists.txt file to /new, with new-docs target and
-    test program target.
-
-2010-dec-15, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Gerbview:
-    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.
-
-2010-dec-13 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-  * Remove deprecated options and quoted project name option in Doxygen file.
-  * Make Bazaar ignore the files generated by Doxygen in the new folder.
-++EESchema
-  * More schematic component encapsulation work.
-  * Doxygen comment fixes.
-
-
-2010-Dec-13 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++eeschema:
-    Committed a new design for a "Distributed Library System".
-    To make the html docs, run doxygen in <kicad_base>/new with that as your
-    current working directory, or run the shell script in there.  You need
-    Doxygen installed.
-
-
-2010-dec-13 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++common
-  * Make base marker hit test method const.
-++EESchema
-  * Improve hit testing for schematic components.
-  * Add initial support for hit test filtering.
-  * Moved static function CountConnectedItems() into SCH_SCREEN object.
-  * Add IsConnected() method to SCH_ITEM object.
-
-
-2010-dec-10 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++All
-  * Make a whole bunch of object methods const in order to make HitTest() const.
-  * Lots of coding policy fixes.
-++common
-  * Add Inside override to EDA_Rect to test if another EDA_Rect is inside.
-  * Add additional parameter to EDA_TextStruct GetTextBox method to support
-    Y axis inversion and non-default thickness.
-  * Add accuracy parameter to EDA_TextStruct TextHitTest method.
-++EESchema
-  * Refactor schematic object hit testing to provide coherent object interface.
-  * Remove redundant GetBoundaryBox from schematic component object.
-  * Remove redundant layer member from schematic text object.
-  * Create hit test override to check for rectangle intersection and
-    containment.
-  * Simplify schematic block selection hit testing.
-  * Make schematic and component library object enum naming consistent.
-
-
-2010-dec-08 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++All
-  * Coding policy object naming and formating fixes.
-++GerbView
-  * Fix compiler warnings.
-++Common
-  * Change item list type from SCH_ITEM to EDA_BaseStruct in BASE_SCREEN
-    object.
-  * Encapsulate BASE_SCREEN drawing item list member.
-  * Change grid container from wxWidgets to standard C++ container.
-
-
-2010-dec-07 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Finish encapsulating LIB_FIELD object.
-  * Encapsulated all members currently in use in LIB_PIN object.
-++Common
-  * Add SetModified() helper to EDA_BaseStruct object that checks for a parent
-    object and sets it's modified status as well.
-
-
-2010-dec-02 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Move color configuration dialog to dialogs folder.
-  * Simplify color configuration dialog design, remove enable grid checkbox( I
-    think we have enough places to do this), and remove abbreviated labels.
-  * Restore changing value field behavior to create new component from the
-    current one and handle all of the potential library naming conflict issues.
-  * Create a toolbar button perform the same function as renaming the value
-    field for improved usability.
-  * Add new copy component bitmap contributed by Jean-Pierre Charras.
-
-
-2010-dec-02, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Pcbnew:
-    For zone filling algo, change the default polygon library from Kbool to Boost::polygon.
-
-
-2010-dec-01, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Gerbview:
-    Added support for complex definitions of parameters in aperture macros and primitives macro
-    (a complex definition in a parameter that is calculated by an arithmetical expression)
-    Gerbview should now have a decent support of Gerber language.
-    Currently only the obscure knockout command is not supported (I have no motivation to do that)
-    Other "bug":
-    scale in A and B axis is poorly supported: coordinates are scaled, but shapes can have problem:
-       fro instance, a circle is drawn as a circle when A and B scales are different,
-       and perhaps should be an ellipse.
-       On the other hand, Gerber doc is not clear about the meaning of A and B scale.
-       (Alas! Gerber doc is not clear about most of advanced commands)
-
-
-2010-nov-19 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Move library new component and schematic edit sheet dialogs to dialogs
-    folder.
-  * Set library new component and schematic edit sheet dialogs default button.
-  * Create wxFormBuilder version of edit sheet label dialog and remove hand
-    coded version.
-  * More coding policy fixes.
-
-
-2010-nov-19 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Move library dimension, schematic configuration, and schematic options
-    dialogs to dialogs folder.
-  * Set library dimension, schematic configuration, and schematic options
-    dialogs default button to OK button.
-  * Kicad coding policy clean ups.
-
-
-2010-nov-17 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Move library text edit, library draw item edit, SVG print, and BOM dialogs
-    to dialogs folder.
-  * Rename library text edit dialog file and object names to comply with
-    coding policy.
-  * Set default button in library text edit, library draw item edit, SVG print,
-    and BOM dialogs.
-  * Move BOM dialog code into BOM dialog object source file.
-
-
-2010-nov-11 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Make schematic object file naming consistent.
-  * Move annotate dialog to dialogs subdirectory and set the "Annotation"
-    button as the default.
-  * Move ERC dialog to dialogs subdirectory and set the "Test Erc" button
-    as the default.
-  * Move the print dialog to dialogs subdirectory and set the "Print" button
-    as the default.
-  * Create print dialog header and move the OnPrint() method into
-    schframe.cpp.
-
-
-2010-nov-10 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Header file rationalization.
-  * Move schematic object load code into the appropriate schematic object.
-
-
-2010-nov-3 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++common
-  * Initial ground work for using Boost container for storing draw items
-    instead of internal linked list.
-++EESchema
-  * Move tests for dangling end code back into schematic objects.
-  * Add clear draw object state helper to SCH_SCREEN object.
-  * Add support for schematic objects to keep temporary list of connection
-    objects for dangling end and other connection related tests.
-  * Rearrange schematic label object code.
-  * Remove duplicate error message boxes when loading schematic items.
-
-
-2010-oct-28, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-PolyLine.cpp:
-    remove unused method CPolyLine::TestPointInsideContour() which was a duplicate of
-    TestPointInsidePolygon().
-    In CPolyLine::TestPointInside(); replace curious algo (which have a problem)
-    to test a point inside a polygon by TestPointInsidePolygon()
-++Pcbnew:
-    fix a bug in Drc and clearance calculations when using a dummy pad
-    ( in zones calcualtions and to test holes ot tracks and holes to pads DRC).
-
-2010-oct-26 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Change screen list object array type from wxARRAY to std::vector.
-  * Move all SCH_SCREEN methods into file class_sch_screen.cpp.
-  * Move find dialog files to dialogs sub-directory.
-  * Remove hallucinatory save and restore methods I wrote from component
-    library draw objects.
-  * Merge external TstAlignSegment function to SCH_LINE::MergeOverlap method.
-  * Move save schematic method to files-io.cpp and remove empty file
-    save_schemas.cpp.
-++include
-  * Remove unused internal link list next and back methods from base screen
-    object.
-
-
-2010-oct-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema
-  * Remove common library component and alias base class CMP_LIB_ENTRY.
-  * Derive LIB_COMPONENT and LIB_ALIAS directly from EDA_BaseStruct.
-  * Encapsulate most library draw item object members.
-  * Make most library draw item get methods constant.
-  * Merge two edit component properties methods into a single method.
-  * Update double click left mouse button to use merged edit component
-    properties method.
-  * Set schematic find dialog find button as default button.
-++include
-  * Add in-line flag state helpers to EDA_BaseStruct.
-
-
-2010-oct-22 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-  Component library editor bug fixes and other minor fixes.
-  * Fix bug that prevented component from being replaced in library when
-    the component root name was changed.
-  * Fix drawing bug when changing text or field item string while move in
-    progress.
-  * Fix drawing bug when rotating text item while move in progress.
-  * Prevent undo or redo when editing a component draw item.
-  * Fix assert bug when replacing component in library when the component
-    root name was changed.
-  * Fix bug in field editor caused by new root alias implementation that
-    prevented any field from being changed.
-  * Fix minor spacing issues with EESchema find dialog.
-  * Deprecate remaining internal linked list code from component library
-    objects.
-  * Rename pin object files to match new library object file naming
-    scheme.
-  * Move LIB_TEXT object definition into it's own header file.
-
-2010-Oct-20 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++richio:
-    LINE_READERs will now allocate a smaller initial size buffer, say 5000 bytes,
-    and then resize their buffers up to some provided maximum, after which an
-    exception is thrown should a line exceed that maximum line length.
-
-
-2010-oct-15, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++gerbview:
-    Added support for gerber commands:
-    SR (Step and Repeat)
-    multiple MOIN and/or MOMM in file (switch units from inch to mm and mm to inch)
-
-2010-oct-09, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++gerbview:
-    Fixed some issues:
-        Now aperture macro with parameters works.
-        Note: complex parameters (like $1 + 4) are not supported
-
-        other commands not yet supported:
-        SF (scale factors)
-        Offsets (image and layer)
-        Rotations (image and layer)
-        Axis definition
-        Mirroring
-        SR (Step and repeat)
-        KO
-
-2010-Oct-5 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++richio:
-  * LINE_READER now has a GetSource() function which is used in error
-    reporting.  This is typically the name of the file which is supplying the
-    lines of text, or string "clipboard" if the text is coming from the clipboard.
-    Derived classes FILE_LINE_READER and STRING_LINE_READER's constructors both
-    need an additional parameter which identifies the source.
-  * FILE_LINE_READER now owns the source FILE and will close it in its destructor.
-    This resulted in the removal of several fclose() statements that had been
-    there to close a file associated with a FILE_LINE_READER.
-  * DSNLEXER now supports an internal LINE_READER* stack which is used to handle
-    nested s-expression files, with the ability to resume from the proper place
-    in the containing file.  There is now PushReader() and PopReader() functions
-    in DSNLEXER to handle this.  No protection is provided against circular
-    inclusions, but this could be done by searching the stack and comparing
-    GetSource() values for anything already on the stack before pushing.
-    Each s-expression grammar is free to define one or more keywords that cause
-    nesting to occur. That policy choice is not part of DSNLEXER's job.
-    One example might be:
-    (inherit (footprint library_uri ftprintname))
-
-2010-oct-04 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-  Initial work on new component library stucture.
-  * Use C++ map in component library instead of boost::ptr_vector.
-  * Drop Boost pointer containers for standard C++ containers.
-  * Moved duplicate name user interface elements from library object to
-    library editor.
-  * Added code to support direct addition and replacement of component
-    alias objects into libraries.
-  * Removed temporary strings used to add and remove alias objects.
-  * Libraries only store alias objects, components now accessed thru alias.
-  * Simplify library API for adding, removing, and replacing components.
-  * Updated edit component in library dialog and library editor to reflect
-    component library object changes.
-  * Fixed bug in library viewer when displaying alias name.
-  * Made a few header files compile stand alone per the new coding policy.
-  * Remove some dead code and the usual code formatting fixes.
-
-
-2010-oct-03, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++gerbview:
-    finished Draw functions for aperture macros.
-    Now aperture macros are draww correctly.
-    Known bug: aperture macros having parameters are incorrect: parameters are not transmited correctly.
-    Work still in progress.
-
-2010-sept-28, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++gerbview:
-    Important changes:
-    graphic functions rewritten.
-    graphics items are now specific to gerbview (added a GERBER_DRAW_ITEM class)
-    and do not use tracks from pcbnew.
-    The way used to draw them is also new.
-    Apertures are now correctly drawn for round, oval, rectangular and regular polygon shapes
-        (with or without holes)
-    Aperture definition type Polygon is not yet handle.
-    Polygons are correctly drawn.
-    TODO:
-        Draw functions for aperture macros.
-    Work in progress.
-
-
-2010-Aug-9 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++CMakeModules:
-    Revise TokenList2DsnLexer.cmake to take outCppFile and outHeaderFile optinally
-    and enum mandatorily.  Standardize the script's invocation technique within
-    all the CMakeLists.txt files.
-
-2010-Aug-8 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++CMakeModules:
-    Revise TokenList2DsnLexer.cmake to make an entire derived lexer class that
-    returns the proper enum type for superior debugging.
-++eeschema
-  * netform.cpp now outputs the allowed footprint filters for a given library
-    component.
-  * There is an auto-generated class called NETLIST_LEXER which is defined in
-    from netlist.keywords by TokenList2DsnLexer.cmake into netlist_lexer.h, that
-    may be the basis of loading a S-expression form of the generic netlist format
-    which is written from netform.cpp.
-
-
-2010-Aug-7 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++common
-  * add xnode.cpp and xnode.h which can be used to output either an XML or
-    S-expression document file.
-  * Add class STREAM_OUTPUTFORMATTER which is a richio class which can write
-    to any of the wxOutputStream derivatives, such as file, socket, zip, tar.
-  * Added netlist.keywords
-++eeschema
-  * netform.cpp can now output S-expression OK, although I have it commented out
-    pending the addition of a UI for it.
-
-
-2010-Aug-4 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++eeschema netform.cpp:
-  * Finish up first working version of the XML export.
-
-2010-Aug-3 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++eeschema netlist.cpp and netform.cpp:
-  * Found several speed optimizations in the netlist export code.
-  * Now sort the pins properly if they have pin numbers like A1 and A10,
-    i.e. alphanumerics in them.
-
-
-2010-Jul-30 & 31 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++eeschema:
-  * Now link with XML support within wxWidgets.
-  * Export the generic netlist in XML.  Only the libpart elements are missing now.
-    Still need to rework the chain loaded netlist plugin, but may do that in XSL.
-  * OBJ_CMP_TO_LIST class now uses a std::string to hold the 8 bit string m_Ref,
-    but hides this behind accessors which provide for both Unicode and 8 bit
-    set and get functions.
-  * build_BOM.cpp retains the selected filename on subsequent runs as a default.
-  * Code cleaning, especially in build_BOM.cpp.
-
-
-2010-jul-27, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++all:
-    Updated boost to version 1.44
-    Added boost::polygon (experimental)
-++pcbnew:
-    Added experimental zone fill calculations with boost::polygon
-    old file zones_convert_brd_items_to_polygons.cpp has now 2 versions:
-    zones_convert_brd_items_to_polygons_with_Boost.cpp use boost::polygon to calculate filled areas
-    zones_convert_brd_items_to_polygons_with_BKbool.cpp use kbool (code cleaned).
-
-    >>> to use boost polygon version:
-        call cmake with option: -DUSE_BOOST_POLYGON_LIBRARY=ON
-
-2010-jul-12, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew:
-    Added grid origin patch from Lorenzo Marcantonio.
-    Converted set grid dialog from DialogBlocks to wxFormBuilder,
-    and added in this dialog the grid origin parameters settings.
-
-2010-jun-24 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-++EESchema component library and hierarchical sheet label object improvements.
-  * Continue component library class clean up and encapsulation work.
-  * Change hierarchical sheet label container to boost::vector_ptr.
-  * Encapsulate hierarchical label handling in hierarchical sheet class.
-  * Convert some missed occurrences of wxString::GetData() to GetChars( wxString ).
-  * Fix some minor code formatting issues.
-
-2010-jun-23, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++eeschema:
-    In netlist generation, changed the rule to calculate netnames of nets with labels:
-    Previously, named nets (i.e. nets with local, hierarchical or global labels) have their name
-    defined by the first label found in list.
-    So net names could be changed without really changing the schematic.
-    Now the names are calculated from the rules (by priority order) :
-    1 - use the most top level labels in hierarchies.
-    2 - use global labels first, local labels next (hidden power pins names are global labels).
-    3 - use alphabetic sort (so, if GND and AGND are connected, the net will be always named AGND,
-    and adding a VSS connection cannot change the net name)
-    So power nets and nets that have more than one label cannot have their netname changed
-    if there is no actual change relative to these nets names in schematic
-
-
-2010-Jun-17 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++eeschema:
-    Added "template fieldnames" to eeschema.  Thanks to
-    Brian Sidebotham <brian.sidebotham@gmail.com> for the origins of this patch.
-    https://lists.launchpad.net/kicad-developers/msg04828.html
-
-    A template fieldnames are a list of template elements
-    consisting of {name, value, visibility} which you want shown in the eeschema
-    component fieldname (property) editors (both schematic and library versions
-    of the editors). Template fieldnames are forced into the editors'
-    presentation of the fields even though those fields may not exist in the
-    component. Entering a non-blank value while in a field editor will cause the
-    field & value to be retained in the component. Therefore it is unusual to
-    provide a non-blank '.value' in a template, because a trip through the field
-    editor will invariably add that field to the component since the template
-    being applied has initially a non blank 'value'. The current template editor
-    is only going to last about a week and it does not support adding non-blank
-    template values yet, nor visibility control, only field '.name'. But the
-    template fieldnames configuration storage and component field editors do
-    know how to handle template.visible and template.value already, in addition
-    to template.name. See the file .eeschema in your home directory for the
-    configuration storage, keyword: FieldNames. e.g. only field Manufacturer has
-    a '.value':
-
-    FieldNames=(templatefields (field (name "Manufacturer")(value "IBM 12")) (field (name "Vendor")) (field (name "Installed")) (field (name "Ralphy") visible))
-
-    DSNLEXER is used to parse the FieldNames record, & OUTPUTFORMATTER to generate it.
-
-
-2010-jun-15, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-bitmap2component:
-    Use wxWidgets.
-    Better user interface
-    More bitmaps file format import (from wxWidgets)
-    This tool does not use Kicad classes. So it can be hacked by guys who do not know kicad sources.
-
-2010-jun-10, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Added an experimental tool (bitmap2component) to create logos from .bmp bitmaps. Added Potrace library to convert bitmaps to polygons
-    This tool uses potarce library that converts a bitmap picture (.bmp or .pgm format) to a set of polygons.
-    bitmap2component converts a bitmap to a .emp footprint (that can be imported by modedit) or a .lib component that can be
-    imported by libedit.
-    Note: imported bitmaps logos are vectored by potrace, so there is no pixelation effect.
-    Scale is 1:1 for 300ppi pictures.
-    bitmap2component currently runs only is command line mode
-    run
-        bitmap2component bitmapfile.bmp bitmapfile.lib 1 to create a schematic component logo
-        (import this file using libedit)
-        or
-        bitmap2component bitmapfile.bmp bitmapfile.emp 1 to create a footprint logo
-        (import this file using modedit)
-
-
-2010-may-18, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++All:
-    Set minimum cmake version requirement to 2.6.4
-    (does not works with 2.6.1)
-++Pcbnew, Module Editor:
-    Added footprint name edition in the module properties dialog.
-    Until now, the footprint name used to retrieve a footprint in lib was
-    set only when saving the footprint in lib, and could not be edited without saving
-    the footprint in lib.
-
-2010-may-01, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Board and footprint editors:
-    Auto update 3D display after footprint or board edition.
-    (board or footprint is reloaded only when the 3D frame is reactivated, so
-    no extra time is needed during edition)
-
-2010-apr-29, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Fixed a crash that happens sometimes when opening the design rule dialog.
-    (due to the sorting function by netclass then by netname)
-    The sorting by netclass then by netname is now working well.
-
-
-2010-apr-23, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Fixed minor problems.
-    Changed French word COTATION to DIMENSION in class COTATION (now class DIMENSION)
-
-2010-apr-22, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew+Gerbview:
-    Fixed minor problems in printing.
-
-2010-apr-19, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    * Added VRML export, from the patch sent by Lorenzo Marcantonio ( october 2009, 11)
-    * Fixed :
-      options to control vrml export.
-      flipped footprints
-    * Tested using Cortona and Blender.
-
-    Needs more testing and refinements
-
-2010-apr-16, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Cvpcb:
-    Fixed a bug in footprint display frame (coordinates not displayed). Windows only.
-    Added right toolbar to select display options
-    Can now read netlists using UTF8 encoding.
-    Convert dialog_display_option from DialogBlocks to wxFormBuilder
-++Pcbnew:
-    Fixed a very minor bug.
-Cvpcb+Pcbnew:
-    Code cleanup in read netlist functions: use now FILE_LINE_READER.
-
-2010-Apr-12 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all:
-    Switched the source code repository from subversion at sourceforge.net to
-    launchpad using bazaar.
-
-
-2010-apr-08, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Drc: take in account the clearance "local parameters" for pads that have local parameters.
-         Until now, only NETCLASS clearance values were used.
-         (local parameters are used in zone filling)
-         But because a pad (or a footprint) can have a specific clearance value
-         Drc used now this value, and NETCLASS value only if no local value specified.
-
-2010-mar-31, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew
-    Fixed an issue in GERBER file creation, under Vista and W7 only for non administrator users
-    Plot files were 0 byte length.
-    This was due to use of function tmpfile() in a GERBER function
-    to create a temporary file that seems not working using mingw.
-    Replaced by more usual files functions.
-
-2010-mar-29, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew
-    enhancements in printing or plot in SVG format:
-    When printing technical layers, pads on solder mask or solder paste layers
-    where printed in sketch mode.
-    Now they are printed as solid shapes, with dimensions according to
-    solder paste or solder mask clearances.
-
-
-2010-mar-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Eeschema
-    Some bugs fixed
-    Starting enhancements in Libedit: menubar and commands to "plot"
-    current component in PNG or SVF file (SVG file not fully working, must be refined)
-
-2010-mar-13 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ All:
-    Stable verion for kicad release
-
-2010-mar-10 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Pcbnew:
-    Added (see dialog_layers_setup.cpp) compilation options to
-    -hide non active copper layers
-    -show inner layers in same order than the layer manager
-    Currently these options are 2 define
-    HIDE_INACTIVE_LAYERS
-    // if defined, displays only active copper layers
-    // if not displays always 1=the full set (16 layers)
-    USE_LAYER_MANAGER_COPPER_LAYERS_ORDER
-    //if defined, used the layer manager copper layers order
-    //  (from FRONT to BACK) to display inner layers.
-    //  if not, use the default order (from BACK to FRONT)
-
-    Currently not active, can be changed if the correponding lines are uncommented in dialog_layers_setup.cpp
-
-2010-Mar-3 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++common
-  * DSNLEXER now owns an abstract LINE_READER by pointer so that polymorphism
-    can be used in alternative LINE_READERS.
-  * Write FILE_LINE_READER and STRING_LINE_READER.  The latter can be used
-    to parse text coming from the clipboard or other string source.
-
-
-2010-Feb-20 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++common
-    DSNLEXER now supports:
-    1)  nested quotes.  This is in anticipation of broader usage of the
-        file type/syntax.  A string like this in the file:
-            "my ""favorate"" string"
-        can be returned as
-            my "favorite" string
-    2)  CommentsAsTokens is implemented, so you can ask the lexer to return
-        comments as tokens, so they can be preserved.  The default is to ignore
-        them.  A comment is defined as any line that has # as its first
-        non-blank character.  (This means comments cannot follow anything else
-        on a line.)
-
-
-2010-Feb-19 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-kicad: fixing an annoying problem:
-    * Building the tree project can be *very* long if there are a lot of subdirectories
-    * in the working directory.
-    * Unfornately, this happens easily if the project file *.pro is in the home directory
-    * So the tree project is built "on demand":
-    * First the tree is built from the current directory and shows files and subdirs.
-    *   > First level subdirs trees are built (i.e subdirs contents are not read)
-    *   > When expanding a subdir, each subdir content is read,
-    *     and the corresponding sub tree is populated on the fly.
-
-
-2010-Feb-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-kicad:
-    * Building the tree project can be *very* long if there are a lot of
-    * subdirectories in the working directory.
-    * Unfornately, this happens easily if the project file *.pro
-    * is in the home directory
-    * when subdirs are not loaded, double click on a directory to load its files and subdirs
-    * #define ADD_FILES_IN_SUBDIRS was used until now.
-    * It is now commented, so one must double click on a subdir name to load its files
-    * See treeprj_frme.cpp for more info
-
-2010-Feb-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Eeschema, libedit: fixed last problems when editing alias info.
-    Now alias changes can be undone, and are correctly updated in lib
-    when updating the current edited component in memory
-    New code could be a good starting point to store all aliases info in the
-    root component,
-    and also easily store it to the *.lib files and remove the .dcm associated files
-    (most of code is done)
-
-
-2010-Feb-14 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Eeschema, libedit: fixed add/remove alias functions, broken
-All: added in popup menus hotkeys info for zoom commands
-
-
-2010-Feb-14 UPDATE Jerry Jacobs <xor.gate.engineering[at]gmail[dot]com>
-================================================================================
-++ KiCad
-   Check if project is noname.pro so we don't get a error if kicad is first run.
-   Removed double separator in file menu.
-   Moved recent project to submenu in Open recent.
-
-++ Common
-   Added CTest/CDash support file
-   Moved helper tool to helper subdirectory
-
-++ OSX
-   Update compiling doc
-
-2010-Feb-07 UPDATE Vesa Solonen <vesa.solonen@hut.fi>
-================================================================================
-++ all:
-    Finnish translation, take one.
-
-2010-Feb-04 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ gerbview:
-    Use layer_widget to manage gerber layers colors and visibility.
-
-2010-Jan-31 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ pcbnew:
-    More about work on color selection and items visibility:
-    removed global variables and a lot of redundancies
-    Now Modedit does not uses the visiblity options of the board editor
-    (That can create a problem if hide modules is activated)
-    work in progress but almost finished
-
-
-2010-Jan-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ pcbnew:
-    More about work on color selection and items visibility
-    work in progress
-
-2010-Jan-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
- ++ All:
-    added a test to solve a problem when cross compiling Kicad under Linux for Windows
-    Specific to countries that use a comma as separators in floating point numbers notation:
-    Depending on wxWideget version:
-        printed as 0,5 and read as 0.5
-        or
-        printed as 0.5 and read as 0,5
-    So float values are always broken in dialogs (many are seen as 0)
-    Now a test is made, and if there are problems relative to floats
-    (write/read conversion error),
-    use the C convention (always a point as separator)
-
- ++ eeschema:
-    Removed metrics grid values, that cannot be handled in schematic.
-    (because 2 items are seen as connected if they have the same coordinates
-    mixing mm and mils with internal units = 1 mil break netlist
-    and ERC calculations
-    So grid value *must* be an integer (in 1/1000 inch).
-    And metric grid is not very useful in schematic.
-    (Also 1 mil and 0.025 mm can be seen as the same value for a schematic that do not
-    needs precision in dimensions, so no need to have mils and mm in grid values)
-
-++ pcbnew:
-    Starting work on color selection and items visibility
-    * code cleaning and removing global values.
-    * Separe visibility options for board editor and module editor
-    (work in progress, just starting)
-
-
-2010-Jan-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
- *fixed eeschema crash when using the hotkey m (move) command.
-* Pcbnew :added option to show/hide footprints values and/or references
-  See if show/hide footprints texts option is now always useful.
-
-2010-Jan-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ Pcbnew:
-    Code cleaning about visibility variables (duplicates) in draw functions.
-    Removed old color and visiblity dialog
-    work in progress
-
-2010-Jan-24 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ Pcbnew:
-    in variable names, change non existent word Hight to High
-    Remove redundant tool in left toolbar (option toolbar)
-    (this option is now in layers manager)
-    Show layers in horizontal combo box in same order as in layer manager.
-
-++all:
-    minor code cleaning.
-
-2010-Jan-23 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew's PCB_LAYER_WIDGET
-    Removed wxformbuilder dependency from LAYER_WIDGET, thus killing off
-    layer_widget_base.* and panel_layer_select.fbp.
-    Added aPointSize to LAYER_WIDGET constructor so it uses that font size.
-    Removed layer_widget.h from wxPcbStruct.h for faster compiles with less
-    dependencies, and this meant moving the class LYRS out of
-    class WinEDA_PcbFrame.  While doing that I renamed it to PCB_LAYER_WIDGET.
-    Integration of PCB_LAYER_WIDGET into WinEDA_PcbFrame to fully support
-    the layer change logic. Added syncLayerWidget(),
-  * WinEDA_PcbFrame:
-    Added syncLayerWidget(), syncLayerBox() (via a rename), setActiveLayer(),
-    and getActiveLayer().
-    Use a font size in PCB_LAYER_WIDGET 80% of the system font size for systems
-    with screen resolution height <= 900, or 100% if not.  See WinEDA_PcbFrame
-    constructor.
-  * See TODO.txt for more things that need to be done.
-
-
-2010-Jan-23 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++ Pcbnew:
-    Update Layer manager display when changing active layer (from hotkey or menus)
-    fixed minor problems and fixed Layer Alignment Target bug.
-
-2010-Jan-22 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-Minor fixes and code cleaning.
-
-* Remove redundant background redrawing RedrawActiveWindow.
-* Remove redundant managed cursor callback in RedrawActiveWindow.
-* Use refresh to redraw instead of directly calling RedrawActiveWindow.
-* Remove unused SetDrawBgColor for drawframe.cpp.
-* Fix compiler warning in cvpcb/cvframe.cpp.
-* Fix menu spelling and syntax errors in pcbnew.
-* Rename Trace_Curseur to DrawCursor in common/drawpanel.cpp.
-
-2010-Jan-21 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-    Integration of LAYER_WIDGET into WinEDA_PcbFrame.  See
-    TODO.txt for more things that need to be done.
-
-
-2010-Jan-17 UPDATE Jerry Jacobs <xor.gate.engineering[at]gmail[dot]com>
-================================================================================
-More work to make kicad more Mac OS X compliant.
-* Workaround for wxAboutDialog bug.
-* WXMAC needs wxID_EXIT to make closing the application function properly.
-* Workaround for hotkeys, on Mac OS X we can't use Fx keys.
-  This needs to be further implemented and is a work in progress.
-  We need to modify the hotkey code to display Mac OS X the
-  special modifier keys in the hotkey list.
-
-
-2010-Jan-18 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++any
-    Finished up complete implementation of class LAYER_WIDGET and am now ready to
-    integrate it into PCBNEW.  This class was kept as general as possible by
-    omitting as many Kicad document structures as possible, and so can be used
-    in GERBVIEW.  For GERBVIEW it could benefit from some minor additional
-    work such as a "move up" function for layer order changes.  This is a matter
-    of rearranging wxWindows within the m_LayersFlexGridSizer.
-    Integration into PCBNEW should be done in just a few days.
-
-
-2010-Jan-17 UPDATE Jerry Jacobs <xor.gate.engineering[at]gmail[dot]com>
-================================================================================
-+ EESchema
- + Added Torsten Huter's patch for hotkeys
- + Moved recent opened documents to submenu
-
-+ Pcbnew
- + Big (re)organisation of pcbframe menubar and cleanup
-
-2010-Jan-13 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-Minor bug fixes, compiler warning fixes and code cleaning.
-
-* Fix debug asserts when passing NULL pointers to wxAuiPaneInfo.
-* Fix Kicad main window sash sizer bug when using wxAui.
-* Remove specctra_test from Visual Studio builds to prevent build errors.
-* Add WIN32 to layer widget test so it will build properly on Visual Studio.
-* Fixed compiler conversion warnings in PCBNew.
-* Fixed worksheet print scaling in PCBNew.
-* Minor code renaming.
-
-2010-Jan-12 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++All
-    Use wxAutoBufferedPaintDC in OnPaint event
-    Seems solves slow grid redraw on some PC (tested under Window 7)
-    and is faster than use wxPaintDC, not buffered
-    (note MACOSX has natively a double buffer, so no change for MACOSX)
-
-2010-Jan-08 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++Gerbview
-    Added support of arcs in polygons outlines.
-    Needed to show copper areas in some gerber files
-    Not fully tested but works better than without this support...
-
-
-2010-Jan-03 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    - fixed a potential bug in a fill zone function: AddClearanceAreasPolygonsToPolysList()
-    - Try to fix a problem with AddClearanceAreasPolygonsToPolysList() under Window Vista and Window 7
-      This is perhaps a problem in kbool library
-      (a bug in Bool_Engine destructor ?)
-      It happens when:
-      - a lot of polygon corners are added in group A
-      - nothing in group B
-      - No operation asked in kbool engine ( that also has a bug if an operation is asked
-        with no polygon in group B)
-      - and call the Bool_Engine destructor.
-      Could be a stack error or overflow, very hard to locate and debug.
-      - Under Vista seems create always a crash.
-      - Under Window 7 sometimes create a crash.
-      - No problem under XP and Linux.
-    -Workaround:
-      Leave the group A void if group B is void.
-      I am not sure this change fix the problem.
-      Just it solves this problem with 2 samples boards that crash Pcbnew without this change.
-
-2010-Jan-01 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-++pcbnew
-    Rewrite plot dialog using wxDialogBlocks.
-    Display layers list according to the Setup layers dialog order.
-++Gerbview
-    Write Gerbview plot dialog using wxDialogBlocks.
-    Do not use anymore the Pcbnew one.
-
diff --git a/Documentation/changelogs/CHANGELOG-2011.txt b/Documentation/changelogs/CHANGELOG-2011.txt
deleted file mode 100644
index 8752fc7808..0000000000
--- a/Documentation/changelogs/CHANGELOG-2011.txt
+++ /dev/null
@@ -1,297 +0,0 @@
-KiCad ChangeLog 2011
-====================
-
-Please add newer entries at the top, list the date and your name with
-email address.
-
-
-2011-Dec-19, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Pcbnew:
-    Enhanced algorithms to calculate board connections:
-    - A track is seen connected to a pad if the track end is inside the pad shape.
-    - Pads inside pads are now seen connected, if the center of the pad is
-      *inside* the other pad.
-       (this is made to be sure a large copper area is shared by the 2 pads,
-       and to keep algorithm fast).
-    Algorithm to calculate pads connections is still very fast.
-    However some other functions (drag pads, track len calculation ...)
-    still need the track end exactly on the pad position.
-
-
-2011-Dec-13 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++common
-  * changed all the RotatePoint() functions in trigo.{h,cpp} to take a double as the
-    angle, which is still in tenths of degrees for now.
-  * EDA_TEXT::m_Orient is now double, still in tenths of degrees (for a short while),
-    but the double means parsing files and saving them use a different format string.
-++pcbnew
-  * DRAWSEGMENT::GetStart() and GetEnd() do not operate for S_ARC like they used to.
-    They are now simply accessors for m_Start and m_End.  Use DRAWSEGMENT::GetArcStart()
-    and GetArcEnd() and GetCenter() for arcs.  specctra_export.cpp was the only
-    source file dependent on the old behavior.
-  * DIMENSION::m_Text is now contained, not dynamically allocated.
-  * more kicad_plugin work.
-
-
-2011-Dec-9 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++PCBNew
-  * added BOARD::GetPad(int), made BOARD::m_NetInfo private, and contained
-    within the BOARD, not dynamically allocated and owned via pointer.
-  * added BOARD::GetPadCount()
-  * changed NETINFO_LIST::GetCount() to GetNetCount()
-  * added BOARD::GetNetCount()
-  * more kicad_plugin work.
-
-2011-Dec-5 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++PCBNew
-  * Removed Pcb_Frame argument from BOARD() constructor, since it precludes
-    having a BOARD being edited by more than one editor, it was a bad design.
-    And this meant removing m_PcbFrame from BOARD.
-  * removed BOARD::SetWindowFrame(), since BOARD::m_PcbFrame gone.
-  * Removed the global BOARD_DESIGN_SETTINGS which was in class_board.cpp
-  * Added BOARD_DESIGN_SETTINGS to the BOARD class, a full instance
-  * A couple of dialogs now only change BOARD_DESIGN_SETTINGS when OK is pressed,
-    such as dialog_mask_clearance, dialog_drc, etc.
-  * Removed common/pcbcommon.cpp's int g_CurrentVersionPCB = 1 and replaced it
-    with build_version.h's #define BOARD_FILE_VERSION, although there may be a
-    better place for this constant.
-  * Made the public functions in PARAM_CFG_ARRAY be type const.
-    void SaveParam(..) const and void ReadParam(..) const
-  * PARAM_CFG_BASE now has virtual destructor since we have various ways of
-    destroying the derived classes and boost::ptr_vector must be told about this.
-  * Pass const PARAM_CFG_ARRAY& instead of PARAM_CFG_ARRAY so that we can use
-    an automatic PARAM_CFG_ARRAY which is on the stack.
-  * PCB_EDIT_FRAME::GetProjectFileParameters() may no longer cache the array,
-    since it has to access the current BOARD and the BOARD can change.
-    Remember BOARD_DESIGN_SETTINGS are now in the BOARD.
-  * Made the m_BoundingBox member private, this was a brutally hard task,
-    and indicative of the lack of commitment to accessors and object oriented
-    design on the part of KiCad developers.  We must do better.
-    Added BOARD::GetBoundingBox, SetBoundingBox(), ComputeBoundingBox().
-  * Added PCB_BASE_FRAME::GetBoardBoundingBox() which calls BOARD::ComputeBoundingBox()
-
-
-2011-Dec-04, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Pcbnew:
-    Enhanced algorithms to calculate board connections:
-    Previously, a track was seen connected to a pad only if the track end is
-    exactly on the pad position.
-    Now a track is seen connected to a pad if the track end is inside the pad shape.
-    Algorithm to calculate pads connections to track is still very fast.
-    However some other functions (drag pads, track len calculation ...)
-    still need the track end exactly on the pad position.
-
-2011-Nov-27 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++PCBNew
-  * Add PLUGIN and IO_MGR classes.
-  * Remove one argument from BOARD constructor,
-  * add BOARD::SetWindowFrame()
-
-2011-sept-13 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-  PCBNew locate code refactoring.
-
-  * Move various locate functions into the appropriate board item object.
-  * Unified best zoom for all frames derived from PCB_BASE_FRAME.
-  * Remove track.cpp as it is no longer needed.
-  * Dead code removal.
-  * Remove scary frame window pointer member from board item objects.
-  * Add draw bounding box to gerber draw item for debugging purposes.
-
-2012-Sept-8 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-  * Write an automatic bitmap generation script in cmake, PNG2cpp.cmake
-  * Write an infrastructure generate *.png files from inkscape files, and do
-    it maintaing the "as needed" change detection support.
-  * Support an *.SVG maintainer mode, AND an *.SVG user mode.
-  * Engineer a seemless switchover from old style xpm files, with minimal
-    impact to system wide source code.
-
-2011-Sept-07, UPDATE Andrey Fedorushkov <andrf@mail.ru>
-================================================================================
-Pcbnew:
-    Add hotkey "P" - place item
-    Add Roman Bashkov patch for record/play sequence hotkey macros
-    Add record and play macros for sequence hotkey.
-        Macros set to numeric key 0..9:
-        <Ctrl>+<numkey> - start record macros
-        <hotkey> <mouse move> ... <hotkey>|<mouse place>
-        <Ctrl>+<numkey> - end record macros
-        <numkey> - play macros
-    Add menu save/read macros to/from xml-file
-    Add configure rotate angle for rotate module: 45 or 90 deg.
-    Fix segfault when move/drag segment if disconnected to pad
-
-2011-Sept-01, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-    Add Fabrizio Tappero <fabrizio-dot-tappero[at]gmail-dot-com> in contributors list.
-Eeschema:
-    Graphic texts ans labels: fix fully broken undo/redo code relative to the way undo/redo command
-    handles changes (maintly move) for labels
-    Fix minor bug for undo command relative to block rotate
-    Remove dead code.
-    Add new class BITMAP_BASE, and (for Eeschema) SCH_BITMAP to handle bitmap images in schematic.
-    Remember plot Bitmaps in not possble with all plotters.
-
-
-2011-Aug-19, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Pcbnew:
-    Add support for not plated through holes (NPTH) pads
-    * These NPTH pads are used for mechanical purpose only, and cannot be connected to a net.
-    * When these pads have a same size and shape for the hole and the pad, the pad is not plotted
-    in GERBER files.
-
-2011-Apr-12, UPDATE Jerry Jacobs <xor.gate.engineering@gmail.com>
-================================================================================
-Minor UI changes that affect OS X platform.
- - Fix for opening the help contents
- - Fix for opening files with the default editor
- - Fix for opening PDF files
-
-Solved all with the BSD open command, for other OS'es which have X11 and
-utilities they can use the xdg-open command which I added to the pdf viewer tries
-list.
-
-Kicad projectview:
-Remove not-existing files when a empty project is created, this confuses when
-users try to open it. Show a entry that the project is empty instead of these
-void files.
-
-2011-Apr-6, UPDATE Jerry Jacobs <xor.gate.engineering@gmail.com>
-================================================================================
-Cleanup of all the menubar code to have the same style, remove the C comments.
-Make the wxMenu behave native on OSX for KiCad, CvPCB and Gerbview and remove
-unneeded ifdefs when using the wxIDs. Add a OnQuit for the gerber frame.
-Change item->SetBitmap( item ) to use macro SET_BITMAP for menu items.
-
-2011-Apr-4, UPDATE Jerry Jacobs <xor.gate.engineering@gmail.com>
-================================================================================
-More native OSX changes, this removes some WXMAC defines replaced by wxID
-macros. These are handled by wxWidgets itself and reduces in-app platform
-defines. More work needs to be done for CvPCB and Gerbview.
-
-All:
-     Hotkey names in menu's all have tabs, this looks more uniform and pretty.
-
-EESschema & PCBNew:
-     Fix about and preferences wxMenu to be more native (remove unneeded WXMAC )
-     Disable all icons in wxMenu on OSX with macro SETBITMAPS
-
-jp charras:
-    SETBITMAPS is incorrectly used here. change to SET_BITMAP
-
-2011-Mar-25 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-  EESchema multiple item hit testing and other minor improvements.
-
-  * Add item clarification context menu to EESchema when multiple unresolved
-    items are found at the current cross hair position.
-  * Add collector class EE_COLLECTOR for supporting multiple item hit testing.
-  * Removed bit wise masked filtering from schematic item hit testing.
-  * Removed all old hit testing functions and methods scattered about the
-    EESchema source code.
-  * Move terminal point test function into SCH_SCREEN object.
-  * Fixed bug in terminal point test when terminating a bus to a label.
-  * Define the < operator for sorting schematic items.
-  * Add area calculation method to EDA_Rect item.
-  * Add method for returning an item's bitmap for menu display purposes.
-  * Add method for returning an item's menu text for menu display purposes.
-  * Changed EDA_ITEMS container from boost::ptr_vector to std::vector.
-  * Factor coordinate string conversion code from EDA_DRAW_FRAME to function CoordinateToString().
-
-2011-Mar-16, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-Gerbview:
-    Added: read Excellon files created by Pcbnew.
-    The full Excellon command set is not supported, but drill files created by Pcbnew are supported.
-
-2011-Feb-05, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
-================================================================================
-CvPcb:
-    Code cleanup. Rename WinEDA_CvpcbFrame to CVPCB_MAINFRAME,
-        according to coding style policy.
-    Change in CvPcb:
-        CvPcb does not use now .dcm files, only .mod files,
-        to read modules keywords and doc
-
-
-2011-Feb-2 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++common:
-  * 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()
-
-2011-Jan-30 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all:
-  * 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 like escape mechanism.
-  * Now support multi-line strings, which when properly escaped, can still be
-    read in as a token originating on a single line.
-
-2011-Jan-21 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
-================================================================================
-  EESchema code refactoring and coding policy naming fixes.
-
-  * Move schematic wire and bus break code into schematic screen object.
-  * Move schematic test for dangling ends into schematic screen object.
-  * Remove left over debugging output in schematic screen object.
-  * Remove unused file eeschema/cleanup.cpp.
-  * Fix bug in schematic line object hit test algorithm.
-  * Fix a string concatenation compile error added in r2752.
-  * Rename class WinEDA_BasicFrame to EDA_BASE_FRAME.
-  * Rename class WinEDA_DrawFrame to EDA_DRAW_FRAME.
-  * Rename class WinEDA_DrawPanel to EDA_DRAW_PANEL.
-
-2011-Jan-19 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all:
-  * 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.
-
-2011-Jan-17 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all:
-  * 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.
-
-2011-Jan-1 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++new:
-  * 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.
-
-
diff --git a/Documentation/changelogs/CHANGELOG-2012.txt b/Documentation/changelogs/CHANGELOG-2012.txt
deleted file mode 100644
index 2bce31be3c..0000000000
--- a/Documentation/changelogs/CHANGELOG-2012.txt
+++ /dev/null
@@ -1,204 +0,0 @@
-KiCad ChangeLog 2012
-====================
-
-Please add newer entries at the top, list the date and your name with
-email address.
-
-2012-Nov-19 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-Eliminate many assumptions in Pcbnew's library manager, pertaining to locality of libraries and
-their type, by using the more abstract PLUGIN::Footprint*() functions.
-
-This is an intermediate phase only, other changes will be necessary as library table support comes in.
-Encapsulate usage of library path searching, since that will go away as library table support comes in.
-Add FOOTPRINT_EDIT_FRAME::{get,set}LibPath() and FOOTPRINT_EDIT_FRAME::{get,set}LibNickName() functions
-to provide this encapsulation.
-
-2012-Nov-14 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-1) Switch to boost hashtable support from wx macros which did not handle std::string.
-   This required the additional compiler command line option "-std=c++0x".
-
-2) Switch to unique_ptr from auto_ptr which is C++ deprecated.
-
-3) Change to new English layer names per mailing list discussion, see class_board.cpp.
-
-4) When saving to *.kicad_pcb or *.kicad_mod, identify opportunities to use wildcard
-   layer sets, for pads so far.
-
-5) Switch to two std::string hashtables in pcb_parser.cpp, away from one wxString based one
-   for layer names and layer sets mapping. One hashtable holds the mask, the other the index.
-   Layer sets are only in the mask table.
-
-6) Move "LOCALE_IO toggle" into PCB_IO::Format() since it is a public API function and
-   caller should find it as convenient as possible to use.  LOCALE_IO should handle
-   nesting OK in the case where public Format() is called from one of the Footprint*()
-   functions.
-
-7) Drop support for "export module to new library".  Creating new libraries will have to
-   be handled in concert with library table entries, and we've talked recently about
-   creating a better footprint library manager, one that resides in a DLL/DSO.  So
-   this kind of functionality needs to be handled in there in the near future.
-
-8) Change name of exported PCB_IO module/footprint to *.kicad_mod and not *.emp.
-
-
-
-2012-May-5  UPDATE Jerry Jacobs <jerry@xor-gate.org>
-================================================================================
-++ common
- * Update about dialog to more native size so the notebook is not squeezed
- * Increment copyright year to 2012
- * Fix mousezoom jumping to center for Mac OS X and other platforms
- * Remove lowercase application name because Mac OS X menubar was inconsitent
-
-2012-Mar-11 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * Add PCB_EDIT_FRAME::syncLayerVisibilities(), PCB_LAYER_MANAGER::SyncLayerVisibilities().
-  * Save all visibilities, layer and render, in BOARD and restore on load.
-
-
-2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * Remove virtual BOARD_ITEM::{Get,Set}Position() which in turn means all
-    derived classes' implementations of these functions become non virtual and
-    can be truly _inlined_ for speed!  All GetPosition() in derived classes were also
-    changed to return const wxPoint&, that is, a reference rather than a
-    full copy of the position wxPoint. There was no need for polymorphism in
-    {Get,Set}Position() since we never call these functions via generic pointer.
-  * Remove BOARD::{Get,Set}Position() since they were only there to satisfy
-    the pure virtuals established in BOARD_ITEM, which are now gone.
-  * Added const wxPoint& CPolyLine::GetPos(), made CPolyLine::Get{X,Y}() inline.
-  * Derive CPolyPt from wxPoint so we can return "const wxPoint&" from
-    CPolyLine::GetPos().
-
-
-2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * remove global g_Pad_Master and put it into BOARD_DESIGN_SETTINGS
-    which is in turn already within BOARD.
-  * encapsulate class D_PAD with accessors, making data private.
-  * make D_PAD::GetBoundingRadius() do its longer calculation lazily, based on
-    m_boundingRadius == -1.
-
-
-2012-Feb-5 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * Changed classs ZONE_SETTING to class ZONE_SETTINGS, better English.
-  * Changed ZONE_SETTINGS::Import() to operator << ( ZONE_CONTAINER )
-  * move globals into BOARD:
-    bool g_Zone_45_Only, is now in BOARD::m_zoneSettings.m_Zone_45_Only
-    ZONE_SETTINGS g_Zone_Default_Setting is now in BOARD::m_zoneSettings
-  * Added BOARD::{Get,Set}ZoneSettings().
-  * Added PCB_BASE_FRAME::{Get,Set}ZoneSettings().
-  * Save/load BOARD::m_zoneSettings.m_Zone_45_Only to/from BOARD file.
-  * Removed PCB_EDIT_FRAME::InstallDialogNonCopperZonesEditor() in favor of
-    ::InvokeNonCopperZonesEditor() declared in zones.h
-  * Added ::InvokeCopperZonesEditor() declared in zones.h
-  * Removed dialog_copper_zones.h since DIALOG class is now declared in *.cpp.
-  * Renamed to enum ZONE_EDIT_T in zones.h
-  * SetVisibleAlls() is not called as it was in two previous cases for several
-    reasons.  BOARD_DESIGN_SETTINGS constructor controls what is visible initially,
-    and in the near future so will the *.brd file.  I believe the user should
-    have visibility setting rentention accross editing sessions of zones,
-    fields, etc.
-  * BOARD_DESIGN_SETTINGS constructor initializes hidden text as not visible.
-  * Added PCB_EDIT_FRAME::syncRenderStates() and PCB_LAYER_WIDGET::SyncRenderStates()
-    so the checkboxes can be set after loading a BOARD file containing previous
-    visibility settings.
-
-2012-Feb-2 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++pcbnew
-  * move globals into BOARD
-    -wxSize g_ModuleTextSize; /* Default footprint texts size */
-    -int g_ModuleSegmentWidth;
-    -int g_ModuleTextWidth;
-    But now the module editor is left hanging.  I'll have to figure out
-    a way to pass from board editor to module editor these values, still.
-
-
-2012-Feb-01, UPDATE Jean-Pierre Charras <jp.charras@wanadoo.fr>
-================================================================================
-Pcbnew:
-Cvpcb:
-    more about new netlist format:
-    Cvpcb can now read new netlist format.
-    There is a big change in Cvpcb: now Cvpcb just creates or updates a .cmp file
-    Before this change, Cvpcb recreated the netlist (adding footprint info)
-    and updated the .cmp file.
-    But there is no reason to modify the netlist, because Pcbnew uses always the .cmp file
-    (when exists) to know the footprint selection for components.
-    Currently the netlist is used only when the corresponding .cmp file is not fount
-    to select footprints.
-    So users should not notice this important change.
-
-2012-Jan-26, UPDATE Jean-Pierre Charras <jp.charras@wanadoo.fr>
-================================================================================
-Pcbnew:
-    First draft to use a new netlist format (using S expressions)
-    Eeschema can generate this netlist format.
-    Pcbnew can use (automatic identification) the current format or the new format.
-    Cvpcb does not use yet the new format.
-    To do:
-        New format in Cvpcb: how to use the .cmp file with the new netlist format
-
-
-2012-Jan-22 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-  * Switch to C++'s true and false and away from C" TRUE and FALSE.
-  * Enhance class PLUGIN's comments to improve their value as instructional.
-  * Switch #includes from "file.h" to <file.h>, and fiddle with search paths
-    by using include_directories(BEFORE ...)
-  * dialog_page_settings did not have symmetrical space on its right border.
-    And it now remembers it last position and size within a program session.
-  * base_screen.cpp is now compiled twice, once for {pcbnew,cvpcb} and once
-    for eeschema, in preparation for "compile time" support of internal units
-    rather than "runtime" support.
-
-
-2012-Jan-15 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-    Add "portrait" support to the page size settings for all standard paper
-    sizes.  Tested with postscript output only.  Required minor file format changes
-    to reflect the "portrait" setting.  common/dialogs/dialog_page_settings.cpp
-    uses a checkbox but its name is "Landscape", which is inverted from portrait,
-    but since it is the more common choice, I used that rather than portrait.
-    The tooltip for that checkbox makes it clear.  No portrait mode is supported
-    for "User" paper size.
-
-
-2012-Jan-9 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-  * Carve out TITLE_BLOCK from BASE_SCREEN
-  * Add include/hashtables.h and put class PROPERTIES in there.
-    Change PROPERTIES to use "const char*" as the key instead of wxString.
-++eeschema
-  * Add shim class SCH_BASE_FRAME which introduces the data model SCH_SCREEN
-    to the frame EESCHEMA frame class hierarchy and allows sharing of:
-    SCH_SCREEN* GetScreen() const;                              // overload EDA_DRAW_FRAME
-    void SetPageSettings( const PAGE_INFO& aPageSettings );     // overload EDA_DRAW_FRAME
-    const PAGE_INFO& GetPageSettings () const;                  // overload EDA_DRAW_FRAME
-    const wxSize GetPageSizeIU() const;                         // overload EDA_DRAW_FRAME
-    const wxPoint& GetOriginAxisPosition() const;               // overload EDA_DRAW_FRAME
-    void SetOriginAxisPosition( const wxPoint& aPosition );     // overload EDA_DRAW_FRAME
-    const TITLE_BLOCK& GetTitleBlock() const;                   // overload EDA_DRAW_FRAME
-    void SetTitleBlock( const TITLE_BLOCK& aTitleBlock );       // overload EDA_DRAW_FRAME
-
-
-2012-Jan-5 UPDATE Dick Hollenbeck <dick@softplc.com>
-================================================================================
-++all
-    Ki_PageDescr was re-written as a proper C++ class and renamed to PAGE_INFO.
-    It describes paper.  The m_Offset field was dropped since it was only used
-    in HPGL plotting within EESCHEMA.  PAGE_INFO instance was moved out of
-    BASE_SCREEN (which is on its way out) into both SCH_SCREEN and BOARD.
-
-
diff --git a/Documentation/kicad_doxygen_logo.png b/Documentation/kicad_doxygen_logo.png
deleted file mode 100644
index 68f058a7ef..0000000000
Binary files a/Documentation/kicad_doxygen_logo.png and /dev/null differ
diff --git a/Documentation/notes_about_pcbnew_new_file_format.odt b/Documentation/notes_about_pcbnew_new_file_format.odt
deleted file mode 100644
index 9616f2bc00..0000000000
Binary files a/Documentation/notes_about_pcbnew_new_file_format.odt and /dev/null differ
diff --git a/Documentation/CMakeLists.txt b/doxygen/CMakeLists.txt
similarity index 87%
rename from Documentation/CMakeLists.txt
rename to doxygen/CMakeLists.txt
index 583e192d8b..ce6a1f4478 100644
--- a/Documentation/CMakeLists.txt
+++ b/doxygen/CMakeLists.txt
@@ -23,10 +23,10 @@
 
 if( DOXYGEN_FOUND )
     add_custom_target( doxygen-docs
-        ${CMAKE_COMMAND} -E remove_directory Documentation/doxygen
+        ${CMAKE_COMMAND} -E remove_directory out
         COMMAND ${DOXYGEN_EXECUTABLE}
-        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
-        COMMENT "building doxygen docs into directory Documentation/doxygen/html"
+        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/doxygen
+        COMMENT "building doxygen docs into directory doxygen/out"
         )
 
     # Add the docset targets
diff --git a/Doxyfile b/doxygen/Doxyfile
similarity index 99%
rename from Doxyfile
rename to doxygen/Doxyfile
index 250f3e24d8..fd560de06f 100644
--- a/Doxyfile
+++ b/doxygen/Doxyfile
@@ -51,14 +51,14 @@ PROJECT_BRIEF          =
 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
 # the logo to the output directory.
 
-PROJECT_LOGO           = Documentation/kicad_doxygen_logo.png
+PROJECT_LOGO           = kicad_doxygen_logo.png
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
 # into which the generated documentation will be written. If a relative path is
 # entered, it will be relative to the location where doxygen was started. If
 # left blank the current directory will be used.
 
-OUTPUT_DIRECTORY       = Documentation/doxygen
+OUTPUT_DIRECTORY       = out
 
 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
 # directories (in 2 levels) under the output directory of each output format and
@@ -152,7 +152,7 @@ FULL_PATH_NAMES        = NO
 # will be relative from the directory where doxygen is started.
 # This tag requires that the tag FULL_PATH_NAMES is set to YES.
 
-STRIP_FROM_PATH        =
+STRIP_FROM_PATH        = ../..
 
 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
 # path mentioned in the documentation of a class, which tells the reader which
@@ -780,21 +780,21 @@ WARN_LOGFILE           =
 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = 3d-viewer \
-                         bitmap2component \
-                         bitmaps_png \
-                         common \
-                         cvpcb \
-                         eeschema \
-                         gerbview \
-                         include \
-                         kicad \
-                         libs \
-                         pagelayout_editor \
-                         pcb_calculator \
-                         pcbnew \
-                         plugins \
-                         qa
+INPUT                  = ../3d-viewer \
+                         ../bitmap2component \
+                         ../bitmaps_png \
+                         ../common \
+                         ../cvpcb \
+                         ../eeschema \
+                         ../gerbview \
+                         ../include \
+                         ../kicad \
+                         ../libs \
+                         ../pagelayout_editor \
+                         ../pcb_calculator \
+                         ../pcbnew \
+                         ../plugins \
+                         ../qa
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -1125,7 +1125,7 @@ HTML_FILE_EXTENSION    = .html
 # of the possible markers and block names see the documentation.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_HEADER            =
+HTML_HEADER            = header.html
 
 # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
 # generated HTML page. If the tag is left blank doxygen will generate a standard
@@ -1160,7 +1160,7 @@ HTML_STYLESHEET        =
 # list). For an example see the documentation.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_EXTRA_STYLESHEET  =
+HTML_EXTRA_STYLESHEET  = doxygen-awesome-css/doxygen-awesome.css
 
 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
 # other source files which should be copied to the HTML output directory. Note
@@ -1170,7 +1170,9 @@ HTML_EXTRA_STYLESHEET  =
 # files will be copied as-is; there are no commands or markers available.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_EXTRA_FILES       =
+HTML_EXTRA_FILES       = doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js \
+                         doxygen-awesome-css/doxygen-awesome-paragraph-link.js \
+                         doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js
 
 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
 # will adjust the colors in the style sheet and background images according to
diff --git a/DoxygenLayout.xml b/doxygen/DoxygenLayout.xml
similarity index 100%
rename from DoxygenLayout.xml
rename to doxygen/DoxygenLayout.xml
diff --git a/Documentation/docset/CMakeLists.txt b/doxygen/docset/CMakeLists.txt
similarity index 97%
rename from Documentation/docset/CMakeLists.txt
rename to doxygen/docset/CMakeLists.txt
index dd085c17b3..2bd2ac92c8 100644
--- a/Documentation/docset/CMakeLists.txt
+++ b/doxygen/docset/CMakeLists.txt
@@ -38,10 +38,10 @@ if(DOXYGEN_FOUND AND DOXYTAG2ZEALDB AND SED)
     set(DOCSET_BUNDLE_ID KiCad)
 
     # The source for the doxygen config
-    set(SRC_DOXYFILE ${CMAKE_SOURCE_DIR}/Doxyfile)
+    set(SRC_DOXYFILE ${CMAKE_SOURCE_DIR}/doxygen/Doxyfile)
 
     # A new doxyfile with the original, plus some extra config
-    set(DOCSET_DOXYFILE ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+    set(DOCSET_DOXYFILE ${CMAKE_CURRENT_BINARY_DIR}}/doxygen/Doxyfile)
 
     # Various pieces of the docset
     set(DOCSET_LOC ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html/${DOCSET_BUNDLE_ID}.docset)
diff --git a/Documentation/docset/icon-16.png b/doxygen/docset/icon-16.png
similarity index 100%
rename from Documentation/docset/icon-16.png
rename to doxygen/docset/icon-16.png
diff --git a/doxygen/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js b/doxygen/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js
new file mode 100644
index 0000000000..f2c5853f7b
--- /dev/null
+++ b/doxygen/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js
@@ -0,0 +1,157 @@
+/**
+
+Doxygen Awesome
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2021 - 2022 jothepro
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*/
+
+class DoxygenAwesomeDarkModeToggle extends HTMLElement {
+    // SVG icons from https://fonts.google.com/icons
+    // Licensed under the Apache 2.0 license:
+    // https://www.apache.org/licenses/LICENSE-2.0.html
+    static lightModeIcon = `<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#FCBF00"><rect fill="none" height="24" width="24"/><circle cx="12" cy="12" opacity=".3" r="3"/><path d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg>`
+    static darkModeIcon = `<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#FE9700"><rect fill="none" height="24" width="24"/><path d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27 C17.45,17.19,14.93,19,12,19c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z" opacity=".3"/><path d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg>`
+    static title = "Toggle Light/Dark Mode"
+
+    static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode"
+    static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode"
+
+    static _staticConstructor = function() {
+        DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference)
+        // Update the color scheme when the browsers preference changes
+        // without user interaction on the website.
+        window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
+            DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
+        })
+        // Update the color scheme when the tab is made visible again.
+        // It is possible that the appearance was changed in another tab 
+        // while this tab was in the background.
+        document.addEventListener("visibilitychange", visibilityState => {
+            if (document.visibilityState === 'visible') {
+                DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
+            }
+        });
+    }()
+
+    static init() {
+        $(function() {
+            $(document).ready(function() {
+                const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle')
+                toggleButton.title = DoxygenAwesomeDarkModeToggle.title
+                toggleButton.updateIcon()
+
+                window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
+                    toggleButton.updateIcon()
+                })
+                document.addEventListener("visibilitychange", visibilityState => {
+                    if (document.visibilityState === 'visible') {
+                        toggleButton.updateIcon()
+                    }
+                });
+
+                $(document).ready(function(){
+                    document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
+                })
+                $(window).resize(function(){
+                    document.getElementById("MSearchBox").parentNode.appendChild(toggleButton)
+                })
+            })
+        })
+    }
+
+    constructor() {
+        super();
+        this.onclick=this.toggleDarkMode
+    }
+
+    /**
+     * @returns `true` for dark-mode, `false` for light-mode system preference
+     */
+    static get systemPreference() {
+        return window.matchMedia('(prefers-color-scheme: dark)').matches
+    }
+
+    /**
+     * @returns `true` for dark-mode, `false` for light-mode user preference
+     */
+    static get userPreference() {
+        return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || 
+        (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey))
+    }
+
+    static set userPreference(userPreference) {
+        DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference
+        if(!userPreference) {
+            if(DoxygenAwesomeDarkModeToggle.systemPreference) {
+                localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true)
+            } else {
+                localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)
+            }
+        } else {
+            if(!DoxygenAwesomeDarkModeToggle.systemPreference) {
+                localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true)
+            } else {
+                localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)
+            }
+        }
+        DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged()
+    }
+
+    static enableDarkMode(enable) {
+        if(enable) {
+            DoxygenAwesomeDarkModeToggle.darkModeEnabled = true
+            document.documentElement.classList.add("dark-mode")
+            document.documentElement.classList.remove("light-mode")
+        } else {
+            DoxygenAwesomeDarkModeToggle.darkModeEnabled = false
+            document.documentElement.classList.remove("dark-mode")
+            document.documentElement.classList.add("light-mode")
+        }
+    }
+
+    static onSystemPreferenceChanged() {
+        DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference
+        DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)
+    }
+
+    static onUserPreferenceChanged() {
+        DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled)
+    }
+
+    toggleDarkMode() {
+        DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference
+        this.updateIcon()
+    }
+
+    updateIcon() {
+        if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) {
+            this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon
+        } else {
+            this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon
+        }
+    }
+}
+
+customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle);
diff --git a/doxygen/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js b/doxygen/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js
new file mode 100644
index 0000000000..7d06b348d6
--- /dev/null
+++ b/doxygen/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js
@@ -0,0 +1,85 @@
+/**
+
+Doxygen Awesome
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2022 jothepro
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*/
+
+class DoxygenAwesomeFragmentCopyButton extends HTMLElement {
+    constructor() {
+        super();
+        this.onclick=this.copyContent
+    }
+    static title = "Copy to clipboard"
+    static copyIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
+    static successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
+    static successDuration = 980
+    static init() {
+        $(function() {
+            $(document).ready(function() {
+                if(navigator.clipboard) {
+                    const fragments = document.getElementsByClassName("fragment")
+                    for(const fragment of fragments) {
+                        const fragmentWrapper = document.createElement("div")
+                        fragmentWrapper.className = "doxygen-awesome-fragment-wrapper"
+                        const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button")
+                        fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon
+                        fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title
+                
+                        fragment.parentNode.replaceChild(fragmentWrapper, fragment)
+                        fragmentWrapper.appendChild(fragment)
+                        fragmentWrapper.appendChild(fragmentCopyButton)
+            
+                    }
+                }
+            })
+        })
+    }
+
+
+    copyContent() {
+        const content = this.previousSibling.cloneNode(true)
+        // filter out line number from file listings
+        content.querySelectorAll(".lineno, .ttc").forEach((node) => {
+            node.remove()
+        })
+        let textContent = content.textContent
+        // remove trailing newlines that appear in file listings
+        let numberOfTrailingNewlines = 0
+        while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') {
+            numberOfTrailingNewlines++;
+        }
+        textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines)
+        navigator.clipboard.writeText(textContent);
+        this.classList.add("success")
+        this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon
+        window.setTimeout(() => {
+            this.classList.remove("success")
+            this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon
+        }, DoxygenAwesomeFragmentCopyButton.successDuration);
+    }
+}
+
+customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton)
diff --git a/doxygen/doxygen-awesome-css/doxygen-awesome-paragraph-link.js b/doxygen/doxygen-awesome-css/doxygen-awesome-paragraph-link.js
new file mode 100644
index 0000000000..6424dbd429
--- /dev/null
+++ b/doxygen/doxygen-awesome-css/doxygen-awesome-paragraph-link.js
@@ -0,0 +1,51 @@
+/**
+
+Doxygen Awesome
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2022 jothepro
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*/
+
+class DoxygenAwesomeParagraphLink {
+    // Icon from https://fonts.google.com/icons
+    // Licensed under the Apache 2.0 license:
+    // https://www.apache.org/licenses/LICENSE-2.0.html
+    static icon = `<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8z"/></svg>`
+    static title = "Permanent Link"
+    static init() {
+        $(function() {
+            $(document).ready(function() {
+                document.querySelectorAll(".contents a.anchor[id], .contents .groupheader > a[id]").forEach((node) => {
+                    let anchorlink = document.createElement("a")
+                    anchorlink.setAttribute("href", `#${node.getAttribute("id")}`)
+                    anchorlink.setAttribute("title", DoxygenAwesomeParagraphLink.title)
+                    anchorlink.classList.add("anchorlink")
+                    node.classList.add("anchor")
+                    anchorlink.innerHTML = DoxygenAwesomeParagraphLink.icon
+                    node.parentElement.appendChild(anchorlink)
+                })
+            })
+        })
+    }
+}
diff --git a/doxygen/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css b/doxygen/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css
new file mode 100644
index 0000000000..b988b6f05e
--- /dev/null
+++ b/doxygen/doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css
@@ -0,0 +1,40 @@
+
+/**
+
+Doxygen Awesome
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2021 jothepro
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*/
+
+@media screen and (min-width: 768px) {
+
+    #MSearchBox {
+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px);
+    }
+
+    #MSearchField {
+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height));
+    }
+}
diff --git a/doxygen/doxygen-awesome-css/doxygen-awesome-sidebar-only.css b/doxygen/doxygen-awesome-css/doxygen-awesome-sidebar-only.css
new file mode 100644
index 0000000000..b5c4e7cbd6
--- /dev/null
+++ b/doxygen/doxygen-awesome-css/doxygen-awesome-sidebar-only.css
@@ -0,0 +1,113 @@
+/**
+
+Doxygen Awesome
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2021 jothepro
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+ */
+
+html {
+    /* side nav width. MUST be = `TREEVIEW_WIDTH`.
+     * Make sure it is wide enough to contain the page title (logo + title + version)
+     */
+    --side-nav-fixed-width: 335px;
+    --menu-display: none;
+
+    --top-height: 120px;
+}
+
+#projectname {
+    white-space: nowrap;
+}
+
+
+@media screen and (min-width: 768px) {
+    html {
+        --searchbar-background: var(--page-background-color);
+    }
+
+    #side-nav {
+        min-width: var(--side-nav-fixed-width);
+        max-width: var(--side-nav-fixed-width);
+        top: var(--top-height);
+        overflow: visible;
+    }
+
+    #nav-tree, #side-nav {
+        height: calc(100vh - var(--top-height)) !important;
+    }
+
+    #nav-tree {
+        padding: 0;
+    }
+
+    #top {
+        display: block;
+        border-bottom: none;
+        height: var(--top-height);
+        margin-bottom: calc(0px - var(--top-height));
+        max-width: var(--side-nav-fixed-width);
+        overflow: hidden;
+        background: var(--side-nav-background);
+    }
+    #main-nav {
+        float: left;
+        padding-right: 0;
+    }
+
+    .ui-resizable-handle {
+        cursor: default;
+        width: 1px !important;
+        box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color);
+    }
+
+    #nav-path {
+        position: fixed;
+        right: 0;
+        left: var(--side-nav-fixed-width);
+        bottom: 0;
+        width: auto;
+    }
+
+    #doc-content {
+        height: calc(100vh - 31px) !important;
+        padding-bottom: calc(3 * var(--spacing-large));
+        padding-top: calc(var(--top-height) - 80px);
+        box-sizing: border-box;
+        margin-left: var(--side-nav-fixed-width) !important;
+    }
+
+    #MSearchBox {
+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)));
+    }
+
+    #MSearchField {
+        width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px);
+    }
+
+    #MSearchResultsWindow {
+        left: var(--spacing-medium) !important;
+        right: auto;
+    }
+}
diff --git a/doxygen/doxygen-awesome-css/doxygen-awesome.css b/doxygen/doxygen-awesome-css/doxygen-awesome.css
new file mode 100644
index 0000000000..4e4dee5b08
--- /dev/null
+++ b/doxygen/doxygen-awesome-css/doxygen-awesome.css
@@ -0,0 +1,2137 @@
+/**
+
+Doxygen Awesome
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2021 - 2022 jothepro
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*/
+
+html {
+    /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */
+    --primary-color: #1779c4;
+    --primary-dark-color: #335c80;
+    --primary-light-color: #70b1e9;
+
+    /* page base colors */
+    --page-background-color: white;
+    --page-foreground-color: #2f4153;
+    --page-secondary-foreground-color: #637485;
+
+    /* color for all separators on the website: hr, borders, ... */
+    --separator-color: #dedede;
+
+    /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */
+    --border-radius-large: 8px;
+    --border-radius-small: 4px;
+    --border-radius-medium: 6px;
+
+    /* default spacings. Most compontest reference these values for spacing, to provide uniform spacing on the page. */
+    --spacing-small: 5px;
+    --spacing-medium: 10px;
+    --spacing-large: 16px;
+
+    /* default box shadow used for raising an element above the normal content. Used in dropdowns, Searchresult, ... */
+    --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075);
+
+    --odd-color: rgba(0,0,0,.028);
+
+    /* font-families. will affect all text on the website
+     * font-family: the normal font for text, headlines, menus
+     * font-family-monospace: used for preformatted text in memtitle, code, fragments
+     */
+    --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;
+    --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
+
+    /* font sizes */
+    --page-font-size: 15.6px;
+    --navigation-font-size: 14.4px;
+    --code-font-size: 14px; /* affects code, fragment */
+    --title-font-size: 22px;
+
+    /* content text properties. These only affect the page content, not the navigation or any other ui elements */
+    --content-line-height: 27px;
+    /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/
+    --content-maxwidth: 1000px;
+
+    /* colors for various content boxes: @warning, @note, @deprecated @bug */
+    --warning-color: #f8d1cc;
+    --warning-color-dark: #b61825;
+    --warning-color-darker: #75070f;
+    --note-color: #faf3d8;
+    --note-color-dark: #f3a600;
+    --note-color-darker: #5f4204;
+    --todo-color: #e4f3ff;
+    --todo-color-dark: #1879C4;
+    --todo-color-darker: #274a5c;
+    --deprecated-color: #ecf0f3;
+    --deprecated-color-dark: #5b6269;
+    --deprecated-color-darker: #43454a;
+    --bug-color: #e4dafd;
+    --bug-color-dark: #5b2bdd;
+    --bug-color-darker: #2a0d72;
+    --invariant-color: #d8f1e3;
+    --invariant-color-dark: #44b86f;
+    --invariant-color-darker: #265532;
+
+    /* blockquote colors */
+    --blockquote-background: #f8f9fa;
+    --blockquote-foreground: #636568;
+
+    /* table colors */
+    --tablehead-background: #f1f1f1;
+    --tablehead-foreground: var(--page-foreground-color);
+
+    /* menu-display: block | none
+     * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible.
+     * `GENERATE_TREEVIEW` MUST be enabled!
+     */
+    --menu-display: block;
+
+    --menu-focus-foreground: var(--page-background-color);
+    --menu-focus-background: var(--primary-color);
+    --menu-selected-background: rgba(0,0,0,.05);
+
+
+    --header-background: var(--page-background-color);
+    --header-foreground: var(--page-foreground-color);
+
+    /* searchbar colors */
+    --searchbar-background: var(--side-nav-background);
+    --searchbar-foreground: var(--page-foreground-color);
+
+    /* searchbar size
+     * (`searchbar-width` is only applied on screens >= 768px.
+     * on smaller screens the searchbar will always fill the entire screen width) */
+    --searchbar-height: 33px;
+    --searchbar-width: 210px;
+    --searchbar-border-radius: var(--searchbar-height);
+
+    /* code block colors */
+    --code-background: #f5f5f5;
+    --code-foreground: var(--page-foreground-color);
+
+    /* fragment colors */
+    --fragment-background: #F8F9FA;
+    --fragment-foreground: #37474F;
+    --fragment-keyword: #bb6bb2;
+    --fragment-keywordtype: #8258b3;
+    --fragment-keywordflow: #d67c3b;
+    --fragment-token: #438a59;
+    --fragment-comment: #969696;
+    --fragment-link: #5383d6;
+    --fragment-preprocessor: #46aaa5;
+    --fragment-linenumber-color: #797979;
+    --fragment-linenumber-background: #f4f4f5;
+    --fragment-linenumber-border: #e3e5e7;
+    --fragment-lineheight: 20px;
+
+    /* sidebar navigation (treeview) colors */
+    --side-nav-background: #fbfbfb;
+    --side-nav-foreground: var(--page-foreground-color);
+    --side-nav-arrow-opacity: 0;
+    --side-nav-arrow-hover-opacity: 0.9;
+
+    --toc-background: var(--side-nav-background);
+    --toc-foreground: var(--side-nav-foreground);
+
+    /* height of an item in any tree / collapsable table */
+    --tree-item-height: 30px;
+
+    --memname-font-size: var(--code-font-size);
+    --memtitle-font-size: 18px;
+
+    --webkit-scrollbar-size: 7px;
+    --webkit-scrollbar-padding: 4px;
+    --webkit-scrollbar-color: var(--separator-color);
+}
+
+@media screen and (max-width: 767px) {
+    html {
+        --page-font-size: 16px;
+        --navigation-font-size: 16px;
+        --code-font-size: 15px; /* affects code, fragment */
+        --title-font-size: 22px;
+    }
+}
+
+@media (prefers-color-scheme: dark) {
+    html:not(.light-mode) {
+        color-scheme: dark;
+
+        --primary-color: #1982d2;
+        --primary-dark-color: #86a9c4;
+        --primary-light-color: #4779ac;
+
+        --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35);
+
+        --odd-color: rgba(100,100,100,.06);
+
+        --menu-selected-background: rgba(0,0,0,.4);
+
+        --page-background-color: #1C1D1F;
+        --page-foreground-color: #d2dbde;
+        --page-secondary-foreground-color: #859399;
+        --separator-color: #38393b;
+        --side-nav-background: #252628;
+
+        --code-background: #2a2c2f;
+
+        --tablehead-background: #2a2c2f;
+    
+        --blockquote-background: #222325;
+        --blockquote-foreground: #7e8c92;
+
+        --warning-color: #2e1917;
+        --warning-color-dark: #ad2617;
+        --warning-color-darker: #f5b1aa;
+        --note-color: #3b2e04;
+        --note-color-dark: #f1b602;
+        --note-color-darker: #ceb670;
+        --todo-color: #163750;
+        --todo-color-dark: #1982D2;
+        --todo-color-darker: #dcf0fa;
+        --deprecated-color: #2e323b;
+        --deprecated-color-dark: #738396;
+        --deprecated-color-darker: #abb0bd;
+        --bug-color: #2a2536;
+        --bug-color-dark: #7661b3;
+        --bug-color-darker: #ae9ed6;
+        --invariant-color: #303a35;
+        --invariant-color-dark: #76ce96;
+        --invariant-color-darker: #cceed5;
+
+        --fragment-background: #282c34;
+        --fragment-foreground: #dbe4eb;
+        --fragment-keyword: #cc99cd;
+        --fragment-keywordtype: #ab99cd;
+        --fragment-keywordflow: #e08000;
+        --fragment-token: #7ec699;
+        --fragment-comment: #999999;
+        --fragment-link: #98c0e3;
+        --fragment-preprocessor: #65cabe;
+        --fragment-linenumber-color: #cccccc;
+        --fragment-linenumber-background: #35393c;
+        --fragment-linenumber-border: #1f1f1f;
+    }
+}
+
+/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */
+html.dark-mode {
+    color-scheme: dark;
+
+    --primary-color: #1982d2;
+    --primary-dark-color: #86a9c4;
+    --primary-light-color: #4779ac;
+
+    --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30);
+
+    --odd-color: rgba(100,100,100,.06);
+
+    --menu-selected-background: rgba(0,0,0,.4);
+
+    --page-background-color: #1C1D1F;
+    --page-foreground-color: #d2dbde;
+    --page-secondary-foreground-color: #859399;
+    --separator-color: #38393b;
+    --side-nav-background: #252628;
+
+    --code-background: #2a2c2f;
+
+    --tablehead-background: #2a2c2f;
+
+    --blockquote-background: #222325;
+    --blockquote-foreground: #7e8c92;
+
+    --warning-color: #2e1917;
+    --warning-color-dark: #ad2617;
+    --warning-color-darker: #f5b1aa;
+    --note-color: #3b2e04;
+    --note-color-dark: #f1b602;
+    --note-color-darker: #ceb670;
+    --todo-color: #163750;
+    --todo-color-dark: #1982D2;
+    --todo-color-darker: #dcf0fa;
+    --deprecated-color: #2e323b;
+    --deprecated-color-dark: #738396;
+    --deprecated-color-darker: #abb0bd;
+    --bug-color: #2a2536;
+    --bug-color-dark: #7661b3;
+    --bug-color-darker: #ae9ed6;
+    --invariant-color: #303a35;
+    --invariant-color-dark: #76ce96;
+    --invariant-color-darker: #cceed5;
+
+    --fragment-background: #282c34;
+    --fragment-foreground: #dbe4eb;
+    --fragment-keyword: #cc99cd;
+    --fragment-keywordtype: #ab99cd;
+    --fragment-keywordflow: #e08000;
+    --fragment-token: #7ec699;
+    --fragment-comment: #999999;
+    --fragment-link: #98c0e3;
+    --fragment-preprocessor: #65cabe;
+    --fragment-linenumber-color: #cccccc;
+    --fragment-linenumber-background: #35393c;
+    --fragment-linenumber-border: #1f1f1f;
+}
+
+body {
+    color: var(--page-foreground-color);
+    background-color: var(--page-background-color);
+    font-size: var(--page-font-size);
+}
+
+body, table, div, p, dl, #nav-tree .label, .title, .sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, .SelectItem, #MSearchField, .navpath li.navelem a, .navpath li.navelem a:hover {
+    font-family: var(--font-family);
+}
+
+h1, h2, h3, h4, h5 {
+    margin-top: .9em;
+    font-weight: 600;
+    line-height: initial;
+}
+
+p, div, table, dl {
+    font-size: var(--page-font-size);
+}
+
+a:link, a:visited, a:hover, a:focus, a:active {
+    color: var(--primary-color) !important;
+    font-weight: 500;
+}
+
+a.anchor {
+    scroll-margin-top: var(--spacing-large);
+}
+
+/*
+ Title and top navigation
+ */
+
+#top {
+    background: var(--header-background);
+    border-bottom: 1px solid var(--separator-color);
+}
+
+@media screen and (min-width: 768px) {
+    #top {
+        display: flex;
+        flex-wrap: wrap;
+        justify-content: space-between;
+        align-items: center;
+    }
+}
+
+#main-nav {
+    flex-grow: 5;
+    padding: var(--spacing-small) var(--spacing-medium);
+}
+
+#titlearea {
+    width: auto;
+    padding: var(--spacing-medium) var(--spacing-large);
+    background: none;
+    color: var(--header-foreground);
+    border-bottom: none;
+}
+
+@media screen and (max-width: 767px) {
+    #titlearea {
+        padding-bottom: var(--spacing-small);
+    }
+}
+
+#titlearea table tbody tr {
+    height: auto !important;
+}
+
+#projectname {
+    font-size: var(--title-font-size);
+    font-weight: 600;
+}
+
+#projectnumber {
+    font-family: inherit;
+    font-size: 60%;
+}
+
+#projectbrief {
+    font-family: inherit;
+    font-size: 80%;
+}
+
+#projectlogo {
+    vertical-align: middle;
+}
+
+#projectlogo img {
+    max-height: calc(var(--title-font-size) * 2);
+    margin-right: var(--spacing-small);
+}
+
+.sm-dox, .tabs, .tabs2, .tabs3 {
+    background: none;
+    padding: 0;
+}
+
+.tabs, .tabs2, .tabs3 {
+    border-bottom: 1px solid var(--separator-color);
+    margin-bottom: -1px;
+}
+
+@media screen and (max-width: 767px) {
+    .sm-dox a span.sub-arrow {
+        background: var(--code-background);
+    }
+
+    #main-menu a.has-submenu span.sub-arrow {
+        color: var(--page-secondary-foreground-color);
+        border-radius: var(--border-radius-medium);
+    }
+
+    #main-menu a.has-submenu:hover span.sub-arrow {
+        color: var(--page-foreground-color);
+    }
+}
+
+@media screen and (min-width: 768px) {
+    .sm-dox li, .tablist li {
+        display: var(--menu-display);
+    }
+
+    .sm-dox a span.sub-arrow {
+        border-color: var(--header-foreground) transparent transparent transparent;
+    }
+
+    .sm-dox a:hover span.sub-arrow {
+        border-color: var(--menu-focus-foreground) transparent transparent transparent;
+    }
+
+    .sm-dox ul a span.sub-arrow {
+        border-color: transparent transparent transparent var(--page-foreground-color);
+    }
+
+    .sm-dox ul a:hover span.sub-arrow {
+        border-color: transparent transparent transparent var(--menu-focus-foreground);
+    }
+}
+
+.sm-dox ul {
+    background: var(--page-background-color);
+    box-shadow: var(--box-shadow);
+    border: 1px solid var(--separator-color);
+    border-radius: var(--border-radius-medium) !important;
+    padding: var(--spacing-small);
+    animation: ease-out 150ms slideInMenu;
+}
+
+@keyframes slideInMenu {
+    from {
+        opacity: 0;
+        transform: translate(0px, -2px);
+    }
+
+    to {
+        opacity: 1;
+        transform: translate(0px, 0px);
+    }
+}
+
+.sm-dox ul a {
+    color: var(--page-foreground-color) !important;
+    background: var(--page-background-color);
+    font-size: var(--navigation-font-size);
+}
+
+.sm-dox>li>ul:after {
+    border-bottom-color: var(--page-background-color) !important;
+}
+
+.sm-dox>li>ul:before {
+    border-bottom-color: var(--separator-color) !important;
+}
+
+.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus {
+    font-size: var(--navigation-font-size) !important;
+    color: var(--menu-focus-foreground) !important;
+    text-shadow: none;
+    background-color: var(--menu-focus-background);
+    border-radius: var(--border-radius-small) !important;
+}
+
+.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a {
+    text-shadow: none;
+    background: transparent;
+    background-image: none !important;
+    color: var(--header-foreground) !important;
+    font-weight: normal;
+    font-size: var(--navigation-font-size);
+    border-radius: var(--border-radius-small) !important;
+}
+
+.sm-dox a:focus {
+    outline: auto;
+}
+
+.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover {
+    text-shadow: none;
+    font-weight: normal;
+    background: var(--menu-focus-background);
+    color: var(--menu-focus-foreground) !important;
+    border-radius: var(--border-radius-small) !important;
+    font-size: var(--navigation-font-size);
+}
+
+.tablist li.current {
+    border-radius: var(--border-radius-small);
+    background: var(--menu-selected-background);
+}
+
+.tablist li {
+    margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small);
+}
+
+.tablist a {
+    padding: 0 var(--spacing-large);
+}
+
+
+/*
+ Search box
+ */
+
+#MSearchBox {
+    height: var(--searchbar-height);
+    background: var(--searchbar-background);
+    border-radius: var(--searchbar-border-radius);
+    border: 1px solid var(--separator-color);
+    overflow: hidden;
+    width: var(--searchbar-width);
+    position: relative;
+    box-shadow: none;
+    display: block;
+    margin-top: 0;
+}
+
+.left #MSearchSelect {
+    left: 0;
+    user-select: none;
+    padding-left: 8px;
+}
+
+.left #MSearchSelect[src$=".png"] {
+    padding-left: 0
+}
+
+.SelectionMark {
+    user-select: none;
+}
+
+.tabs .left #MSearchSelect {
+    padding-left: 0;
+}
+
+.tabs #MSearchBox {
+    position: absolute;
+    right: var(--spacing-medium);
+}
+
+@media screen and (max-width: 767px) {
+    .tabs #MSearchBox {
+        position: relative;
+        right: 0;
+        margin-left: var(--spacing-medium);
+        margin-top: 0;
+    }
+}
+
+#MSearchSelectWindow, #MSearchResultsWindow {
+    z-index: 9999;
+}
+
+#MSearchBox.MSearchBoxActive {
+    border-color: var(--primary-color);
+    box-shadow: inset 0 0 0 1px var(--primary-color);
+}
+
+#main-menu > li:last-child {
+    margin-right: 0;
+}
+
+@media screen and (max-width: 767px) {
+    #main-menu > li:last-child {
+        height: 50px;
+    }
+}
+
+#MSearchField {
+    font-size: var(--navigation-font-size);
+    height: calc(var(--searchbar-height) - 2px);
+    background: transparent;
+    width: calc(var(--searchbar-width) - 64px);
+}
+
+.MSearchBoxActive #MSearchField {
+    color: var(--searchbar-foreground);
+}
+
+#MSearchSelect {
+    top: calc(calc(var(--searchbar-height) / 2) - 11px);
+}
+
+#MSearchBox span.left, #MSearchBox span.right {
+    background: none;
+    background-image: none;
+}
+
+#MSearchBox span.right {
+    padding-top: calc(calc(var(--searchbar-height) / 2) - 12px);
+    position: absolute;
+    right: var(--spacing-small);
+}
+
+.tabs #MSearchBox span.right {
+    top: calc(calc(var(--searchbar-height) / 2) - 12px);
+}
+
+@keyframes slideInSearchResults {
+    from {
+        opacity: 0;
+        transform: translate(0, 15px);
+    }
+
+    to {
+        opacity: 1;
+        transform: translate(0, 20px);
+    }
+}
+
+#MSearchResultsWindow {
+    left: auto !important;
+    right: var(--spacing-medium);
+    border-radius: var(--border-radius-large);
+    border: 1px solid var(--separator-color);
+    transform: translate(0, 20px);
+    box-shadow: var(--box-shadow);
+    animation: ease-out 280ms slideInSearchResults;
+    background: var(--page-background-color);
+}
+
+iframe#MSearchResults {
+    margin: 4px;
+}
+
+iframe {
+    color-scheme: normal;
+}
+
+@media (prefers-color-scheme: dark) {
+    html:not(.light-mode) iframe#MSearchResults {
+        filter: invert() hue-rotate(180deg);
+    }
+}
+
+html.dark-mode iframe#MSearchResults {
+    filter: invert() hue-rotate(180deg);
+}
+
+#MSearchSelectWindow {
+    border: 1px solid var(--separator-color);
+    border-radius: var(--border-radius-medium);
+    box-shadow: var(--box-shadow);
+    background: var(--page-background-color);
+    padding-top: var(--spacing-small);
+    padding-bottom: var(--spacing-small);
+}
+
+#MSearchSelectWindow a.SelectItem {
+    font-size: var(--navigation-font-size);
+    line-height: var(--content-line-height);
+    margin: 0 var(--spacing-small);
+    border-radius: var(--border-radius-small);
+    color: var(--page-foreground-color) !important;
+    font-weight: normal;
+}
+
+#MSearchSelectWindow a.SelectItem:hover {
+    background: var(--menu-focus-background);
+    color: var(--menu-focus-foreground) !important;
+}
+
+@media screen and (max-width: 767px) {
+    #MSearchBox {
+        margin-top: var(--spacing-medium);
+        margin-bottom: var(--spacing-medium);
+        width: calc(100vw - 30px);
+    }
+
+    #main-menu > li:last-child {
+        float: none !important;
+    }
+
+    #MSearchField {
+        width: calc(100vw - 110px);
+    }
+
+    @keyframes slideInSearchResultsMobile {
+        from {
+            opacity: 0;
+            transform: translate(0, 15px);
+        }
+
+        to {
+            opacity: 1;
+            transform: translate(0, 20px);
+        }
+    }
+
+    #MSearchResultsWindow {
+        left: var(--spacing-medium) !important;
+        right: var(--spacing-medium);
+        overflow: auto;
+        transform: translate(0, 20px);
+        animation: ease-out 280ms slideInSearchResultsMobile;
+    }
+
+    /*
+     * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2
+     */
+    label.main-menu-btn ~ #searchBoxPos1 {
+        top: 3px !important;
+        right: 6px !important;
+        left: 45px;
+        display: flex;
+    }
+
+    label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox {
+        margin-top: 0;
+        margin-bottom: 0;
+        flex-grow: 2;
+        float: left;
+    }
+}
+
+/*
+ Tree view
+ */
+
+#side-nav {
+    padding: 0 !important;
+    background: var(--side-nav-background);
+}
+
+@media screen and (max-width: 767px) {
+    #side-nav {
+        display: none;
+    }
+
+    #doc-content {
+        margin-left: 0 !important;
+    }
+}
+
+#nav-tree {
+    background: transparent;
+}
+
+#nav-tree .label {
+    font-size: var(--navigation-font-size);
+}
+
+#nav-tree .item {
+    height: var(--tree-item-height);
+    line-height: var(--tree-item-height);
+}
+
+#nav-sync {
+    bottom: 12px;
+    right: 12px;
+    top: auto !important;
+    user-select: none;
+}
+
+#nav-tree .selected {
+    text-shadow: none;
+    background-image: none;
+    background-color: transparent;
+    position: relative;
+}
+
+#nav-tree .selected::after {
+    content: "";
+    position: absolute;
+    top: 1px;
+    bottom: 1px;
+    left: 0;
+    width: 4px;
+    border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0;
+    background: var(--primary-color);
+}
+
+
+#nav-tree a {
+    color: var(--side-nav-foreground) !important;
+    font-weight: normal;
+}
+
+#nav-tree a:focus {
+    outline-style: auto;
+}
+
+#nav-tree .arrow {
+    opacity: var(--side-nav-arrow-opacity);
+}
+
+.arrow {
+    color: inherit;
+    cursor: pointer;
+    font-size: 45%;
+    vertical-align: middle;
+    margin-right: 2px;
+    font-family: serif;
+    height: auto;
+    text-align: right;
+}
+
+#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow {
+    opacity: var(--side-nav-arrow-hover-opacity);
+}
+
+#nav-tree .selected a {
+    color: var(--primary-color) !important;
+    font-weight: bolder;
+    font-weight: 600;
+}
+
+.ui-resizable-e {
+    background: var(--separator-color);
+    width: 1px;
+}
+
+/*
+ Contents
+ */
+
+div.header {
+    border-bottom: 1px solid var(--separator-color);
+    background-color: var(--page-background-color);
+    background-image: none;
+}
+
+div.contents, div.header .title, div.header .summary {
+    max-width: var(--content-maxwidth);
+}
+
+div.contents, div.header .title  {
+    line-height: initial;
+    margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto;
+}
+
+div.header .summary {
+    margin: var(--spacing-medium) auto 0 auto;
+}
+
+div.headertitle {
+    padding: 0;
+}
+
+div.header .title {
+    font-weight: 600;
+    font-size: 210%;
+    padding: var(--spacing-medium) var(--spacing-large);
+    word-break: break-word;
+}
+
+div.header .summary {
+    width: auto;
+    display: block;
+    float: none;
+    padding: 0 var(--spacing-large);
+}
+
+td.memSeparator {
+    border-color: var(--separator-color);
+}
+
+span.mlabel {
+    background: var(--primary-color);
+    border: none;
+    padding: 4px 9px;
+    border-radius: 12px;
+    margin-right: var(--spacing-medium);
+}
+
+span.mlabel:last-of-type {
+    margin-right: 2px;
+}
+
+div.contents {
+    padding: 0 var(--spacing-large);
+}
+
+div.contents p, div.contents li {
+    line-height: var(--content-line-height);
+}
+
+div.contents div.dyncontent {
+    margin: var(--spacing-medium) 0;
+}
+
+@media (prefers-color-scheme: dark) {
+    html:not(.light-mode) div.contents div.dyncontent img,
+    html:not(.light-mode) div.contents center img,
+    html:not(.light-mode) div.contents table img,
+    html:not(.light-mode) div.contents div.dyncontent iframe,
+    html:not(.light-mode) div.contents center iframe,
+    html:not(.light-mode) div.contents table iframe {
+        filter: hue-rotate(180deg) invert();
+    }
+}
+
+html.dark-mode div.contents div.dyncontent img,
+html.dark-mode div.contents center img,
+html.dark-mode div.contents table img,
+html.dark-mode div.contents div.dyncontent iframe,
+html.dark-mode div.contents center iframe,
+html.dark-mode div.contents table iframe {
+    filter: hue-rotate(180deg) invert();
+}
+
+h2.groupheader {
+    border-bottom: 0px;
+    color: var(--page-foreground-color);
+    box-shadow: 
+        100px 0 var(--page-background-color), 
+        -100px 0 var(--page-background-color),
+        100px 0.75px var(--separator-color),
+        -100px 0.75px var(--separator-color),
+        500px 0 var(--page-background-color), 
+        -500px 0 var(--page-background-color),
+        500px 0.75px var(--separator-color),
+        -500px 0.75px var(--separator-color),
+        1500px 0 var(--page-background-color),
+        -1500px 0 var(--page-background-color), 
+        1500px 0.75px var(--separator-color),
+        -1500px 0.75px var(--separator-color),
+        2000px 0 var(--page-background-color),
+        -2000px 0 var(--page-background-color),
+        2000px 0.75px var(--separator-color),
+        -2000px 0.75px var(--separator-color);
+}
+
+blockquote {
+    margin: 0 var(--spacing-medium) 0 var(--spacing-medium);
+    padding: var(--spacing-small) var(--spacing-large);
+    background: var(--blockquote-background);
+    color: var(--blockquote-foreground);
+    border-left: 0;
+    overflow: visible;
+    border-radius: var(--border-radius-medium);
+    overflow: visible;
+    position: relative;
+}
+
+blockquote::before, blockquote::after {
+    font-weight: bold;
+    font-family: serif;
+    font-size: 360%;
+    opacity: .15;
+    position: absolute;
+}
+
+blockquote::before {
+    content: "“";
+    left: -10px;
+    top: 4px;
+}
+
+blockquote::after {
+    content: "”";
+    right: -8px;
+    bottom: -25px;
+}
+
+blockquote p {
+    margin: var(--spacing-small) 0 var(--spacing-medium) 0;
+}
+.paramname {
+    font-weight: 600;
+    color: var(--primary-dark-color);
+}
+
+.paramname > code {
+    border: 0;
+}
+
+table.params .paramname {
+    font-weight: 600;
+    font-family: var(--font-family-monospace);
+    font-size: var(--code-font-size);
+    padding-right: var(--spacing-small);
+}
+
+.glow {
+    text-shadow: 0 0 15px var(--primary-light-color) !important;
+}
+
+.alphachar a {
+    color: var(--page-foreground-color);
+}
+
+/*
+ Table of Contents
+ */
+
+div.toc {
+    z-index: 10;
+    position: relative;
+    background-color: var(--toc-background);
+    border: 1px solid var(--separator-color);
+    border-radius: var(--border-radius-medium);
+    box-shadow: var(--box-shadow);
+    padding: 0 var(--spacing-large);
+    margin: 0 0 var(--spacing-medium) var(--spacing-medium);
+}
+
+div.toc h3 {
+    color: var(--toc-foreground);
+    font-size: var(--navigation-font-size);
+    margin: var(--spacing-large) 0;
+}
+
+div.toc li {
+    font-size: var(--navigation-font-size);
+    padding: 0;
+    background: none;
+}
+
+div.toc li:before {
+    content: '↓';
+    font-weight: 800;
+    font-family: var(--font-family);
+    margin-right: var(--spacing-small);
+    color: var(--toc-foreground);
+    opacity: .4;
+}
+
+div.toc ul li.level1 {
+    margin: 0;
+}
+
+div.toc ul li.level2, div.toc ul li.level3 {
+    margin-top: 0;
+}
+
+
+@media screen and (max-width: 767px) {
+    div.toc {
+        float: none;
+        width: auto;
+        margin: 0 0 var(--spacing-medium) 0;
+    }
+}
+
+/*
+ Code & Fragments
+ */
+
+code, div.fragment, pre.fragment {
+    border-radius: var(--border-radius-small);
+    border: 1px solid var(--separator-color);
+    overflow: hidden;
+}
+
+code {
+    display: inline;
+    background: var(--code-background);
+    color: var(--code-foreground);
+    padding: 2px 6px;
+    word-break: break-word;
+}
+
+div.fragment, pre.fragment {
+    margin: var(--spacing-medium) 0;
+    padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large);
+    background: var(--fragment-background);
+    color: var(--fragment-foreground);
+    overflow-x: auto;
+}
+
+@media screen and (max-width: 767px) {
+    div.fragment, pre.fragment {
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0;
+        border-right: 0;
+    }
+
+    .contents > div.fragment,
+    .textblock > div.fragment,
+    .textblock > pre.fragment,
+    .contents > .doxygen-awesome-fragment-wrapper > div.fragment,
+    .textblock > .doxygen-awesome-fragment-wrapper > div.fragment,
+    .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment {
+        margin: var(--spacing-medium) calc(0px - var(--spacing-large));
+        border-radius: 0;
+        border-left: 0;
+    }
+
+    .textblock li > .fragment,
+    .textblock li > .doxygen-awesome-fragment-wrapper > .fragment {
+        margin: var(--spacing-medium) calc(0px - var(--spacing-large));
+    }
+
+    .memdoc li > .fragment,
+    .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment {
+        margin: var(--spacing-medium) calc(0px - var(--spacing-medium));
+    }
+
+    .textblock ul, .memdoc ul {
+        overflow: initial;
+    }
+
+    .memdoc > div.fragment,
+    .memdoc > pre.fragment,
+    dl dd > div.fragment,
+    dl dd pre.fragment,
+    .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment,
+    .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment,
+    dl dd > .doxygen-awesome-fragment-wrapper > div.fragment,
+    dl dd .doxygen-awesome-fragment-wrapper > pre.fragment {
+        margin: var(--spacing-medium) calc(0px - var(--spacing-medium));
+        border-radius: 0;
+        border-left: 0;
+    }
+}
+
+code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span {
+    font-family: var(--font-family-monospace);
+    font-size: var(--code-font-size) !important;
+}
+
+div.line:after {
+    margin-right: var(--spacing-medium);
+}
+
+div.fragment .line, pre.fragment {
+    white-space: pre;
+    word-wrap: initial;
+    line-height: var(--fragment-lineheight);
+}
+
+div.fragment span.keyword {
+    color: var(--fragment-keyword);
+}
+
+div.fragment span.keywordtype {
+    color: var(--fragment-keywordtype);
+}
+
+div.fragment span.keywordflow {
+    color: var(--fragment-keywordflow);
+}
+
+div.fragment span.stringliteral {
+    color: var(--fragment-token)
+}
+
+div.fragment span.comment {
+    color: var(--fragment-comment);
+}
+
+div.fragment a.code {
+    color: var(--fragment-link) !important;
+}
+
+div.fragment span.preprocessor {
+    color: var(--fragment-preprocessor);
+}
+
+div.fragment span.lineno {
+    display: inline-block;
+    width: 27px;
+    border-right: none;
+    background: var(--fragment-linenumber-background);
+    color: var(--fragment-linenumber-color);
+}
+
+div.fragment span.lineno a {
+    background: none;
+    color: var(--fragment-link) !important;
+}
+
+div.fragment .line:first-child .lineno {
+    box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border);
+}
+
+/*
+ dl warning, attention, note, deprecated, bug, ...
+ */
+
+dl.bug dt a, dl.deprecated dt a, dl.todo dt a {
+    font-weight: bold !important;
+}
+
+dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.todo, dl.remark {
+    padding: var(--spacing-medium);
+    margin: var(--spacing-medium) 0;
+    color: var(--page-background-color);
+    overflow: hidden;
+    margin-left: 0;
+    border-radius: var(--border-radius-small);
+}
+
+dl.section dd {
+    margin-bottom: 2px;
+}
+
+dl.warning, dl.attention {
+    background: var(--warning-color);
+    border-left: 8px solid var(--warning-color-dark);
+    color: var(--warning-color-darker);
+}
+
+dl.warning dt, dl.attention dt {
+    color: var(--warning-color-dark);
+}
+
+dl.note, dl.remark {
+    background: var(--note-color);
+    border-left: 8px solid var(--note-color-dark);
+    color: var(--note-color-darker);
+}
+
+dl.note dt, dl.remark dt {
+    color: var(--note-color-dark);
+}
+
+dl.todo {
+    background: var(--todo-color);
+    border-left: 8px solid var(--todo-color-dark);
+    color: var(--todo-color-darker);
+}
+
+dl.todo dt {
+    color: var(--todo-color-dark);
+}
+
+dl.bug dt a {
+    color: var(--todo-color-dark) !important;
+}
+
+dl.bug {
+    background: var(--bug-color);
+    border-left: 8px solid var(--bug-color-dark);
+    color: var(--bug-color-darker);
+}
+
+dl.bug dt a {
+    color: var(--bug-color-dark) !important;
+}
+
+dl.deprecated {
+    background: var(--deprecated-color);
+    border-left: 8px solid var(--deprecated-color-dark);
+    color: var(--deprecated-color-darker);
+}
+
+dl.deprecated dt a {
+    color: var(--deprecated-color-dark) !important;
+}
+
+dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd {
+    margin-inline-start: 0px;
+}
+
+dl.invariant, dl.pre {
+    background: var(--invariant-color);
+    border-left: 8px solid var(--invariant-color-dark);
+    color: var(--invariant-color-darker);
+}
+
+dl.invariant dt, dl.pre dt {
+    color: var(--invariant-color-dark);
+}
+
+/*
+ memitem
+ */
+
+div.memdoc, div.memproto, h2.memtitle {
+    box-shadow: none;
+    background-image: none;
+    border: none;
+}
+
+div.memdoc {
+    padding: 0 var(--spacing-medium);
+    background: var(--page-background-color);
+}
+
+h2.memtitle, div.memitem {
+    border: 1px solid var(--separator-color);
+    box-shadow: var(--box-shadow);
+}
+
+h2.memtitle {
+    box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow);
+}
+
+div.memitem {
+    transition: none;
+}
+
+div.memproto, h2.memtitle {
+    background: var(--fragment-background);
+    text-shadow: none;
+}
+
+h2.memtitle {
+    font-weight: 500;
+    font-size: var(--memtitle-font-size);
+    font-family: var(--font-family-monospace);
+    border-bottom: none;
+    border-top-left-radius: var(--border-radius-medium);
+    border-top-right-radius: var(--border-radius-medium);
+    word-break: break-all;
+    position: relative;
+}
+
+h2.memtitle:after {
+    content: "";
+    display: block;
+    background: var(--fragment-background);
+    height: var(--spacing-medium);
+    bottom: calc(0px - var(--spacing-medium));
+    left: 0;
+    right: -14px;
+    position: absolute;
+    border-top-right-radius: var(--border-radius-medium);
+}
+
+h2.memtitle > span.permalink {
+    font-size: inherit;
+}
+
+h2.memtitle > span.permalink > a {
+    text-decoration: none;
+    padding-left: 3px;
+    margin-right: -4px;
+    user-select: none;
+    display: inline-block;
+    margin-top: -6px;
+}
+
+h2.memtitle > span.permalink > a:hover {
+    color: var(--primary-dark-color) !important;
+}
+
+a:target + h2.memtitle, a:target + h2.memtitle + div.memitem {
+    border-color: var(--primary-light-color);
+}
+
+div.memitem {
+    border-top-right-radius: var(--border-radius-medium);
+    border-bottom-right-radius: var(--border-radius-medium);
+    border-bottom-left-radius: var(--border-radius-medium);
+    overflow: hidden;
+    display: block !important;
+}
+
+div.memdoc {
+    border-radius: 0;
+}
+
+div.memproto {
+    border-radius: 0 var(--border-radius-small) 0 0;
+    overflow: auto;
+    border-bottom: 1px solid var(--separator-color);
+    padding: var(--spacing-medium);
+    margin-bottom: -1px;
+}
+
+div.memtitle {
+    border-top-right-radius: var(--border-radius-medium);
+    border-top-left-radius: var(--border-radius-medium);
+}
+
+div.memproto table.memname {
+    font-family: var(--font-family-monospace);
+    color: var(--page-foreground-color);
+    font-size: var(--memname-font-size);
+}
+
+div.memproto div.memtemplate {
+    font-family: var(--font-family-monospace);
+    color: var(--primary-dark-color);
+    font-size: var(--memname-font-size);
+    margin-left: 2px;
+}
+
+table.mlabels, table.mlabels > tbody {
+    display: block;
+}
+
+td.mlabels-left {
+    width: auto;
+}
+
+td.mlabels-right {
+    margin-top: 3px;
+    position: sticky;
+    left: 0;
+}
+
+table.mlabels > tbody > tr:first-child {
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: wrap;
+}
+
+.memname, .memitem span.mlabels {
+    margin: 0
+}
+
+/*
+ reflist
+ */
+
+dl.reflist {
+    box-shadow: var(--box-shadow);
+    border-radius: var(--border-radius-medium);
+    border: 1px solid var(--separator-color);
+    overflow: hidden;
+    padding: 0;
+}
+
+
+dl.reflist dt, dl.reflist dd {
+    box-shadow: none;
+    text-shadow: none;
+    background-image: none;
+    border: none;
+    padding: 12px;
+}
+
+
+dl.reflist dt {
+    font-weight: 500;
+    border-radius: 0;
+    background: var(--code-background);
+    border-bottom: 1px solid var(--separator-color);
+    color: var(--page-foreground-color)
+}
+
+
+dl.reflist dd {
+    background: none;
+}
+
+/*
+ Table
+ */
+
+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) {
+     display: inline-block;
+     max-width: 100%;
+ }
+
+.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) {
+    margin-left: calc(0px - var(--spacing-large));
+    margin-right: calc(0px - var(--spacing-large));
+    max-width: calc(100% + 2 * var(--spacing-large));
+}
+
+table.markdownTable, table.fieldtable {
+    border: none;
+    margin: var(--spacing-medium) 0;
+    box-shadow: 0 0 0 1px var(--separator-color);
+    border-radius: var(--border-radius-small);
+}
+
+table.fieldtable {
+    width: 100%;
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+    background: var(--tablehead-background);
+    color: var(--tablehead-foreground);
+    font-weight: 600;
+    font-size: var(--page-font-size);
+}
+
+th.markdownTableHeadLeft:first-child, th.markdownTableHeadRight:first-child, th.markdownTableHeadCenter:first-child, th.markdownTableHeadNone:first-child {
+    border-top-left-radius: var(--border-radius-small);
+}
+
+th.markdownTableHeadLeft:last-child, th.markdownTableHeadRight:last-child, th.markdownTableHeadCenter:last-child, th.markdownTableHeadNone:last-child {
+    border-top-right-radius: var(--border-radius-small);
+}
+
+table.markdownTable td, table.markdownTable th, table.fieldtable dt {
+    border: none;
+    border-right: 1px solid var(--separator-color);
+    padding: var(--spacing-small) var(--spacing-medium);
+}
+
+table.markdownTable td:last-child, table.markdownTable th:last-child, table.fieldtable dt:last-child {
+    border: none;
+}
+
+table.markdownTable tr, table.markdownTable tr {
+    border-bottom: 1px solid var(--separator-color);
+}
+
+table.markdownTable tr:last-child, table.markdownTable tr:last-child {
+    border-bottom: none;
+}
+
+table.fieldtable th {
+    font-size: var(--page-font-size);
+    font-weight: 600;
+    background-image: none;
+    background-color: var(--tablehead-background);
+    color: var(--tablehead-foreground);
+    border-bottom: 1px solid var(--separator-color);
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+    border-bottom: 1px solid var(--separator-color);
+    border-right: 1px solid var(--separator-color);
+}
+
+.fieldtable td.fielddoc {
+    border-bottom: 1px solid var(--separator-color);
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+    background-color: var(--primary-light-color);
+    box-shadow: 0 0 15px var(--primary-light-color);
+}
+
+table.memberdecls {
+    display: block;
+}
+
+table.memberdecls tr[class^='memitem'] {
+    font-family: var(--font-family-monospace);
+    font-size: var(--code-font-size);
+}
+
+table.memberdecls tr[class^='memitem'] .memTemplParams {
+    font-family: var(--font-family-monospace);
+    font-size: var(--code-font-size);
+    color: var(--primary-dark-color);
+}
+
+table.memberdecls .memItemLeft,
+table.memberdecls .memItemRight,
+table.memberdecls .memTemplItemLeft,
+table.memberdecls .memTemplItemRight,
+table.memberdecls .memTemplParams {
+    transition: none;
+    padding-top: var(--spacing-small);
+    padding-bottom: var(--spacing-small);
+    border-top: 1px solid var(--separator-color);
+    border-bottom: 1px solid var(--separator-color);
+    background-color: var(--fragment-background);
+}
+
+table.memberdecls .memTemplItemLeft,
+table.memberdecls .memTemplItemRight {
+    padding-top: 2px;
+}
+
+table.memberdecls .memTemplParams {
+    border-bottom: 0;
+    border-left: 1px solid var(--separator-color);
+    border-right: 1px solid var(--separator-color);
+    border-radius: var(--border-radius-small) var(--border-radius-small) 0 0;
+    padding-bottom: 0;
+}
+
+table.memberdecls .memTemplItemLeft {
+    border-radius: 0 0 0 var(--border-radius-small);
+    border-left: 1px solid var(--separator-color);
+    border-top: 0;
+}
+
+table.memberdecls .memTemplItemRight {
+    border-radius: 0 0 var(--border-radius-small) 0;
+    border-right: 1px solid var(--separator-color);
+    border-top: 0;
+}
+
+table.memberdecls .memItemLeft {
+    border-radius: var(--border-radius-small) 0 0 var(--border-radius-small);
+    border-left: 1px solid var(--separator-color);
+    padding-left: var(--spacing-medium);
+    padding-right: 0;
+}
+
+table.memberdecls .memItemRight  {
+    border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0;
+    border-right: 1px solid var(--separator-color);
+    padding-right: var(--spacing-medium);
+    padding-left: 0;
+
+}
+
+table.memberdecls .mdescLeft, table.memberdecls .mdescRight {
+    background: none;
+    color: var(--page-foreground-color);
+    padding: var(--spacing-small) 0;
+}
+
+table.memberdecls .memSeparator {
+    background: var(--page-background-color);
+    height: var(--spacing-large);
+    border: 0;
+    transition: none;
+}
+
+table.memberdecls .groupheader {
+    margin-bottom: var(--spacing-large);
+}
+
+table.memberdecls .inherit_header td {
+    padding: 0 0 var(--spacing-medium) 0;
+    text-indent: -12px;
+    line-height: 1.5em;
+    color: var(--page-secondary-foreground-color);
+}
+
+@media screen and (max-width: 767px) {
+
+    table.memberdecls .memItemLeft,
+    table.memberdecls .memItemRight,
+    table.memberdecls .mdescLeft,
+    table.memberdecls .mdescRight,
+    table.memberdecls .memTemplItemLeft,
+    table.memberdecls .memTemplItemRight,
+    table.memberdecls .memTemplParams {
+        display: block;
+        text-align: left;
+        padding-left: var(--spacing-large);
+        margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large));
+        border-right: none;
+        border-left: none;
+        border-radius: 0;
+    }
+
+    table.memberdecls .memItemLeft,
+    table.memberdecls .mdescLeft,
+    table.memberdecls .memTemplItemLeft {
+        border-bottom: 0;
+        padding-bottom: 0;
+    }
+
+    table.memberdecls .memTemplItemLeft {
+        padding-top: 0;
+    }
+
+    table.memberdecls .mdescLeft {
+        margin-top: calc(0px - var(--page-font-size));
+    }
+
+    table.memberdecls .memItemRight, 
+    table.memberdecls .mdescRight,
+    table.memberdecls .memTemplItemRight {
+        border-top: 0;
+        padding-top: 0;
+        padding-right: var(--spacing-large);
+        overflow-x: auto;
+    }
+
+    table.memberdecls tr[class^='memitem']:not(.inherit) {
+        display: block;
+        width: calc(100vw - 2 * var(--spacing-large));
+    }
+
+    table.memberdecls .mdescRight {
+        color: var(--page-foreground-color);
+    }
+
+    table.memberdecls tr.inherit {
+        visibility: hidden;
+    }
+
+    table.memberdecls tr[style="display: table-row;"] {
+        display: block !important;
+        visibility: visible;
+        width: calc(100vw - 2 * var(--spacing-large));
+        animation: fade .5s;
+    }
+
+    @keyframes fade {
+        0% {
+            opacity: 0;
+            max-height: 0;
+        }
+
+        100% {
+            opacity: 1;
+            max-height: 200px;
+        }
+    }
+}
+
+
+/*
+ Horizontal Rule
+ */
+
+hr {
+    margin-top: var(--spacing-large);
+    margin-bottom: var(--spacing-large);
+    height: 1px;
+    background-color: var(--separator-color);
+    border: 0;
+}
+
+.contents hr {
+    box-shadow: 100px 0 0 var(--separator-color),
+                -100px 0 0 var(--separator-color),
+                500px 0 0 var(--separator-color),
+                -500px 0 0 var(--separator-color),
+                1500px 0 0 var(--separator-color),
+                -1500px 0 0 var(--separator-color),
+                2000px 0 0 var(--separator-color),
+                -2000px 0 0 var(--separator-color);
+}
+
+.contents img, .contents .center, .contents center, .contents div.image object {
+    max-width: 100%;
+    overflow: auto;
+}
+
+@media screen and (max-width: 767px) {
+    .contents .dyncontent > .center, .contents > center {
+        margin-left: calc(0px - var(--spacing-large));
+        margin-right: calc(0px - var(--spacing-large));
+        max-width: calc(100% + 2 * var(--spacing-large));
+    }
+}
+
+/*
+ Directories
+ */
+div.directory {
+    border-top: 1px solid var(--separator-color);
+    border-bottom: 1px solid var(--separator-color);
+    width: auto;
+}
+
+table.directory {
+    font-family: var(--font-family);
+    font-size: var(--page-font-size);
+    font-weight: normal;
+    width: 100%;
+}
+
+table.directory td.entry {
+    padding: var(--spacing-small);
+}
+
+table.directory td.desc {
+    min-width: 250px;
+}
+
+table.directory tr.even {
+    background-color: var(--odd-color);
+}
+
+.icona {
+    width: auto;
+    height: auto;
+    margin: 0 var(--spacing-small);
+}
+
+.icon {
+    background: var(--primary-color);
+    width: 18px;
+    height: 18px;
+    line-height: 18px;
+}
+
+.iconfopen, .icondoc, .iconfclosed {
+    background-position: center;
+    margin-bottom: 0;
+}
+
+.icondoc {
+    filter: saturate(0.2);
+}
+
+@media screen and (max-width: 767px) {
+    div.directory {
+        margin-left: calc(0px - var(--spacing-large));
+        margin-right: calc(0px - var(--spacing-large));
+    }
+}
+
+@media (prefers-color-scheme: dark) {
+    html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed {
+        filter: hue-rotate(180deg) invert();
+    }
+}
+
+html.dark-mode .iconfopen, html.dark-mode .iconfclosed {
+    filter: hue-rotate(180deg) invert();
+}
+
+/*
+ Class list
+ */
+
+.classindex dl.odd {
+    background: var(--odd-color);
+    border-radius: var(--border-radius-small);
+}
+
+/* 
+ Class Index Doxygen 1.8 
+*/
+
+table.classindex {
+    margin-left: 0;
+    margin-right: 0;
+    width: 100%;
+}
+
+table.classindex table div.ah {
+    background-image: none;
+    background-color: initial;
+    border-color: var(--separator-color);
+    color: var(--page-foreground-color);
+    box-shadow: var(--box-shadow);
+    border-radius: var(--border-radius-large);
+    padding: var(--spacing-small);
+}
+
+div.qindex {
+    background-color: var(--odd-color);
+    border-radius: var(--border-radius-small);
+    border: 1px solid var(--separator-color);
+    padding: var(--spacing-small) 0;
+}
+
+/*
+  Footer and nav-path
+ */
+
+#nav-path {
+    width: 100%;
+}
+
+#nav-path ul {
+    background-image: none;
+    background: var(--page-background-color);
+    border: none;
+    border-top: 1px solid var(--separator-color);
+    border-bottom: 1px solid var(--separator-color);
+    border-bottom: 0;
+    box-shadow: 0 0.75px 0 var(--separator-color);
+    font-size: var(--navigation-font-size);
+}
+
+img.footer {
+    width: 60px;
+}
+
+.navpath li.footer {
+    color: var(--page-secondary-foreground-color);
+}
+
+address.footer {
+    color: var(--page-secondary-foreground-color);
+    margin-bottom: var(--spacing-large);
+}
+
+#nav-path li.navelem {
+    background-image: none;
+    display: flex;
+    align-items: center;
+}
+
+.navpath li.navelem a {
+    text-shadow: none;
+    display: inline-block;
+    color: var(--primary-color) !important;
+}
+
+.navpath li.navelem b {
+    color: var(--primary-dark-color);
+    font-weight: 500;
+}
+
+li.navelem {
+    padding: 0;
+    margin-left: -8px;
+}
+
+li.navelem:first-child {
+    margin-left: var(--spacing-large);
+}
+
+li.navelem:first-child:before {
+    display: none;
+}
+
+#nav-path li.navelem:after {
+    content: '';
+    border: 5px solid var(--page-background-color);
+    border-bottom-color: transparent;
+    border-right-color: transparent;
+    border-top-color: transparent;
+    transform: translateY(-1px) scaleY(4.2);
+    z-index: 10;
+    margin-left: 6px;
+}
+
+#nav-path li.navelem:before {
+    content: '';
+    border: 5px solid var(--separator-color);
+    border-bottom-color: transparent;
+    border-right-color: transparent;
+    border-top-color: transparent;
+    transform: translateY(-1px) scaleY(3.2);
+    margin-right: var(--spacing-small);
+}
+
+.navpath li.navelem a:hover {
+    color: var(--primary-color);
+}
+
+/*
+ Scrollbars for Webkit
+*/
+
+#nav-tree::-webkit-scrollbar,
+div.fragment::-webkit-scrollbar,
+pre.fragment::-webkit-scrollbar,
+div.memproto::-webkit-scrollbar,
+.contents center::-webkit-scrollbar,
+.contents .center::-webkit-scrollbar,
+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname)::-webkit-scrollbar {
+    width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding));
+    height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding));
+}
+
+#nav-tree::-webkit-scrollbar-thumb,
+div.fragment::-webkit-scrollbar-thumb,
+pre.fragment::-webkit-scrollbar-thumb,
+div.memproto::-webkit-scrollbar-thumb,
+.contents center::-webkit-scrollbar-thumb,
+.contents .center::-webkit-scrollbar-thumb,
+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname)::-webkit-scrollbar-thumb {
+    background-color: transparent;
+    border: var(--webkit-scrollbar-padding) solid transparent;
+    border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding));
+    background-clip: padding-box;  
+}
+
+#nav-tree:hover::-webkit-scrollbar-thumb,
+div.fragment:hover::-webkit-scrollbar-thumb,
+pre.fragment:hover::-webkit-scrollbar-thumb,
+div.memproto:hover::-webkit-scrollbar-thumb,
+.contents center:hover::-webkit-scrollbar-thumb,
+.contents .center:hover::-webkit-scrollbar-thumb,
+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):hover::-webkit-scrollbar-thumb {
+    background-color: var(--webkit-scrollbar-color);
+}
+
+#nav-tree::-webkit-scrollbar-track,
+div.fragment::-webkit-scrollbar-track,
+pre.fragment::-webkit-scrollbar-track,
+div.memproto::-webkit-scrollbar-track,
+.contents center::-webkit-scrollbar-track,
+.contents .center::-webkit-scrollbar-track,
+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname)::-webkit-scrollbar-track {
+    background: transparent;
+}
+
+#nav-tree::-webkit-scrollbar-corner {
+    background-color: var(--side-nav-background);
+}
+
+#nav-tree,
+div.fragment,
+pre.fragment,
+div.memproto,
+.contents center,
+.contents .center,
+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) {
+    overflow-x: auto;
+    overflow-x: overlay;
+}
+
+#nav-tree {
+    overflow-x: auto;
+    overflow-y: auto;
+    overflow-y: overlay;
+}
+
+/*
+ Scrollbars for Firefox
+*/
+
+#nav-tree,
+div.fragment,
+pre.fragment,
+div.memproto,
+.contents center,
+.contents .center,
+.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) {
+    scrollbar-width: thin;
+}
+
+/*
+  Optional Dark mode toggle button
+*/
+
+doxygen-awesome-dark-mode-toggle {
+    display: inline-block;
+    margin: 0 0 0 var(--spacing-small);
+    padding: 0;
+    width: var(--searchbar-height);
+    height: var(--searchbar-height);
+    background: none;
+    border: none;
+    border-radius: var(--searchbar-height);
+    vertical-align: middle;
+    text-align: center;
+    line-height: var(--searchbar-height);
+    font-size: 22px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    user-select: none;
+    cursor: pointer;
+}
+
+doxygen-awesome-dark-mode-toggle > svg {
+    transition: transform .1s ease-in-out;
+}
+
+doxygen-awesome-dark-mode-toggle:active > svg {
+    transform: scale(.5);
+}
+
+doxygen-awesome-dark-mode-toggle:hover {
+    background-color: rgba(0,0,0,.03);
+}
+
+html.dark-mode doxygen-awesome-dark-mode-toggle:hover {
+    background-color: rgba(0,0,0,.18);
+}
+
+/*
+ Optional fragment copy button
+*/
+.doxygen-awesome-fragment-wrapper {
+    position: relative;
+}
+
+doxygen-awesome-fragment-copy-button {
+    opacity: 0;
+    background: var(--fragment-background);
+    width: 28px;
+    height: 28px;
+    position: absolute;
+    right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5));
+    top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5));
+    border: 1px solid var(--fragment-foreground);
+    cursor: pointer;
+    border-radius: var(--border-radius-small);
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success {
+    opacity: .28;
+}
+
+doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success {
+    opacity: 1 !important;
+}
+
+doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg {
+    transform: scale(.91);
+}
+
+doxygen-awesome-fragment-copy-button svg {
+    fill: var(--fragment-foreground);
+    width: 18px;
+    height: 18px;
+}
+
+doxygen-awesome-fragment-copy-button.success svg {
+    fill: rgb(14, 168, 14);
+}
+
+doxygen-awesome-fragment-copy-button.success {
+    border-color: rgb(14, 168, 14);
+}
+
+@media screen and (max-width: 767px) {
+    .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,
+    .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,
+    .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,
+    .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button,
+    dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button {
+        right: 0;
+    }
+}
+
+/*
+ Optional paragraph link button
+*/
+
+a.anchorlink {
+    font-size: 90%;
+    margin-left: var(--spacing-small);
+    color: var(--page-foreground-color) !important;
+    text-decoration: none;
+    opacity: .15;
+    display: none;
+    transition: opacity .1s ease-in-out, color .1s ease-in-out;
+}
+
+a.anchorlink svg {
+    fill: var(--page-foreground-color);
+}
+
+h3 a.anchorlink svg, h4 a.anchorlink svg {
+    margin-bottom: -3px;
+    margin-top: -4px;
+}
+
+a.anchorlink:hover {
+    opacity: .45;
+}
+
+h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink  {
+    display: inline-block;
+}
diff --git a/Documentation/eagle-plugin-notes.txt b/doxygen/eagle-plugin-notes.txt
similarity index 100%
rename from Documentation/eagle-plugin-notes.txt
rename to doxygen/eagle-plugin-notes.txt
diff --git a/doxygen/header.html b/doxygen/header.html
new file mode 100644
index 0000000000..c8a5718005
--- /dev/null
+++ b/doxygen/header.html
@@ -0,0 +1,81 @@
+<!-- HTML header for doxygen 1.9.4-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<!--BEGIN DISABLE_INDEX-->
+  <!--BEGIN FULL_SIDEBAR-->
+<script type="text/javascript">var page_layout=1;</script>
+  <!--END FULL_SIDEBAR-->
+<!--END DISABLE_INDEX-->
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+<script type="text/javascript" src="$relpath^doxygen-awesome-darkmode-toggle.js"></script>
+<script type="text/javascript" src="$relpath^doxygen-awesome-fragment-copy-button.js"></script>
+<script type="text/javascript" src="$relpath^doxygen-awesome-paragraph-link.js"></script>
+<script type="text/javascript">
+    DoxygenAwesomeDarkModeToggle.init()
+    DoxygenAwesomeFragmentCopyButton.init()
+    DoxygenAwesomeParagraphLink.init()
+</script>
+</head>
+<body>
+<!--BEGIN DISABLE_INDEX-->
+  <!--BEGIN FULL_SIDEBAR-->
+<div id="side-nav" class="ui-resizable side-nav-resizable"><!-- do not remove this div, it is closed by doxygen! -->
+  <!--END FULL_SIDEBAR-->
+<!--END DISABLE_INDEX-->
+
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<!--BEGIN TITLEAREA-->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <!--BEGIN PROJECT_LOGO-->
+  <td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
+  <!--END PROJECT_LOGO-->
+  <!--BEGIN PROJECT_NAME-->
+  <td id="projectalign">
+   <div id="projectname">$projectname<!--BEGIN PROJECT_NUMBER--><span id="projectnumber">&#160;$projectnumber</span><!--END PROJECT_NUMBER-->
+   </div>
+   <!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
+  </td>
+  <!--END PROJECT_NAME-->
+  <!--BEGIN !PROJECT_NAME-->
+   <!--BEGIN PROJECT_BRIEF-->
+    <td>
+    <div id="projectbrief">$projectbrief</div>
+    </td>
+   <!--END PROJECT_BRIEF-->
+  <!--END !PROJECT_NAME-->
+  <!--BEGIN DISABLE_INDEX-->
+   <!--BEGIN SEARCHENGINE-->
+     <!--BEGIN !FULL_SIDEBAR-->
+    <td>$searchbox</td>
+     <!--END !FULL_SIDEBAR-->
+   <!--END SEARCHENGINE-->
+  <!--END DISABLE_INDEX-->
+ </tr>
+  <!--BEGIN SEARCHENGINE-->
+   <!--BEGIN FULL_SIDEBAR-->
+   <tr><td colspan="2">$searchbox</td></tr>
+   <!--END FULL_SIDEBAR-->
+  <!--END SEARCHENGINE-->
+ </tbody>
+</table>
+</div>
+<!--END TITLEAREA-->
+<!-- end header part -->