v0.19 - 2024-04-27

    Enhancements:
        - Added `scalex` and `scaley` for asymmetric zooming/scaling of Elements
        - Added ElementImage for placing PNG and SVG images as an Element
        - Added pictorial elements
        - Load Fritzing Part files (breadboard view)
        - Added `.pin` and `.side` methods to Ic Element
        - Added `mathfont` parameter to drawing config method

    Fixes:
        - Fixed `tox` and `toy` methods when the Elemnet defines a theta
        - Fixed vertical offset of labels below an Element
        - Fixed reversing of CurrentLabel.
        - Update Ic Element to respect `pinspacing` when `size` is also provided
        - SVG backend accepts color tuples (r, g, b) in the range 0-1, mirroring Matplotlib
        - Tighten bounding box around text elements (when using ziamath)


v0.18 - 2023-12-29

    Enhancements:
        - Automatically increase size of flowchart boxes to fit the text
        - Added Container element to automatically draw a box around a group of elements
        - Internally track drawing state so that `d.add` or `d +=` is no longer necessary when adding elements inside a context manager
        - Default element attributes may be set using `Element.defaults` dictionary. For example, to fill all Diodes, set `elm.Diode.defaults['fill'] = True`.

    New Elements:
        - Lamp2
        - Terminal

    Other changes:
        - BREAKING: Subclasses of ElementCompound must add Segments inside a `setup` method instead of in `__init__`. The `inner_element` and `outer_element` parameters of `TwoPort` now accept classes instead of instances of those classes.


v0.17 - 2023-06-03

    New Elements:
        - Tristate inverter (credit: Jan Genoe)
        - NMos and PMos elements (credit: dtmaidenmueller)
        - AnalogNFet, AnalogPFet, AnalogBiasedFet
        - DataBusLine
        - CurrentMirror, VoltageMirror
        - Nullator, Norator, VMCMPair
        - Compound twoport elements (ElementTwoport base class):
            - TwoPort
            - VoltageTransactor
            - TransimpedanceTransactor
            - CurrentTransactor
            - TransadmittanceTransactor
            - Nullor

    Enhancements:
        - Added arguments for length/width of CurrentLabel arrows (credit: Christian Seigel)
        - Added config option for setting whitespace margins

    Bug fixes:
        - Fixed regression bug in logicparse where labels were not drawn on inputs/outputs
        - Fix timing diagrams when async times are longer than the wave
        - Fixed default style hierarchy on segments
        - Fixed CurrentLabel placement with transistor elements, now follows biasing current
        - Fixed CurrentLabel positioning for elements with no center anchor

    Other changes:
        - Deprecated positional direction parameter to Element class.
        - Add nonglobal rotation mode attribute to SegmentText


v0.16 - 25-Mar-2023

    - Added `canvas` parameter to Drawing and draw method, and deprecated `backend` parameter.
    - Removed `elements` argument from Drawing. Use Drawing.add_elements.
    - Added `Drawing.set_anchor` to define anchor points, useful for ElementDrawing instances.
    - Added shunt resistor symbol Rshunt
    - Fixed lead length of XOR gates to align with OR gates
    - Fixed greater and less than symbols in SVG backend
    - Fixed some anchor positions on flowchart symbols
    - Allow font parameter to be the path of a TTF file
    - Removed old deprecations
    - Replaced setup.py with setup.cfg


v0.15 - 20-Jun-2022

    - Added DSP elements Circulator, Isolator, VGA
    - Added ZLabel element for right-angle impedance arrow labels
    - Changed DSP anchor names from 'in' to 'input' to avoid conflict with 'in' keyword
    - Fixed styles with nested ElementDrawing elements
    - Fixed zorder of filled elements in Matplotlib backend
    - Added mathfont parameter to labels for specifying different font on math labels
    - Added padx and pady parameters to Encircle elements
    - Moved SVG backend configuration to svgconfig object and deprecated 'settextmode'.
    - Added 'visible' parameter to Segment objects 


v0.14 - 09-Jan-2022

    - Added context manager to Drawing class.
    - Added Wire element for quick 90-degree connections
    - Added Encircle, EncircleBox, and Annotate elements
    - Added Wheatstone, Rectifier, SparkGap elements
    - Added "2T" version of transistor elements for placement as as two-terminal elements
    - `tox` and `toy` methods automatically change drawing direction, removing need to specify `right()` and `tox()`, for example.
    - Added `istart` and `iend` anchors to 2-Terminal elements for defining inner start and end points before lead extensions
    - Added `dot` and `idot` methods to two-terminal elements
    - Added '-o' and '-\|' arrow types to draw dot or endcap instead of arrow at the end of lines
    - Added `leads` parameter to OpAmp for adding lead extensions
    - Added `lead` parameter to Grounds, Vss, and Vdd
    - Added optional `dx` and `dy` parameters to `to` and `at` methods for quick fine-tuning of placement
    - Added optional `length` parameter to `up`, `down`, `left`, and `right` on two-terminal elements
    - Improved placement of CurrentLabel arrows
    - Fix default label position on Vss element
    - Fix positioning of switch contact bubbles
    - Fix text rotation in svg backend and path mode
    - The `scale` method now maintains the length of two-terminal elements


v0.13 - 19-Dec-2021

    - Added Digital Timing Diagram elements
    - Added Table and Kmap elements
    - Added Arc2, Arc3, ArcN, ArcZ, ArcLoop elements, useful for state machine diagrams
    - Added drop method to Element class to specify where to leave the drawing position
    - Added move_from method to Drawing class to move relative to another element anchor
    - Added more anchors to all flowchart elements
    - Improved layout of flowchart elements. **May affect layout of some existing flowchart diagrams.**
    - Added SegmentBezier for creating elements with curves
    - Deprecated SegmentArrow in favor of Segment with arrow parameter


v0.12 - 05-Nov-2021

    - Fixed Arrow and LineDot element placement when placed with anchor
    - Fixed copy/pickle of Element class
    - Fixed importing * from schemdraw.elements


v0.11 - 10-Jul-2021

    - Fixed placing elements by anchor when anchors were defined using a tuple rather than Point
    - SVG backend adds option for SVG1.x format for better compatibility with SVG renderers
    - Restore compabitliiby with Python 3.7 via conditional import of typing_extensions.


v0.10 - 30-Apr-2021

    - Added options to place labels inside Mixer elements
    - Fixed arrowhead overshoot
    - Fixed get_imagedata function
    - Update pip install to include optional dependencies
    - Added ziamath optional dependency for rendering math in SVG backend
    - Added LoopArrow as superclass of LoopCurrent, for placing a loop anywhere


v0.9.1 - 30-Jan-2021

    - Fixed missing module in setup.py.


v0.9 - 30-Jan-2021

    - Added optional SVG backend for drawing directly to an SVG image
    - Implemented method-chaining "fluent" interface for building elements
    - Added `elements.style` method for setting U.S. or European/IEC resistor style
    - Added parameter for drawing schematic on existing matplotlib axis
    - Added string parser for creating logic diagrams from expressions like "A or B"
    - Fixed zooming of arc segments
    - Added type annotations
    - Added `Drawing.move` method for moving cursor by dx and dy.
    - Drawing class implements += operator, so elements can be added by `Drawing += Element()`
    - Removed dependency on Numpy
    - Added Drawing.interactive` to allow element-by-element drawing with Matplotlib's plt.ion().
    - Now requires Python 3.8+

    - New Elements:
        - CPE (Constant Phase Element)
        - Varactor
        - FuseIEEE
        - FuseIEC
        - SwitchRotary
        - SwitchReed
        - Jack
        - Plug
        - Ic555
        - IcDIP
        - SevenSegment
        - Outlet Elements
    
    - Deprecations:
        - `Element.add_label` is deprecated (use `Element.label`)
        - `Drawing.loopI` is deprecated (add a `LoopCurrent` element)
        - `Drawing.labelI` is deprecated (add a `CurrentLabel` element)
        - `Drawing.labelI_inline` is deprecated (add a `CurrentLabelInline` element)



v0.8 - 15-Aug-2020

    - Changed Header anchors to `pinN` for consistency with Ic.
    - Improved label placement with respect to anchor positions.
    - Prevent duplicate figures from showing in Jupyter Element representation
    - Improvements for headless server operation to prevent popup window
    - Added some undocumented features to documentation
    - Added `Drawing.get_imagedata` function for returning raw image bytes
    - Fixed pip installation issue with module capitalization. Must import lowercase `schemdraw`.


v0.7.1 - 26-Jun-2020

    - Bug fix: restore usage outside of Jupyter, so that Matplotlib window is shown when calling Drawing.draw().


v0.7 - 21-Jun-2020

    - Dropped support for Python 2. Now requires 3.7+.
    - Elements are now subclasses of Element. Previous (dict) element names are translated into
      new class names. Any user-defined elements will need to be converted to classes.
      The `group_elements` function is replaced with `ElementDrawing` class.      
    - Allow `fontsize` or `size` keyword arguments interchangeably in Drawing and add_label
    - Updated flow.Decision to use keyword arguments for labeling decision branches
    - The Ic element label offset parameter changed from `lblofst` to `lofst` 
      to avoid conflict with the main element label.
    - Direct access to Drawing.fig and Drawing.ax are no longer available. Instead, Drawing.draw()
      returns a schemdraw.Figure instance with fig and ax attributes.
    - Implemented Jupyter representation functions for both Drawing and Element classes.

    - New Elements:
        - Coax
        - Triax
        - SwitchDpst
        - SwitchDpdt
        - Relay
        - Optocoupler
        - Arrow
        - LineDot
        - Breaker
        - OrthoLines
        - RightLines
        - BusConnect
        - BusLine
        - Tag
        - Photoresistor
        - PhotoresistorBox
        - Thermistor
        - DiodeShockley
        - PotBox
        - RBoxVar
        - Solar
        - Neon
        - SourceSquare
        - AntennaLoop
        - AntennaLoop2
        - AudioJack
        - Tgate
        - Schmitt
        - SchmittNot
        - SchmittAnd
        - SchmittNand


v0.6.0, 11-Feb-2020

    - Refactored internals to allow more control over individual components of drawing.
      Should have no effect unless the user is accessing internal attributes of the Element object.
      This also adds the `segments` list to the Element object, which allows finer control over 
      individual bits of the drawing.
    - Updated add_label so that "top" labels should always appear on top, regardless of flip/reverse
    - Swapped the direction of current sources, so that a current source with direction "up" has the
      arrow pointing up.
    - Added "zorder" parameter in the element definition dictionary and `add` method
    - Added `elements.ic` and `elements.multiplexer` functions as replacements to `blackbox` and `mux`.
      These include more functionality such as adjusting indiviudal pin rotation, color, and inverter bubbles.
    - Labels can be placed relative to an anchor position using the `add_label` method. This could be
      useful, for example, in labeling pin numbers on a logic gate or opamp.
    - Added new anchors to OPAMPs for power supply and offset nulls.      
        
    - New Elements:
        - MIC
        - MOTOR

    - Documentation:
        - Upgraded documentation to Sphinx and moved to readthedocs.org at https://schemdraw.readthedocs.io/en/latest/.
        - Changed preferred import to `import SchemDraw.elements as elm`. Apparently some people still
          use import * with pylab; this suggestion will help avoid conflicts.        


v0.5.0, 21-Jul-2019
    - Added flowcharting symbol methods to SchemDraw.flow module
    - Added signal processing symbols to SchemDraw.dsp module
    - Implemented fill parameter on Drawing.add to fill shapes and closed paths with a solid color
    - New elements:
        - Fuse
        - CapacitorVar,
        - DiodeTunnel
        - Jfet
        - Diac
        - Triac
        - SCR


v0.4.0, 03-Nov-2018
    - Fixed drawing of NOT and related gates to property extend the path
    - Fixed arrow translation when grouping elements
    - Fixed sidelabels and plabels of blackbox when empty
    - Fixed arc drawing due to change in Matplotlib 2.2 on asymmetric partial arcs


v0.3.0, 03-Jul-2017
    - Added function for drawing multiplexers/demultiplexers
    - Updates to labelI() method to allow reversing arrow and changing length
    - Add CSS to documentation
    - New elements:
        - PHOTODIODE
        - NFET4
        - PFET4
        - VSS
        - VDD


v0.2.2, 06-Mar-2016
    - Documentation updates
    - New elements:
        - Transformer
        - Josephson Junction (JJ)


v0.2.1, 03-May-2015
    - Fixed anchor names when element overwrites base anchor, such as BJT_PNP.
    - Added showplot keyword to draw() for non-interactive mode.
    - Added 2-collector BJT.
    - Documentation: added gallery of schematics.


v0.2.0, 29-Apr-2015
    - Added default line width argument to drawing() class. Default width is now 1.5.
    - Converted documentation to use all vector-based images
    - Added XKCD-mode example
    - New elements: 
        - BATTERY
        - BAT_CELL
        - SPEAKER
        - BUTTON
        - BUTTON_NC
        - XTAL
        - MEMRISTOR,
        - SCHOTTKY
        - ZENER
        - LED2


v0.1.4, 30-Sep-2014
    - Add function to group several elements into one
    - Add blackbox() function to generate box elements with arbitrary inputs
    - Allow element definition to specify label alignment
    - Added linestyle to element kwargs and definition
    - New elements:
        - LED
        - OPAMP_NOSIGN
        - GAP_LABEL
        - ELLIPSIS


v0.1.3, 21-Sep-2014
    - Added logic gate elements
    - Added transparent and dpi options to save() function
    - Fixed issues with zooming and rotating elements with arcs
    - LaTeX typesetting uses sans-serif, regular fonts for consistency


v0.1.0, 25-Aug-2014
    - Initial Release
